Accept ACH Direct Debit payments using our APIs, and build your own payment form to have full control over the look and feel of your checkout page.
Requirements
Requirement | Description |
---|---|
Integration type | Make sure that you have built an API-only integration. |
Setup steps | Before you begin, add ACH Direct Debit in your test Customer Area. |
Build your payment form for ACH Direct Debit
When a shopper chooses to pay with ACH Direct Debit, collect the following payment details in your payment form:
Payment details | Example |
---|---|
Bank account number | The US bank account number from which the payment will be debited. Format: numeric. Minimum length: 4 Maximum length: 17 Example: 01234567890123 |
Bank routing number | The 9-digit ACH routing number of the account. Alert your shoppers that some banks have different routing numbers for different transfers. Shoppers should not provide their wire transfer routing number. Do not remove any leading zeros. Adyen performs validation to ensure the routing number is genuine. Example: 123456789 |
Bank account type | checking or savings |
Account owner's name | "John Smith" |
Account owner's address | A valid US address (optional field). |
We provide an ACH Direct Debit logo which you can use in your payment form. For more information, refer to Downloading logos.
You can also get the required fields from the /paymentMethods response as explained in our API-only integration guide. In your /paymentMethods request, specify:
countryCode
: USamount.currency
: USD
The required fields are included in the object with type
ach.
Bank account type
Customers can use both checking accounts and savings accounts to make ACH payments. If you do not provide the bankAccountType
in your payment request, this defaults to checking account. In cases where the account type defaulted to checking account while the customer provided the account number of a savings account, this mismatch will lead to a chargeback.
To avoid chargebacks, we recommend collecting the bank account type from the customer, and providing it in your payment request.
Make a payment
-
From your server, make a /payments request, specifying:
paymentMethod.type
: achpaymentMethod.bankAccountNumber
: the bank account number.paymentMethod.bankAccountType
: the type of bank account. Allowed values: checking, savings.paymentMethod.bankLocationId
: the ACH routing number of the account.paymentMethod.ownerName
: the name on the bank account.billingAddress
(Optional): the account owner's address information.
The following example shows a /payments request for an ACH Direct Debit payment.
-
In the /payments response, note the following:
resultCode
: Authorised. This means that the payment has been successfully received by Adyen. However, it may take up to 5 business days to know whether the payment was authorized by the bank. If the payment is successful, it will appear in the Settlement details report. If it fails, you may receive a chargeback.pspReference
: Our unique reference for the payment.
{ "pspReference":"881535534794261C", "resultCode":"Authorised" }
Present the payment result
Use the resultCode that you received in the /payments response to present the payment result to your shopper.
The resultCode
values you can receive for ACH Direct Debit are:
resultCode | Description | Action to take |
---|---|---|
Authorised | The payment has been successfully received by Adyen. It may take up to 5 business days to know whether the payment was authorized by the bank. If the payment is successful, it will appear in the Settlement Detail Report. If it fails, you will receive a CHARGEBACK notification. |
Inform the shopper that the payment was successful. |
Refused | The payment was refused. | Ask the shopper to try the payment again using a different payment method. |
Test and go live
You can test ACH Direct Debit payments as well as chargebacks.
Test the payment flow
Before making live ACH Direct Debit payments, use the following account details to test your integration.
ownerName |
bankAccountNumber |
bankLocationId (routing number) |
billingAddress (account owner's address) |
---|---|---|---|
Any name | Any correctly formatted account number. Example: 1234567890 |
011000138 or 121000358 | Any correctly formatted US address. |
Test the chargeback flow
You can test the chargeback flow by making test payments with an ownerName
value that consists of chargeback: followed by an ACH return reason code. For example, chargeback:R01. The other account details to use are the same as when testing payments.
For instructions, see Test a chargeback scenario.