ACH Return Codes: Full R01 to R85 List and What Each Means
Jul 19, 2026
Convert your bank statement to Excel now
PDF, JPG, PNG, BMP, HEIC, TIFF, MT940
Upload your bank statement
Drop file here or click to upload
PDF, JPG, PNG, BMP, HEIC, TIFF, MT940
Uploading...
Last updated July 2026.
An ACH return code is a three-character code (the letter R followed by two digits) that the receiving bank sends back to explain why an ACH debit or credit could not be posted. R01 means insufficient funds. R02 means the account is closed. R10 means the customer says they never authorized the payment. Every returned ACH entry carries exactly one of these codes, and the code decides both your next step and how long the other side had to send the return.
If you originate ACH payments (payroll, vendor payments, customer debits) you will see returns, and you have to reconcile each one against your bank statement so your cash balance stays right. This guide lists the codes you actually run into, explains the two return windows that matter, and shows how to tie returns back to the original entries once you have the statement in a spreadsheet.
What is an ACH return code?
An ACH return code is the reason the Receiving Depository Financial Institution (RDFI, the receiver's bank) gives when it sends a payment back to the Originating Depository Financial Institution (ODFI, your bank) instead of posting it. NACHA, the body that runs the ACH network, defines the full set of codes so every bank uses the same language. When a return hits your account, it shows up as a reversing entry on your statement, and the addenda record on the returned item carries the R code.
The code is not just paperwork. It tells you whether the problem is temporary (R01 insufficient funds, which you can retry) or permanent (R02 account closed, which you cannot), and whether you are looking at an administrative return or a customer dispute that can carry a chargeback. Reading the code correctly is the difference between recovering the payment and eating a fee.
The most common ACH return codes (the ones you will actually see)
Roughly a dozen codes account for the vast majority of real-world returns. These are the ones worth memorizing. The table lists the code, its official name, what it means, and the practical next step.
| Code | Name | What it means | What to do |
|---|---|---|---|
| R01 | Insufficient Funds | The account did not have enough money to cover the debit. | Retry (up to 2 more times within 180 days) or contact the customer. |
| R02 | Account Closed | The account has been closed. | Do not retry. Get new account details. |
| R03 | No Account / Unable to Locate | The account number and name do not match a valid open account. | Do not retry. Reverify the account and routing numbers. |
| R04 | Invalid Account Number Structure | The account number fails the format or check-digit test. | Fix the account number and re-originate. |
| R05 | Unauthorized Debit to Consumer Account | A consumer account was debited using a corporate (CCD/CTX) code without authorization. | Do not retry. Treat as unauthorized. |
| R07 | Authorization Revoked | The consumer withdrew the authorization you previously had. | Stop debiting. Keep the revocation on file. |
| R08 | Payment Stopped | The account holder placed a stop payment on the entry. | Contact the customer before retrying. |
| R09 | Uncollected Funds | The balance exists but is not yet available (holds/pending). | Retry after funds settle. |
| R10 | Customer Advises Not Authorized | The consumer states the debit was not authorized. | Do not retry. Provide proof of authorization if you have it. |
| R11 | Customer Advises Entry Not in Accordance with Terms | Authorization existed but the entry broke its terms (wrong amount or date). | Correct the error and, with a new authorization, re-originate. |
| R16 | Account Frozen / OFAC | The account is frozen or blocked by legal or compliance action. | Do not retry. Escalate. |
| R20 | Non-Transaction Account | The account type does not permit ACH entries. | Get a different account. |
| R23 | Credit Entry Refused by Receiver | The receiver refused an incoming credit (often wrong amount). | Confirm the correct amount and re-send. |
| R24 | Duplicate Entry | The same entry was already processed. | Do not re-send. Confirm which posted. |
| R29 | Corporate Customer Advises Not Authorized | A business account holder says the debit was not authorized (often an ACH block). | Do not retry. Set up the correct company ID with the customer. |
The two return windows: 2 banking days vs 60 calendar days
Most ACH returns must come back within two banking days of the settlement date. That covers the operational codes: R01 insufficient funds, R02 account closed, R03 no account, R04 bad account number, and the rest of the administrative set. If a return does not arrive in that window, the entry is generally considered good.
Unauthorized consumer disputes get a much longer window. Under NACHA rules a consumer has up to 60 calendar days from the statement date to claim a debit was unauthorized, which produces R05, R07, or R10. That is why a customer can dispute a debit weeks after it posts. Corporate accounts do not get the 60-day window: a business dispute (R29) still has to come back in two banking days, because businesses are expected to monitor their accounts and can use ACH blocks and filters.
This split matters for cash planning. An R01 you can usually retry and recover. An R10 nearly two months later is effectively a chargeback, and you should treat that receivable as at risk. When a customer payment bounces back, the cleanest recovery path is to re-invoice and follow up promptly, which is exactly what automated receivables follow-up handles so a returned debit does not quietly become a write-off.
Administrative returns, NOCs, and dishonored returns
Not every message in the return stream is a hard failure. A Notification of Change (NOC), carried on codes in the C-series (C01 through C13, such as C01 incorrect account number or C02 incorrect routing number), is not a return at all: it is the receiving bank telling you to correct the account details on future entries. Post the change and the next payment goes through.
There is also a second layer of return codes in the R60 to R85 range. These are dishonored returns and contested dishonored returns, used bank-to-bank when one institution disputes another's return (for example R61, misrouted return, or R69, field errors). You rarely act on these as an originator; your bank handles them. The codes you own as a business are the R01 to R33 operational and unauthorized set above.
How to reconcile ACH returns against your bank statement
Returns land on your statement as reversing entries, often days after the original payment, and the bank's descriptions are terse. To reconcile cleanly, get the statement into rows first. Convert the PDF or the raw ACH file to a spreadsheet so every entry, including the returns, sits in dated columns with the amount, description, and any trace or R code preserved. From there you can filter to the returns, match each one back to the original entry by amount and trace number, and confirm your cash balance ties out.
The mechanics are the same whether you start from a statement PDF or a NACHA file. Our guide on how to open a NACHA ACH file in Excel or convert it to CSV walks through the record types and field positions, and the bank statement converter turns a statement PDF into the same structured rows. Once the returns are in a sheet, tag them with transaction categorization so a returned debit does not get counted as real income, and pair the numbers with the original invoices to see which receivables still need collecting.
A simple reconciliation checklist:
- Filter the converted statement to reversing/return entries.
- Match each return to its original entry by trace number and amount.
- Record the R code so you know whether to retry (R01, R09) or stop (R02, R10).
- Flag unauthorized returns (R05, R07, R10, R29) for dispute handling.
- Confirm the net of originals minus returns matches your posted balance.
How to lower your ACH return rate
NACHA enforces return-rate thresholds, and staying under them keeps your originating privileges. Validate account and routing numbers before the first debit (an R04 or R03 is avoidable). Honor NOCs promptly so corrected details flow through. Keep clear authorizations on file so an R10 or R29 dispute is easy to answer. Retry insufficient-funds returns sensibly (NACHA allows up to two retries after the original, three attempts total) rather than hammering the account. And reconcile every month so a rising return rate shows up early instead of in a warning letter from your bank.
Key points
- An ACH return code (R01 to R85) is the reason an ACH entry failed; the code sets your next step and the return window.
- Most returns come back within 2 banking days; unauthorized consumer disputes (R05, R07, R10) get 60 calendar days, but corporate disputes (R29) do not.
- R01 and R09 are often recoverable with a retry; R02, R03, R10, and R29 are not, so stop and fix the underlying issue.
- Convert the statement or NACHA file to a spreadsheet to match returns to their original entries and keep your cash balance accurate.
Ready to convert your bank statement?
Upload a PDF and get clean Excel or CSV in seconds. Works with statements from any bank.
Convert to Excel nowFree to try, no credit card required