Search...
Log inGet started
Airwallex logo
Home
Core API
Payments
Transactional FX
Payouts
Issuing
Back to home
OverviewChoose your payments solutionGet started with payments
Online payments
Invoice integrations
Payment methods
Payment Methods OverviewGlobal
EU & UK
APAC
NORTH AMERICA & LATAM
ACH Direct Debit - BETA
Desktop/Mobile Website Browser
Save bank details for future paymentsMicro-deposit verification
EFT Pre-Authorized Debit - BETA
SPEI - BETA

Desktop/Mobile Website Browser

This guide describes how to offer ACH Direct Debit as a payment method on your checkout page using Native API integration.

Step 1. Create a PaymentIntent

Create a PaymentIntent object with a request_id, amount, currency and a merchant_order_id from your backend server.

Example request:

Shell

Example response:

JSON

Step 2. Collect payment method details and mandate acknowledgement

You should display the exact authorization terms below for your customer on the checkout form. Only upon your customer’s authorization will you be able to initiate debits from your customer’s bank account.

By providing your bank account details and confirming this payment, you authorize Airwallex US, LLC to electronically debit your account via ACH for the total payment amount specified on this page, and, if necessary, electronically credit your account to correct erroneous debits. You certify that you are either the holder of, or an authorized signatory on, the bank account.

If you integrate through Hosted Payment Page (HPP) or Drop-in, Airwallex will display the authorisation terms for you.

When a shopper submits ACH Direct Debit on checkout form, you should use payment_intent.confirm to collect the mandate and complete the payment. For ACH Direct Debit, we support two verification methods: Plaid and micro-deposit. We will send below events to update you on the current status:

EVENTDESCRIPTIONNEXT STEPS
payment_consent.pending_verificationThe payment is undergoing verification.N/A. This status should remain short for Plaid verification but may take 1-2 days for micro-deposit verification.
payment_consent.verifiedThe customer's bank account has been successfully verified through Plaid or micro-deposits.If you have disabled the authorization emails sent from Airwallex, you should notify your customers with the mandate confirmation.

Option 1: Plaid verification

You can select the verification method by setting payment_method_options.ach_direct_debit.verification_method. You can provide owner_name, owner_email and whether it is business_account so that shopper will see these fields pre-filled on the confirmation page.

Example request

Example response

JSON

Example response

JSON

Option 2: Micro-deposit verification

You can also verify ACH Direct Debit with micro-deposits by providing the following payload.

Example request

Shell

When fraud scanning requires you to VERIFY the account, you will find the next actions in the response of Confirma a PaymentIntent API.

Example response

JSON

Airwallex will send a notification email to your shopper automatically to guide them on micro-deposits verification. If you want to customize the experience, please contact our Sales Support to turn off the Airwallex notification email and use the url returned in the response to build your own verification flow.

You can use instructions as below to guide your shoppers on checkout. Learn more about micro-deposit verification.

This account cannot be charged at the moment, please verify the account.

You will receive two micro-deposits to your account in 1-2 business days. You can click the verify button or verify through the email we have sent you.

Step 3: Send authorization email

Airwallex will send an authorization confirmation email on your behalf to shoppers. If you choose to turn off Airwallex notification email and send your own, you should use payment_intent.pending to trigger confirmation of each authorization to your shoppers. Please include below information either on downloadable copy on your website or through email.

The following is a sample mandate confirmation email that you can send:

AttributesSample
Authorization date25 Apr 2022
Account holder nameJohn Smith
Routing number123456789
Account number01234567890123
Debit amount$ 100
Schedule of future debits (if any)1st Aug
Contact informationcustomer_support@merchant.com

By providing your bank account details and confirming this payment, you authorize Airwallex US, LLC to electronically debit your account via ACH for the total payment amount specified on this page, and, if necessary, electronically credit your account to correct erroneous debits. You certify that you are either the holder of, or an authorized signatory on, the bank account.

Step 4. Wait for payment notifications from Airwallex

ACH Direct Debit provides delayed notifications, which means that the transaction cannot be authorized instantly (see ACH Direct Debit timing).

An ACH Direct Debit payment_intent remains pending after submission to the ACH network. The following events are sent when there is an update to payment_intent.

API flow

EVENTDESCRIPTIONNEXT STEPS
payment_intent.pending payment_attempt.pending_authorizationThe shopper’s payment was submitted to Airwallex successfully.Wait for the initiated payment to succeed or fail.
payment_intent.succeeded payment_attempt.capture_requestedThe customer’s payment has succeeded.Provision goods and services.
payment_intent.requires_payment_method payment_attempt.authorization_failedThe customer’s payment was declined.Contact the shopper and request another payment method.
payment_disputes.acceptedAny bank rejections or indemnity claims within the rejection window are treated as disputes by Airwallex. The amount of the dispute is deducted from your pending settlement amount. Please note that payment_intent remains succeeded.You cannot defend against ACH Direct Debit disputes. You must contact your customer to resolve the situation.

Succeeded payment intents can be disputed due to various reasons. You should familiarise yourself with the dispute risks of direct debits and contact your customers to resolve the situation. Learn more about disputes.

If the transaction fails after the request is sent to the bank, you can get the failed reason using payment_attempt.authorization_failed webhook.

JSON

You may also query the status of a payment anytime using Retrieve a PaymentIntent API

Shell

Test ACH Direct Debit

Use the following details to test ACH Direct Debit in the demo environment.

Account holder nameTest scenario
Alberta Bobbeth CharlesonFor successful Plaid verification
Any other nameFor failed Plaid verification
Account numberTest scenario
8454797888Verification required
8454797666No verification required
Verification amountsTest scenario
0.04, 0.04Verification failed, with remaining attempts to retry
1.04, 1.04Verification failed, no remaining attempts
Any other amountVerification succeeded
On this page