ACH Return Codes: R03 Return Code, R02, R04, R01 and R29 Explained

Aug 9, 2026

Convert your bank statement to Excel now

PDF, JPG, PNG, BMP, HEIC, TIFF, MT940

Upload your bank statement

Last updated August 2026.

An ACH return code is a three character code, always an R followed by two digits, that the receiving bank sends back to explain why it will not post an ACH entry. R01 means insufficient funds, R02 means the account is closed, R03 means the account cannot be located, and R04 means the account number is structurally invalid. Most returns must come back within two banking days of settlement, but unauthorized consumer returns get up to 60 calendar days.

That gap between two days and sixty days is the part that costs money. A file can look completely settled, the cash can be spent, and an R10 can still arrive eight weeks later. This page covers what each code means, when it can legitimately arrive, and the return rate thresholds that put your origination privileges at risk.

What is an ACH return code?

When you originate an ACH entry, it travels from your bank (the ODFI, the originating depository financial institution) through an ACH operator to the receiver's bank (the RDFI). If the RDFI cannot or will not post the entry, it does not simply fail silently. It sends the entry back with a reason code, and that code is what determines your deadline to fix the problem, whether you may retry, and whether the return counts against you under Nacha's rules.

Codes are grouped by who initiates the return and how long they have. Administrative returns are account problems the RDFI spots immediately. Unauthorized returns come from the account holder disputing the entry, which is why they get a far longer window. A third group covers file and format problems, which come back on the next file delivery rather than on a clock.

ACH return codes list: the ones you will actually see

There are more than eighty defined return codes, but a handful account for the overwhelming majority of real returns. These are the codes worth knowing by heart.

CodeMeaningDeadlineWhat to do
R01Insufficient funds2 banking daysRetry is allowed. Contact the customer first and time the retry to their pay cycle.
R02Account closed2 banking daysDo not retry. Get new account details before anything else.
R03No account or unable to locate account2 banking daysDo not retry. The number is well formed but no matching account exists, or the name does not match.
R04Invalid account number structure2 banking daysDo not retry. The number itself fails that bank's format rules, usually a typo or a truncation.
R05Unauthorized consumer debit using a corporate SEC code60 calendar daysStop. You debited a consumer account with CCD or CTX. Use PPD or WEB and get proper authorization.
R07Authorization revoked by customer60 calendar daysStop all future debits immediately and remove the mandate from your system.
R08Payment stopped2 banking daysThe customer placed a stop payment. Resolve the dispute before re-presenting anything.
R09Uncollected funds2 banking daysMoney is in the account but not yet available. Retry once the deposit clears.
R10Originator not known or not authorized to debit60 calendar daysTreated as unauthorized. Produce your authorization record and stop debiting.
R11Entry not in accordance with the terms of the authorization60 calendar daysAuthorization exists but the amount or date was wrong. Correctable, unlike R10.
R16Account frozen2 banking daysLegal action or bank hold. Do not retry, contact the customer.
R20Non-transaction account2 banking daysThe account cannot accept ACH at all. Collect a different account.
R29Corporate customer advises not authorized2 banking daysThe business version of R10, but on a two day clock because business accounts have no consumer protection window.

Why is R03 the most looked up ACH return code?

Because it is the most confusing one to act on. R03 means no account or unable to locate account, and it fires when the account number is structurally fine but the RDFI cannot match it to anything. That happens for several unrelated reasons: the account genuinely does not exist, the account exists but the name on the entry does not match, or the receiving bank requires a different account number format for ACH than the one printed on a statement.

The practical difference between R03 and R04 is where the failure happened. R04 means the number failed a structural test, so the bank never even looked for the account. R03 means it looked and found nothing. Both are administrative returns, both are on a two banking day clock, and for both the answer is the same: do not retry the same details. Retrying an R03 or R04 will return again, and administrative returns count toward a threshold you do not want to cross.

The two deadlines that actually matter

Almost every return falls into one of two windows, and knowing which one applies changes how you manage cash.

Two banking days. This covers R01, R02, R03, R04, R08, R09, R16, R20 and R29, among others. The RDFI must transmit the return so it is available to the ODFI by the opening of business on the second banking day following the settlement date. These are the returns you can plan around: if nothing has come back within two business days, an entry in this category is settled.

Sixty calendar days. This covers the unauthorized consumer returns: R05, R07, R10, R11 and a few others. A consumer has 60 calendar days from the settlement date to dispute the entry, and once they sign a written statement of unauthorized debit the RDFI sends it back. This is why treating an ACH debit from a consumer as final cash on day three is a mistake, particularly for subscription billing.

R29 is the one people get wrong most often. It looks like the corporate twin of R10, so it gets assumed to carry the same 60 day window. It does not. Business accounts do not get the consumer dispute protections, so R29 returns come back on the standard two banking day deadline.

ACH return rate thresholds: when returns become a compliance problem

Nacha's ACH Network Risk and Enforcement rules set three return rate levels measured against your ACH debit volume. Crossing them does not just cost you fees, it can cost you the ability to originate.

ThresholdRateCodes countedConsequence
Unauthorized return rate0.5%R05, R07, R10, R29, R51A direct rule violation. Your ODFI must act and enforcement can follow.
Administrative return rate3%R02, R03, R04Not an automatic violation, but Nacha can open a preliminary inquiry into your practices.
Overall return rate15%All debit returns except unauthorized and administrativeAlso an inquiry trigger rather than an automatic violation.

The distinction is worth understanding before a bank calls you about it. The 0.5% unauthorized rate is a hard rule and breaching it is a violation on its own. The 3% and 15% levels are inquiry triggers: crossing them gives Nacha grounds to ask how you are originating, and the answer had better be good. The administrative rate is also the most fixable, because R02, R03 and R04 are all data quality problems rather than customer behavior.

How do I reduce ACH returns?

Most of the leverage is upstream of the payment, in the data and the file, not in how you handle returns after the fact.

Validate account details at collection. Running an account number through account validation, or at minimum checking that the routing number passes its ABA check digit test, removes a large share of R03 and R04 before it ever becomes a return. The ninth digit of a routing number is a checksum over the first eight, so a transposed pair is detectable instantly and free.

Check the file before it leaves. Structural faults get the whole file rejected rather than producing individual returns, but the two problems share a root cause: nobody looked at the file. A NACHA file validator recomputes the entry hash, the batch and file control totals and the routing check digits, and reports the line number of anything that fails, which catches bad routing numbers in the same pass.

Use the right SEC code. R05 exists entirely because someone debited a consumer account with a corporate code. Consumer debits are PPD for a signed or verbal authorization, WEB for an online one, and TEL for a telephone authorization. CCD and CTX are for business accounts only.

Time retries against the reason, not the calendar. R01 and R09 are the only codes that may be reinitiated after a return, and Nacha is specific about how: no more than two reinitiations following the original return, within 180 days of the original entry's settlement date, submitted in a separate batch carrying RETRY PYMT in the company entry description, with the company name, company identification and amount identical to the original entry. R02, R03, R04, R16 and R20 all need new information first, and re-presenting them just inflates your administrative rate.

Keep authorization records you can actually produce. When an R10 arrives, the question is whether you can show the authorization. Teams that store the mandate, the timestamp and the IP or recording alongside the customer record resolve these in minutes. Teams that cannot simply absorb the loss, and if returned debits are quietly turning into unpaid invoices that nobody follows up on, that follow up is worth automating the collections chase rather than leaving to memory.

Beyond the common codes: how the R01 to R85 range is organized

There are more than eighty defined return codes, but the reason most originators only ever meet a dozen is that the rest are specialized. Knowing which group a code belongs to tells you whether it is your problem at all.

R01 to R33 are the general purpose returns an RDFI sends on an ordinary entry. This is the range that covers account problems, authorization disputes, stop payments and holds, and it is where essentially every return you act on will come from.

R34 to R39 cover limited participation by a financial institution and problems with the source document behind a converted check, such as an improper or already presented source document.

R40 to R47 are ENR returns, used only with automated enrollment entries, where a receiver is enrolling for direct deposit or direct payment and the enrollment data is invalid or incomplete.

R50 to R53 apply to RCK entries, the represented check application, and cover things like an item that was not eligible to be represented electronically.

R61 to R85 are largely IAT returns for international transactions, plus dishonored and contested dishonored returns, which are the mechanism banks use to argue with each other about a return rather than anything an originator initiates.

The practical read: if you receive a code above R33 and you are not originating ENR, RCK or IAT entries, it is worth asking your ODFI what happened rather than assuming your file was wrong. Codes in those ranges usually point at the entry type or at a dispute between institutions.

Where do return codes show up in your files?

Returns come back to you as ACH entries in their own right. The RDFI creates a return entry using a return transaction code, and the return reason code travels in the addenda record attached to it, in positions 4 to 6 of the type 7 record. So the code you are looking up sits three characters into an 80 character addenda field, inside a fixed width file with no delimiters.

That is why most people meet return codes twice: once in their processor's dashboard, and once in a raw file nobody can read. Converting the file to rows makes the second one tractable, which the NACHA file to Excel converter handles, and the field positions for every record type are documented in the NACHA file format reference. The step by step import settings that stop Excel from destroying routing numbers are in the guide on how to open a NACHA ACH file in Excel.

The returns then have to be matched back to the original entries and to the bank statement, because a return reverses cash you already recognized. That tie out is ordinary bank statement reconciliation, and if the only record you have of the affected period is a PDF, the bank statement converter turns it into the same structured rows so the returns line up against the deposits they reverse.

Quick reference: retry or stop

If you remember nothing else, remember which returns are worth another attempt.

  • Retry allowed: R01 insufficient funds and R09 uncollected funds, limited to two retries after the return.
  • Get new details first: R02 account closed, R03 no account found, R04 invalid account number, R20 non-transaction account.
  • Stop entirely: R05, R07, R08, R10, R11, R16 and R29. These involve authorization, disputes or legal holds, and re-presenting can turn a return into a rules violation.

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 now

Free to try, no credit card required