ACH Returns
The ACH Network supports the ability to return ACH payments for a number of reasons. Commonly, returns are initiated because the payment can't be completed due to reasons like insufficient funds, account closure, or inaccurate account details.
In most instances, the Receiving Depository Financial Institution (RDFI) has 2 business days to issue a return. For certain scenarios, such as unauthorized transactions on consumer accounts, an extended window of up to 60 calendar days may be allowed to initiate a return. Once a return is received by the Originating Depository Financial Institution (ODFI), Treasury Prime is notified and will update the ACH object accordingly.
Example ACH Return Flow
This example outlines a common flow of events around the return of an ACH debit that was originated using the Treasury Prime API.
- Customer originates an ACH Debit on the Treasury Prime platform.
- ACH is received by the RDFI, but the corresponding account does not have sufficient funds to cover the transaction.
- RDFI issues and ACH return with return code
RO1
(Insufficient Funds). - The ODFI (in this case, the Treasury Prime partner bank) notifies Treasury Prime of the return.
- Treasury Prime then changes the ACH
status
toreturned
, and updates theerror
field to include the return reason code.- This can also be completed via the Update an ACH endpoint.
- The
ach.update
webhook fires to notify the customer that the ACH object has changed.
How to Identify ACH Returns
While hopefully rare, it is important to promptly identify ACH that you have originated through the API to inform the customer that their ACH payment has not been completed.
As mentioned above, when an ACH is returned by the RDFI, the status
of the corresponding ACH object will always be updated to returned
. Additionally, the error
field will be populated with the return code corresponding to the reason for the return.
Once these fields are updated, the ach.update
webhook will fire, notifying you of the change. You can then use this webhook to present a notification to the customer that the ACH they originated has not been completed and may require follow-up action.
Returned ACH payments can also be fetched in the API by filtering the /ach list endpoint by status
, allowing you to build internal or customer-facing views of returned ACH payments.
Example Request to List Returned ACH Objects
curl -u $API_KEY_ID:$API_KEY_VALUE {% api-endpoint /%}/ach?status=returned
How to Return an ACH
If you have an Originated ACH transfer that needs to be returned, leverage the Update an ACH endpoint to make the return. This feature will need to be enabled for your organization, if it is not enabled please contact our Support Team at [email protected] and include the transaction id
associated with the originated ACH, the reason the return is being requested, and any other relevant information about the request. Our team will aid you in the process of submitting the return request to the ODFI, and if approved, the ODFI will submit the return to the RDFI. A successful return will result in an additional transaction being posted to the user's account to reverse the original transaction.
Example Returned ACH
The below example demonstrates an ACH Debit which was returned from the RDFI with a return code of R01
(insufficient funds).
{
"description": "ACH DEBIT RETURN [ach_11hqstvbf3w5es][ppd][standard] Target",
"amount": "100.00",
"service": "standard",
"counterparty_id": "cp_11gsczk76tqj1p",
"bank_id": "bank_treasuryprime",
"account_id": "acct_11hq4m9aee67ye",
"addenda": [],
"org_id": "org_1evy4cx2km5",
"batch_key": null,
"effective_date": "2022-11-22",
"updated_at": "2022-11-22T16:00:13Z",
"status": "returned",
"id": "ach_11hqstvbf3w5es",
"error": "R01",
"sec_code": "ppd",
"scheduled_settlement": "2022-11-25T16:20:13Z",
"direction": "debit",
"created_at": "2022-11-22T15:31:55Z",
"userdata": null
}
Transactions for Returned ACH Payments
An ACH return will result in the reversal of any funds movement that occurred in response to the initial ACH being created. For ACH debits that usually result in a deposit, a corresponding withdrawal will be made. The opposite occurs for ACH credits, with a deposit being made to counteract the initial withdrawal. These updates to the account balance will ultimately result in the account.update
webhook firing.
Scenario 1: Returned ACH Debit Transactions
In the scenario shown below, an ACH debit is created in the amount of $20. This results in a $20 deposit
being applied to the originating account, and an immediate hold
being placed on those funds.
The RDFI then returns the ACH, at which point a $20 withdrawal
is made to reverse the original deposit. Finally, a hold_release
is posted to balance the account.
Order | Transaction Type | Amount |
---|---|---|
1 | deposit | 20 |
2 | hold | -20 |
3 | withdrawal | -20 |
4 | hold_release | 20 |
Scenario 2: Returned ACH Credit Transactions
In the scenario shown below, an ACH credit is created in the amount of $20. This results in a $20 withdrawal
being made from the originating account.
The RDFI then returns the ACH, at which point a $20 deposit
is made to the originating account to reverse the initial withdrawal.
Order | Transaction Type | Amount |
---|---|---|
1 | withdrawal | 20 |
2 | deposit | -20 |
Requesting to Return an Incoming ACH
If you have received an incoming ACH transfer that needs to be returned for reasons such as “Customer Advises Not Authorized, Improper, or Ineligible” (reason code R10), leverage the update Incoming ACH endpoint to make the return. This feature will need to be enabled for your organization, if it is not enabled please contact our Support Team at [email protected] and include the transaction id
associated with the incoming ACH, the reason the return is being requested, and any other relevant information about the request. Our team will aid you in the process of submitting the return request to the RDFI, and if approved, the RDFI will submit the return to the ODFI. A successful return will result in an additional transaction being posted to the user's account to reverse the original transaction.
ACH Return Codes
Below is the list of the most commonly encountered ACH return codes.
Code | Reason | Description |
---|---|---|
R01 | Insufficient funds | Available balances is not sufficient to cover the dollar amount of the debit entry. |
R02 | Account closed | A previously open account is now closed. |
R03 | No account or unable to locate account | The account number does not correspond to the individual identified in the entry or a valid account. |
R04 | Invalid account number structure | The account number fails the check digit validation or may contain an incorrect number of digits. |
R05 | Unauthorized debit to consumer account using a corporate SEC code | A ccd or ctx business debit entry was transmitted to a consumer account, and was not authorized by the recipient. |
R06 | Returned per ODFI's request | The ODFI has requested that the RDFI return the entry. |
R07 | Authorization revoked by customer | A receipient who previously authorized an entry has revoked authorization with the originator. |
R08 | Payment stopped | The recipient has placed a stop payment order on this debit Entry. |
R09 | Uncollected funds | A sufficient balance exists to satisfy the dollar value of the transaction, but the available balance is below the dollar value of the debit Entry. |
R10 | Customer advises Originator is Not Known to Receiver and/or Originator is Not Authorized by Receiver to Debit Receiver’s Account | The RDFI has been notified by the recipient that the recipient does not know the identity of the originator, has no relationship with the originator, or has not authorized the originator to debit their account. |
R11 | Customer Advises Entry Not in Accordance with the Terms of Authorization | The RDFI has been notified by the Receiver that the Originator and Receiver have a relationship and an authorization to debit exists, but there is an error or defect in the payment such that the entry does not conform to the terms of the authorization. |
R12 | Branch sold to another DFI | A financial institution received an Entry to an account that was sold to another financial institution maintained at a branch sold to another financial institution. |
R13 | Invalid ACH routing number | Entry contains an invalid ACH routing number. |
R14 | Representment payee deceased or unable to continue in that capacity | Representative payee is deceased or unable to continue in that capacity. The beneficiary is not deceased. |
R15 | Beneficiary of account holder deceased | Either the beneficiary or account holder is deceased. |
R16 | Account Frozen/Entry Returned Per OFAC Instruction | (1) Access to the account is restricted due to specific action taken by the RDFI or by legal action; or (2) OFAC has instructed the RDFI or Gateway to return the Entry. |
R17 | File record edit criteria/Entry with invalid account number initiated under questionable circumstances | (1) Field(s) cannot be processed by RDFI; or (2) the Entry contains an invalid DFI Account Number (account closed / no account / unable to locate account / invalid account number) and is believed by the RDFI to have been initiated under questionable circumstances. |
R18 | Improper effective entry date | (1) The Effective Entry Date for a credit Entry is more than two Banking Days after the processing date; or (2) the Effective Entry Date for a debit Entry is more than one Banking Day after the processing date. |
R19 | Amount field error | Improper formatting of the amount field, or the allowed amounts of the SEC code used does not match the dollar value of the entry. |
R20 | Non-transaction account | Policies or regulations (such as Regulation D) prohibit or limit activity to the receiving account based on its type. |
R21 | Invalid company identification | The company ID information is not valid. |
R22 | Invalid individual ID number | The recipient has indicated to the RDFI that the number with which the Originator was identified is not correct. |
R23 | Credit entry refused by receiver | Any credit entry that is refused by the recipient may be returned by the RDFI. |
R24 | Duplicate entry | RDFI has received what appears to be a duplicate entry. |
R25 | Addenda error | Improper formatting of the addenda record information. |
R26 | Mandatory field error | Erroneous data or missing data in a mandatory field. |
R27 | Trace number error | Original entry trace number is not valid for return entry; or addenda trace numbers do not correspond with entry detail record. |
R28 | Routing number check digit error | The check digit for a routing number is not valid. |
R29 | Corporate customer advises not authorized | RDFI has been notified by business account holder that a specific transaction is unauthorized. |
R30 | RDFI not participant in check truncation program | Financial institution not participating in automated check safekeeping application. |
R31 | Permissible return entry | The RDFI may return a CCD or CTX entry that the ODFI agrees to accept. |
R32 | RDFI nonsettlement | RDFI is not able to settle the entry. |
Updated 6 months ago