No momento, esta página não está disponível em português
Risk-team icon

ACH Direct Debit chargebacks

Learn about ACH returns and when you can retry an ACH Direct Debit payment.

ACH refers to chargebacks as returns. It is not possible to defend ACH returns. You have the following options:

Causes of ACH chargebacks

Because the ACH network is unable to provide real-time authorizations, an authorised payment can be reversed due to insufficient funds. Such chargebacks usually happen three to five days after the date of the direct debit payment. Also, the customer can initiate a chargeback up to 60 days from the payment date, after the funds have been settled to your account. This can happen when:

  • The customer did not formally agree to the charge, or revoked their agreement.
  • The charge is processed earlier than the agreed date.
  • The charge is not the same as the agreed amount.

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.

Reduce the chargeback risk

To reduce the risk of ACH returns, we recommend using an external service to validate the customer's account details on their first transaction. External services that we support:

ACH return flow

After an ACH Direct Debit payment is authorized, captured, and settled, the ACH return flow is as follows:

  1. Optional: Notification of Change
  2. Optional: Request for Permission to Return
  3. Optional: Information Supplied
  4. Notification of Chargeback
  5. Chargeback
  6. Retry

Optional: Notification of Change

If bank account details have changed, Adyen receives a Notification of Change and sends you an ach.notificationOfChange webhook. This happens, for example, if the customer's bank has been taken over by another bank. Usually there is a grace period when payments using the old account details are still accepted. But when the grace period ends, payments using the old account details are returned.

When banks inform us that account details have changed, we update the account details saved in our system as much as possible. If you make recurring payments, the existing shopperReference is updated with the new account details in many cases. However, you should still inspect the ach.notificationOfChange webhook to see if details are missing and you need ask the customer to update their account details in your system.

The following example illustrates the content of ach.notificationOfChange webhooks:

Optional: Request for Permission to Return

To verify the account holder, the issuing bank has asked for supporting documents. Adyen contacts you to provide those documents.
At this point, funds are not yet deducted from your account.

Optional: Information Supplied

Adyen has received your supporting documents and has shared them with the issuing bank.
At this point, funds are not yet deducted from your account.

Notification of Chargeback

The issuing bank or the customer has initiated an ACH return. You receive a NOTIFICATION_OF_CHARGEBACK webhook with the details. You cannot defend the return, but it may be allowed to retry the payment.

Chargeback

Your account is debited for the ACH return. You receive a CHARGEBACK webhook. You cannot defend the return, but it may be allowed to retry the payment.

Decide if you can retry the payment

To indicate the reason of the return, ACH provides a reason code that we return in the NOTIFICATION_OF_CHARGEBACK and CHARGEBACK webhooks, and in your Customer Area > Revenue & risk > Disputes. Depending on the reason code, you can retry the transaction or take some other action.

However, some transactions cannot possibly succeed, for example because the customer's account has been closed. If you repeatedly retry transactions that will never succeed, the National Automated Clearinghouse Association (Nacha) imposes fines, and we have to block you from sending any new ACH Direct Debit transactions.

Use the following table with the most common ACH return reason codes to determine if it is allowed to retry a returned ACH Direct Debit payment.

Reason code Reason Description / Resolution Retry?
R01 Insufficient funds You can retry the transaction up to two times within 30 days of the original authorization date. -white_check_mark- max 2x
R02 Account closed Retrying the transaction is not allowed. Initiate a new transaction using an external validation service. -x-
R03 No Account/Unable to locate account The provided account information is incorrect. Retrying the transaction is not allowed. Initiate a new transaction using an external validation service. -x-
R04 Invalid account number The provided account number is incorrect. Retrying the transaction is not allowed. Initiate a new transaction using an external validation service. -x-
R05 Unauthorized debit to consumer account A corporate transaction was charged to a consumer account and was disputed by the customer. Suspend any recurring payments and resolve the issue with the customer. If you are going to debit the same account for a new transaction, make sure the customer's bank stops blocking transactions from your company to this account. -x-
R06 Returned per ODFIs request Your bank asked the customer's bank to reverse the transaction. Retrying the transaction is not allowed. Contact your bank. -x-
R07 Authorization revoked by customer The customer informed their bank they revoked authorization for the transaction. Suspend any recurring transactions and resolve the issue with the customer. If you are going to debit the same account for a new transaction, make sure the customer's bank stops blocking transactions from your company to this account. -x-
R08 Payment stopped or stop payment on item The customer instructed their bank to not honor a payment they previously authorized. Resolve the issue with the customer. When initiating a new transaction (using an external validation service), get new proof of authorization from the customer. If you are going to debit the same account, make sure the customer's bank stops blocking transactions from your company to this account. -x-
R09 Uncollected funds Insufficient funds. You can retry the transaction up to two times within 30 days of the original authorization date. -white_check_mark- max 2x
R10 Customer Advises Originator is Not Known to Receiver and/or Originator is Not Authorized by Receiver to Debit Receiver’s Account The customer disputed the transaction. Retrying the transaction is not allowed. Resolve the issue with the customer. If you are going to debit the same account for a new transaction, make sure the customer's bank stops blocking transactions from your company to this account. -x-
R11 Customer Advises Entry Not in Accordance with the Terms of the Authorization The customer informed their bank that the payment is not in accordance with the authorization terms. Suspend any recurring transactions and resolve the issue with the customer. You can retry the transaction within 60 days of the original settlement date. -white_check_mark-
R12 Branch sold to another DFI The customer's account has migrated to another financial institution. Ask the customer to update their account details in your system. -white_check_mark-
R13 Invalid ACH routing number The provided routing number does not belong to any bank in the ACH network. Ask the customer for the correct routing number, or contact your bank if you are sure the number is correct. -white_check_mark-
R15 Beneficiary or account holder deceased Contact the bank of the deceased account holder or account beneficiary. -x-
R16 Account frozen Contact your customer to obtain a different form of payment. The bank account cannot be used while it is frozen. This return code should be a red flag for your business. If you see this code, do your due diligence around verifying the identity of your customer. -x-
R17 File record edit criteria The customer's bank had a technical problem with processing the ACH transaction. -white_check_mark-
R20 Non-transaction account The provided bank account cannot be used for ACH payments. Ask the customer for permission to charge a different, ACH-enabled bank account. -x-
R29 Corporate customer advises not authorized The company you tried to charge has disputed the transaction. Retrying the transaction is not allowed. Resolve the issue with the other company. If you are going to debit the same account for a new transaction, make sure the other company's bank stops blocking transactions from your company to this account. It is possible the issue is resolved if the other company adds the Adyen ACH Company ID for payments to the allowlist of their business account. -x-
R31 Permissible return entry The business account holder or their bank has asked to reverse the transaction. Contact your bank for more information. Contact the customer to resolve the issue. -x-
R51 Item is ineligible, notice not provided, signature not genuine To determine what to do, you need to find out the underlying reason why the payment was returned. Contact Adyen if you need help. -x-

Test a chargeback scenario

You can try out the ACH return flow by sending an ACH Direct Debit test payment. The ownerName in the test payment indicates the chargeback scenario that you want to test.

Note that in the test environment the return flow goes directly to the Chargeback stage. The optional stages and the Notification of Chargeback stage are skipped.

To test a chargeback:

  1. Send an ACH Direct Debit payment request using the following account details.

    Parameter Description
    ownerName chargeback:REASON_CODE. For example, chargeback:R01
    bankAccountNumber Any correctly formatted account number. For example, 1234567890
    bankLocationId The routing number. Use 011000138 or 121000358
    billingAddress The account owner's address. Use any correctly formatted US address.
  2. Note that the request succeeds with resultCode: Authorised.
    The ACH return flow starts after the test payment is captured and settled.

  3. Wait for the CHARGEBACK webhook and check your Customer Area > Revenue & risk > Disputes.
    The webhook and your Customer Area show a chargeback with the return reason code that you specified in the payment request.

See also