Search

Are you looking for test card numbers?

Would you like to contact support?

Payment-method icon

ACH Direct Debit Component

Add ACH Direct Debit to an existing Components integration.

Our ACH Direct Debit Component renders ACH Direct Debit in your payment form.

Before you begin

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

Before starting your ACH Direct Debit integration:

  1. Make sure that you have set up your back end implementation, and created an instance of AdyenCheckout.
  2. Add ACH Direct Debit in your test Customer Area.

Show ACH Direct Debit in your payment form

To present the ACH Direct Debit Component in your payment form:

  1. From your server, make a POST /paymentMethods request specifying:

    • countryCode: US
    • amount.currency: USD.

  2. Pass the full response from the /paymentMethods call as the paymentMethodsResponse object when creating an instance of the AdyenCheckout.

  3. Add the ACH Direct Debit Component:

    a. Create a DOM element for ACH Direct Debit, placing it where you want the form to be rendered:

    <div id="ach-container"></div>

    b. Create an instance of the ACH Direct Debit Component, and mount it.

    const achDirectDebit = checkout.create('ach').mount('#ach-container');

Make a payment

When the shopper selects to pay, the Component calls the onChange event, which contains a state.data.

  1. If state.isValid is true, collect the state.data and pass this to your server.

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

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

    Here is how you would make a payment request for 10 USD.

    curl https://checkout-test.adyen.com/v53/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 onChange}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.
    {
        "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.

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 Component 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