Search

Are you looking for test card numbers?

Would you like to contact support?

Payment-method icon

ACH Direct Debit Drop-in integration

Add ACH Direct Debit to an existing Drop-in integration.

Our Web Drop-in renders ACH Direct Debit in your payment form.

Before you begin

This page explains how to add ACH Direct Debit to your existing Web Drop-in integration. The Web Drop-in integration works the same way for all payment methods. If you haven't done this integration yet, refer to our Drop-in integration guide.

Before starting your ACH Direct Debit integration:

  1. Make sure that you have set up your back end implementation, and added Drop-in to your payments form.
  2. Add ACH Direct Debit in your test Customer Area.

Show ACH Direct Debit in your payment form

Drop-in uses the countryCode and the amount.currency from your /paymentMethods request to show the available payment methods to your shopper.

To show ACH Direct Debit in your payment form, you need to specify in your /paymentMethods request the following combination of countryCode and amount.currency:

Country countryCode currency
United States US USD

Make a payment

When the shopper selects the Pay button, Drop-in calls the onSubmit event, which contains a state.data.

  1. Pass the state.data containing the shopper details to your server.

  2. From your server, make a /payments request, specifying:

    • paymentMethod: The state.data.paymentMethod from the onSubmit event from your front end.

    The following code sample is a /payments request for an ACH Direct Debit payment.

    curl https://checkout-test.adyen.com/v52/payments \
    -H "x-API-key: YOUR_X-API-KEY" \
    -H "content-type: application/json" \
    -d '{
       "merchantAccount":"YOUR_MERCHANT_ACCOUNT",
       "amount":{
          "currency":"USD",
          "value":"1000"
       },
       "reference":"YOUR_ORDER_NUMBER",
       "{hint:state.data.paymentMethod from onSubmit}paymentMethod{/hint}":{
          "type":"ach",
          "encryptedBankAccountNumber": "adyenjs_0_1_25$GTE/ytzAupIEbFEybScAA/T3W8+Xj3ZWj3CIl5IeIdMfkNd8rRnH0T/YfmR9rU3pLsZDEoIg8SLGLTdehuYFf9Oxl7FO+Fqi7uFBJpDyJm0BE8IFN330k+01UNRObpLjbJSUr0a7ylZoZxEBrw7Sj2PDEIIxfnHF8mVuxanDUoD7t91MB1VKe/p5vwE2YylLzkuCbmM5RXv5Ahd05eF+zL39B8+TUpuK+gShwCJH0Ay+hnF6FavpcLRvmD4YYL4glBTqiEta+vsO6R9EDejDRlDTOqDAZ4P5gleU1ALEkWzwcN+GNCk0K0LQVNkPCsMUTLIeor+n95t3zuUC+5kTAw==$a7K23S61C2maU8SUH6w/XzZbNYoXF/ndSLd3JyLS51EqXCEx8JGOzFjp52uIKCyHPxxr9zquWSqdiC8GQsXl1mth2AOS97Xcwu1pf+pYO3NGCPsTzQNKoXcd5yyyb+1SYdiiPsPSdSNhb1CT9O2rvfWRqSBUSikgyhoYkUg/o8KPI8hKVvpdUf5EEZoctKPr5CU7mXFp+pD8M2FzDP8dr6KYgGprtytWjPxXYtUw7T+uNJfbuIvAuKDsFPK0UrkYcDyW43QHZwtualg/YRDXnIzeIdY/I5s13zGsWUGWVuOFFZEANhnJCtyLbQCVYzqs6t9ziAARMXyb/ZhUR+/R2gAkIP7dGQZFUyCzyCHyCSExbUv/VEHSIVTR8NVUx+inHfLMtsS3cplRwCeKJ4ThQR228F8KPEaZlu7FOCUmZxQcDyYUrcTa70ddJkNEt0NsjOMUDaNPSaURUnCkFwsY83FUY/rql74p8ZFF",
          "encryptedBankLocationId": "adyenjs_0_1_25$UbyYyi7693Ya9e3cZNYOJj//l7bxQMMYChWRpLmzhx+WU21kI0RGOTrf26YSeGZBPY04D0vYohMLJfXkBrvIHFthOtat7ZPvQgXCpXfao3KuKogDMM6KoAVpH7wtp7D6wZfUR7uP38ARbqyl4Ztn7ymPJ3OcCl6CxqMn05ixtcLv418XvNTM+P/67TLhQbdhy9OYUnh2Ja2+xueXZJRSTaUn/ILtMQs81hp8XTwMF7aoQJ6cd4cxfkmZ/jU57DE0YFrTtEsvsGJIcgF70vY5yXj2ODpLnnMHr3Fwd8pne0j/zzd/IT/+UDXOQoZvzDWpmO7tNW6rcVLCEtBijnqUCw==$9COJh5qZrOHnhmPXv9z07sDKu3DCFe5iyxBwy/rtDhBL7pZFpsmpxtCfFhFqjfd/A2iwMFQ8WqOaHQhzKGYswlauH33WbcNVUmw+B+SvHSJIWxJOkPbWv5zCX5KIATnIRGmi9c/vNNRI2TBbxML8P89245lyc2c7mIXZC/xCbpVXu0fRZCEWEo2PM43HNBwYZNQ/QTf285lMFNHhIEJUJnfMElHp1nV/pcdo2zw8zwKsAXn/BiTaT341SQcmm4JtcXvFEcetCPEElN9yemcwtCt1qzPUSZuM5+q5A/s+M4edH6lyjKKUqrqxps39EJxzam0NISJIszlhPKib0ML/lG7yiJU6EDBOflntKBBt490A0igN2GyK4HbxjonvlDMTgpHwkLLU5cf3zg3lfHFHyxTpsq5sLuwXuJcDaDK3TSl8/jjkmCcHXWJLdK5UaqRjg1QZ4EQadTiP/iPjEIrj4mKZJMXyw2gB/dDDN0egEy6pQmt9pzlgRNQ=",
          "ownerName": "John"
       },
       "billingAddress":{
          "houseNumberOrName":"50",
          "street":"Test Street",
          "city":"Amsterdam",
          "stateOrProvince":"NY",
          "postalCode":"12010",
          "country":"US"
       }
    }'

    The /payments response contains:

    • 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 will receive a CHARGEBACK notification.
    • pspReference: Our unique reference for the payment.
    /payments response
    {
        "pspReference":"881535534794261C",
        "resultCode":"Authorised"
    }
  3. Pass the action object to your front end.

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.

Chargebacks

ACH Direct Debit payments can fail when:

  • There was a problem with settlement, for example because the account had insufficient funds, had been closed, or the account number was invalid.
  • The shopper asked their bank for a refund. This is referred to as a chargeback. Shoppers can reverse an ACH payment up to 60 days after settlement for one of the following reasons:
    • They did not formally agree to the charge, or revoked such an agreement.
    • The charge is processed on a date earlier than agreed.
    • The amount of the charge is different than agreed.
    This is different from credit card transactions, where a customer can initiate a chargeback by claiming that a product or service was not what they expected.
    You cannot defend against ACH Direct Debit chargebacks. These will always result in the payment being reversed.
    For more information on the chargeback process, refer to Dispute management.

If a payment fails, you will receive a CHARGEBACK notification, and your Settlement details report will show a credit and a corresponding debit.

CHARGEBACK notification
{
  "live": "false",
  "notificationItems": [
    {
      "NotificationRequestItem": {
        "additionalData": {
          "modificationMerchantReferences": ""
        },
        "amount": {
          "currency": "USD",
          "value": 1000
        },
        "eventCode": "CHARGEBACK",
        "eventDate": "2019-03-20T15:40:27+01:00",
        "merchantAccountCode": "YourMerchantAccount",
        "merchantReference": "YourMerchantReference",
        "originalReference": "161552590902659C",
        "paymentMethod": "ach",
        "pspReference": "181552594831625C",
        "reason": "Chargeback",
        "success": "true"
      }
    }
  ]
}

Test and go live

Before making live ACH Direct Debit payments, use the following account details in your Drop-in to test your integration.

Account Owner's Name Bank account number Bank routing number Account Owner's Address
Any name Any correctly formatted account number. Example: 123456789 011000138 or 121000358 Any correctly formatted US address.

See also