Understanding ACH returns

An ACH return is a type of payment and is the movement of funds from a merchant.

An ACH return is initiated when an ACH payin is rejected. It is the ACH payment equivalent of a card decline or chargeback. Administrative returns, where the ACH return is due to incorrect information or insufficient funds, are processed within 2-3 days. Disputes, similar to card chargebacks, can be processed up to 90 days after the payin is initiated.

Return codes

An ACH payin can be returned for a variety reasons, the most common include insufficient funds, incorrect account information, or if the customer asks their bank to place a stop payment on the transfer. A return code is provided with the ACH return to provide an explanation of why the ACH return was created.

Most common return codes

CODEDESCRIPTION
R01Insufficient Funds
R02Account Closed
R03No Bank Account/Unable to Locate Account
R04Invalid Account Number
R05Unauthorized Debit to Consumer Account Using Corporate SEC Code
R06Returned per ODFI's Request
R07Customer Revoked Authorization
R08Payment Stopped
R09Uncollected Funds
R10Originator not known and/or not authorized to Debit Receiver’s Account

Refunds on ACH payins

In order to prevent a refund from being initiated on an ACH payin that ultimately will result in an ACH return, Rainforest does not allow refunds on ACH payins for T+4 from processing time, where T equals the first banking day after processing and 4 equals the number of banking days until the payin is eligible for a refund. For example, an ACH payin processed on Monday would be eligible for a refund on Friday. This allows for the ACH return to be processed prior to the payin being available for a deposit for most of the common return reasons.

Money movement

When an ACH return is created, the ACH payin could be in the status of Succeeded or Processing depending on if it has been deposited to the merchant or not.

ACH payin and ACH return in separate deposits

When the payin has already been funded in a previous deposit, the payin stays in Succeeded and the ACH return will be deducted from the merchant's next deposit along with any return fees.

$100 payin is deposited in Deposit #1. The payin is later returned, and the $100 + $10 return fee is now owed by the merchant. $110 will be deducted from the merchant's next deposit.

$100 payin is deposited in Deposit #1. The payin is later returned, and the $100 + $10 return fee is now owed by the merchant. $110 will be deducted from the merchant's next deposit.

ACH payin and ACH return in the same deposit

When the payin is in a Processing status and is within the T+X deposit time frame and not currently available for a deposit, the payin will move to Succeeded when the ACH return is created. This means the merchant will never receive the funds for the payin, but will be billed for the fees associated to the ACH payin and the ACH return in the next deposit. See the Listen to webhooks section on how to know if this payment flow occurs.

$100 payin is returned before deposited. The merchant will be deducted the processing fees of $1.30 for the ACH payin and $10 for the ACH return.

$100 payin is returned before deposited. The merchant will be deducted the processing fees of $1.30 for the ACH payin and $10 for the ACH return.

Listen to webhooks

Listen to the ACH return webhooks to know when an ACH return has been created and receive more details.

ACH payin and ACH return in separate deposits

If the ACH payin has already been funded in a previous deposit, the only webhook received will be ach_return.created.

ACH payin and ACH return in the same deposit

If the ACH payin was in Processing status and has not been funded in a previous deposit, then two webhooks will fire:

  • ach_return.created
  • payin.succeeded

The payin.succeeded webhook will include the following indicators to let you know the payin was moved to Succeeded because of the ACH return.

  • has_ach_return boolean
  • ach_return object that includes the associated ACH return ID and other details regarding the return

Simulate an ACH return

You can simulate an ACH return on a payin in sandbox. The payin must be in the status of Processing or Succeeded in order to initiate a return. Once an ACH return has been created, you can simulate a merchant deposit to see how the return and fees will be deducted from a deposit.