ACME Payments Fraud Shield Javascript SDK

Modified on Wed, 14 Feb 2024 at 08:04 PM

ACME Fraud Shield is your key defense against bad actors when it comes to protecting your ticketing and events-based business from fraud. ACME Payments utilizes best-in-class technology and decisions on over 150 data signals in real-time to ensure that your customers have a safe and easy checkout experience. Shift your transactional risk liability and protect your online transactions today.

ACME Seller account required for API key access — get started today at


NOTE: If you're migrating some of your merchants over from our previous library @acmeticketing/payment-sdk you should review our migration steps.

We've included a test page HTML template to get you started.

ES Module

  • Intended for use with modern bundlers like webpack.
  • This is the recommended approach and will provide the best developer experience.
npm install @acmepayments/fraud-shield


UMD builds can be used directly in the browser via a <script> tag. Manually add the index.umd.js script tag to the <head> of your site.

<!-- Somewhere in your site's <head> -->
<script src="" async></script>

Usage (ES Module)

All of the examples also apply to the UMD version but instead of importing our library as an ES Module it will be available under the global ACME object.

const acmeFraudShield = window.ACME.ACMEFraudShield.create({
  mid: 'your_mid', // Use your provided merchant identification number (MID)
  publishableKey: 'your_publishable_key', // Use your provided publishable

Handle Decisioning Data Session

Required data fields to properly decision. Insufficient data may cause improper consumer identification or cause unnecessary friction in the transaction, forcing the user to return and retry.

import { ACMEFraudShield } from '@acmepayments/fraud-shield';

const acmeFraudShield = ACMEFraudShield.create({
  mid: 'your_mid',
  publishableKey: 'your_publishable_key',

try {
  const result = await acmeFraudShield.handle3DSSession({
    amount: '',
    currencyCode: '840', // ISO 4217 numeric
    externalId: '',
    billingAddress1: '',
    billingAddress2: '',
    billingCity: '',
    billingState: '',
    billingCountryCode: '', // ISO 3166-1 numeric
    billingFirstName: '',
    billingLastName: '',
    billingPostalCode: '',
    billingPhone: '',
    cardExpMonth: '',
    cardExpYear: '',
    cardNumber: '',
    email: '',

    // This allows you to pass a custom container for the stepup iframe, it will default to `document.body`
    // container: {
    //   selector: () => document.querySelector('...')
    // }
} catch (error) {
  // handle error

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select atleast one of the reasons

Feedback sent

We appreciate your effort and will try to fix the article