# ACH returns & exception handling

> How Moov handles ACH returns before and after the clearing period, what each return code means, and which bank account status and action follows.

> AI agents: search and read all Moov docs with the docs MCP server at https://docs.moov.io/mcp (no API key). Setup: https://docs.moov.io/guides/developer-tools/mcp-ai/docs-mcp/index.md

An ACH return reverses a debit or credit after it was sent, for reasons such as insufficient funds or a closed account. Moov processes returns automatically and reflects the result in the transfer status and the affected Moov wallet.

Returns usually arrive within two banking days, but unauthorized-debit returns can come up to 60 days after settlement. Watch for them with the `transfer.updated` webhook and the `achDetails.return` object on the transfer (see [ACH details](/guides/money-movement/ach/ach-details/index.md#read-ach-details-on-a-transfer)).

## How a return changes the transfer

| What was returned | When                                                         | Transfer `status` | Wallet effect with `ach-debit-fund`        | Wallet effect with `ach-debit-collect`          |
|-------------------|--------------------------------------------------------------|-------------------|--------------------------------------------|-------------------------------------------------|
| The debit         | During clearing (source `achDetails.status` is `originated`) | `failed`          | None                                       | None                                            |
| The debit         | After clearing (source `achDetails.status` is `completed`)   | `reversed`        | Amount deducted from the **source** wallet | Amount deducted from the **destination** wallet |
| The credit        | After the debit completed (both legs `completed`)            | `reversed`        | Amount credited to the **source** wallet   | Amount credited to the **destination** wallet   |

If a debit is reversed after funds were already moved out, the wallet can go negative. See [avoid a negative balance](/guides/wallets/balance/index.md#avoid-a-negative-balance).

## Return codes and required actions

Some returns change the bank account's status, and you must act before you can use it again:

- `errored`: You will need to add a new bank account (or [contact Moov](https://support.moov.io/)). For `R29` returns, approved accounts can [reset the bank account](/guides/money-movement/ach/r29/index.md) by attesting reauthorization.
- `verificationFailed`: You will need to reverify (typically, reinitiate verification)

You can always retry verification after `verificationFailed`, but not after `errored`.

> **Note:** Required actions differ between returns received on ACH transfers and ACH verification. Use the tabs to see both sets of return codes and their corresponding action.

**ACH transfers**

| Return code | Description                                                                                                                                                                                                                                                       | Status: action                                                                                       |
|-------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|
| `R01`       | **Insufficient funds**: The account has insufficient funds to complete the transaction                                                                                                                                                                            | No action needed                                                                                     |
| `R02`       | **Account closed**: Previously active account has been closed by customer, or RDFI                                                                                                                                                                                | `errored`: Add new account                                                                           |
| `R03`       | **No account located**: Account number structure is valid and passes editing process, but does not correspond to an individual, or is not an open account                                                                                                         | `errored`: Add new account                                                                           |
| `R04`       | **Invalid account number**: Account number structure not valid. Entry may fail check digit validation, or may contain an incorrect number of digits.                                                                                                              | `errored`: Add new account                                                                           |
| `R05`       | **Improper debit**: A CCD, CTX, or CBR debit entry was transmitted to a consumer account of the receiver, but was not authorized by the receiver                                                                                                                  | `verificationFailed`: Reverify                                                                       |
| `R06`       | **Originator requested return**: The ODFI has requested the RDFI to return an erroneous entry, or a credit entry, originated without the authorization on of the originator                                                                                       | `errored`: Add new account                                                                           |
| `R07`       | **Authorization revoked by customer**: Consumer, who previously authorized ACH payment, has revoked authorization from originator (must be returned no later than 60 days from settlement date, and customer must sign affidavit)                                 | `errored`: Add a new account                                                                         |
| `R08`       | **Payment stopped**: Receiver of a recurring debit transaction has stopped payment to a specific ACH debit. RDFI should verify the receiver’s intent when a request for stop payment is made to ensure this is not intended to be a revocation of authorization.  | `verificationFailed`: Reverify                                                                       |
| `R09`       | **Uncollected funds**: A sufficient ledger balance exists to satisfy the dollar value of the transaction, but the available balance is below the dollar value of the debit entry                                                                                  | No action needed                                                                                     |
| `R10`       | **Originator unknown or unauthorized**: The receiver does not know the originator’s identity and/or has not authorized the originator to debit. Alternatively, for ARC, BOC, and POP entries, the signature is not authentic or authorized.                       | `errored`: Add new account                                                                           |
| `R11`       | **Entry unauthorized**: Customer has authorized a debit for a specific amount and/or on a certain day of the month, however, the originator has changed the original terms of the authorization. Customer can send the entry back because the terms have changed. | `verificationFailed`: Reverify                                                                       |
| `R14`       | **Payee unable to authorize**: The representative payee authorized to accept entries on behalf of a beneficiary is either deceased, or unable to continue in that capacity                                                                                        | `errored`: Add new account                                                                           |
| `R16`       | **Bank account frozen**: Funds in bank account are unavailable due to action by the RDFI, or legal order                                                                                                                                                          | `errored`: Add a new account, do not attempt to re-submit with the same account                      |
| `R17`       | **Receiving bank rejected payment**: (1) Fields cannot be processed by the RDFI; or (2) The entry contains an invalid DFI account number and is believed by the RDFI to have been initiated under questionable circumstances                                      | `verificationFailed`: Reverify                                                                       |
| `R20`       | **Non-payment bank account**: Entry destined for non-payment bank account defined by Regulation D                                                                                                                                                                 | `errored`: Add new account                                                                           |
| `R23`       | **Receiver refused payment**: Customer refuses transaction because amount is inaccurate, results in overpayment, account is in litigation, or originator is not known to receiver                                                                                 | `verificationFailed`: Reverify                                                                       |
| `R29`       | **Originator unauthorized**: The RDFI has been notified by corporate receiver that debit entry of originator is not authorized                                                                                                                                    | `errored`: Add new account (approved accounts can [self-serve R29](/guides/money-movement/ach/r29/index.md)) |
| `R31`       | **Permissible return entry**: The ODFI agrees to accept a return after the 24-hour deadline of a corporate entry reported unauthorized                                                                                                                            | No action needed                                                                                     |

**ACH verification**

| Return code | Description                                                                                                                                                                                                                                                       | Status: action                                                                                           |
|-------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
| `R01`       | **Insufficient funds**: The account has insufficient funds to complete the transaction                                                                                                                                                                            | No action needed                                                                                         |
| `R02`       | **Account closed**: Previously active account has been closed by customer, or RDFI                                                                                                                                                                                | `errored`: Add new account                                                                               |
| `R03`       | **No account located**: Account number structure is valid and passes editing process, but does not correspond to an individual, or is not an open account                                                                                                         | `errored`: Add new account                                                                               |
| `R04`       | **Invalid account number**: Account number structure not valid. Entry may fail check digit validation, or may contain an incorrect number of digits.                                                                                                              | `errored`: Add new account                                                                               |
| `R05`       | **Improper debit**: A CCD, CTX, or CBR debit entry was transmitted to a consumer account of the receiver, but was not authorized by the receiver                                                                                                                  | `verificationFailed`: Reverify                                                                           |
| `R06`       | **Originator requested return**: The ODFI has requested the RDFI to return an erroneous entry, or a credit entry, originated without the authorization on of the originator                                                                                       | `verificationFailed`: Reverify                                                                           |
| `R07`       | **Authorization revoked by customer**: Consumer, who previously authorized ACH payment, has revoked authorization from originator (must be returned no later than 60 days from settlement date, and customer must sign affidavit)                                 | `verificationFailed`: Reverify                                                                           |
| `R08`       | **Payment stopped**: Receiver of a recurring debit transaction has stopped payment to a specific ACH debit. RDFI should verify the receiver’s intent when a request for stop payment is made to ensure this is not intended to be a revocation of authorization.  | `verificationFailed`: Reverify                                                                           |
| `R09`       | **Uncollected funds**: A sufficient ledger balance exists to satisfy the dollar value of the transaction, but the available balance is below the dollar value of the debit entry                                                                                  | No action needed                                                                                         |
| `R10`       | **Originator unknown or unauthorized**: The receiver does not know the originator’s identity and/or has not authorized the originator to debit. Alternatively, for ARC, BOC, and POP entries, the signature is not authentic or authorized.                       | `verificationFailed`: Reverify                                                                           |
| `R11`       | **Entry unauthorized**: Customer has authorized a debit for a specific amount and/or on a certain day of the month, however, the originator has changed the original terms of the authorization. Customer can send the entry back because the terms have changed. | `verificationFailed`: Reverify                                                                           |
| `R14`       | **Payee unable to authorize**: The representative payee authorized to accept entries on behalf of a beneficiary is either deceased, or unable to continue in that capacity                                                                                        | `verificationFailed`: Reverify                                                                           |
| `R16`       | **Bank account frozen**: Funds in bank account are unavailable due to action by the RDFI, or legal order                                                                                                                                                          | `errored`: Add a new account, do not attempt to re-submit with the same account                          |
| `R17`       | **Receiving bank rejected payment**: (1) Fields cannot be processed by the RDFI; or (2) The entry contains an invalid DFI account number and is believed by the RDFI to have been initiated under questionable circumstances                                      | `verificationFailed`: Reverify                                                                           |
| `R20`       | **Non-payment bank account**: Entry destined for non-payment bank account defined by Regulation D                                                                                                                                                                 | `verificationFailed`: Reverify                                                                           |
| `R23`       | **Receiver refused payment**: Customer refuses transaction because amount is inaccurate, results in overpayment, account is in litigation, or originator is not known to receiver                                                                                 | `verificationFailed`: Reverify                                                                           |
| `R29`       | **Originator unauthorized**: The RDFI has been notified by corporate receiver that debit entry of originator is not authorized                                                                                                                                    | `verificationFailed`: Reverify (approved accounts can [self-serve R29](/guides/money-movement/ach/r29/index.md)) |
| `R31`       | **Permissible return entry**: The ODFI agrees to accept a return after the 24-hour deadline of a corporate entry reported unauthorized                                                                                                                            | No action needed                                                                                         |

If you are unable to resolve your error, [contact Moov](https://support.moov.io/).

