ACH Return Codes: NACHA File Format and R01–R85 List
Every NACHA ACH return code from R01 to R85 with its official title, and the file behind it: record types 1–9, key fields, SEC codes and return time frames.
Connectivity 16 of 18 see the reading order →
Reviewed and fact-checked
On this page
ACH return codes are the three-character reason codes — R01 to R85, 70 of them in force — that a receiving bank puts on an ACH entry it sends back, and they travel inside the same fixed-width NACHA file format that carried the payment out. The format is six record types in nested envelopes; the return is an entry detail record plus an addenda record carrying the code. Read the file and the code list together and a bounced US payment stops being a bank phone call.
Nacha publishes the rulebook and its return-code appendix as paid products, so this post works the way the pain.002 reject codes post does: Nacha's own public rule pages and its ACH Guide for Developers for structure and rule changes, cross-checked against the Federal Reserve's FedACH forms and bank-published code cards for the titles.
The file: six record types, 94 characters each
Every record is exactly 94 characters, and the file is blocked in tens: if the record count isn't a multiple of ten, the file is padded with lines of 9s. The first character of each line is the record type:
| Record | Name | What it carries |
|---|---|---|
| 1 | File header | Immediate destination and origin, creation date and time, file ID modifier, record size 094, blocking factor 10 |
| 5 | Batch header | Service class, company name and identification, SEC code, entry description, effective entry date |
| 6 | Entry detail | Transaction code, receiving bank routing, account number, amount, receiver name, trace number |
| 7 | Addenda | Remittance data, or the return / notification-of-change detail |
| 8 | Batch control | Entry/addenda count, entry hash, total debits and credits for the batch |
| 9 | File control | Batch count, block count, entry/addenda count, entry hash and totals for the file |
A file holds one or more batches (5 … 8), a batch holds one or more entries (6), and each entry may carry addenda (7). That nesting is the same idea as BAI2's 01–99 envelopes — header, content, trailer with checkable totals — just on the outbound side.
The fields that decide whether it posts
File header. The immediate destination is a space followed by the nine-digit routing number of the bank receiving the file; the file ID modifier (a capital letter or digit) tells apart two files created on the same day.
Batch header. The service class code declares the batch's direction: 200 mixed debits and credits, 220 credits only, 225 debits only. The company identification identifies you as the originator. The company entry description is the ten characters that often appear on the receiver's statement — and since 20 March 2026 two values are mandated: PAYROLL for PPD credits paying wages and similar compensation, and PURCHASE for consumer debits authorising online purchases, per Nacha's company entry description rule. The effective entry date is the date you want the entries to settle; the settlement date is left blank because the ACH Operator fills it in. The originating DFI identification is the first eight digits of your bank's routing number.
Entry detail. The receiving DFI identification is the first eight digits of the receiver's routing number, with the ninth — the check digit — in its own field. The account number field is 17 characters, the amount is in cents with no decimal point, and the addenda record indicator (0 or 1) says whether a 7 record follows. The trace number is 15 digits: your bank's eight-digit routing prefix plus a sequence number, ascending within the batch. Every return and every notification of change quotes it back, so it is the key your reconciliation should hold on to — the ACH equivalent of the pain.001 EndToEndId.
The transaction code is the first data field and decides debit versus credit and checking versus savings:
| Code | Meaning |
|---|---|
| 22 | Checking (demand) account credit |
| 23 | Prenotification of checking credit |
| 27 | Checking (demand) account debit |
| 28 | Prenotification of checking debit |
| 32 | Savings account credit |
| 33 | Prenotification of savings credit |
| 37 | Savings account debit |
| 38 | Prenotification of savings debit |
A prenote is a zero-dollar entry that tests the routing and account number before the first live payment. It proves the account exists and can take entries; it does not prove it belongs to the payee you think it does.
Controls. The batch and file control records repeat counts and totals, plus an entry hash: the sum of the eight-digit receiving DFI identifications of every entry, truncated to the rightmost ten digits. Entry and addenda records both count; headers and controls don't. The totals exist so that a truncated or altered file cannot balance — the same checkable arithmetic BAI2 trailers hand you on the way back.
SEC codes: what kind of payment the batch is
The Standard Entry Class code in the batch header tells every bank in the chain which rules apply — authorisation requirements, return windows, which addenda are allowed. The ones a corporate treasury originates or receives:
| Code | Name | Used for |
|---|---|---|
| PPD | Prearranged Payment and Deposit | Consumer accounts on a standing or single authorization: payroll, consumer direct debits |
| CCD | Corporate Credit or Debit | Business-to-business payments and collections; zero or one addenda record |
| CTX | Corporate Trade Exchange | B2B payments carrying full remittance: up to 9,999 addenda records per entry |
| WEB | Internet-Initiated/Mobile Entry | Consumer payments authorised through a website or mobile app |
| TEL | Telephone-Initiated Entry | Consumer debits authorised by telephone |
| IAT | International ACH Transaction | Entries with a cross-border leg, carrying a mandatory set of IAT addenda |
Others matter mostly because return codes refer to them: ARC, BOC and POP convert paper checks into ACH debits, RCK re-presents a returned check, XCK replaces a destroyed check, and ENR is the automated enrollment federal agencies use for direct deposit. On the SAP side, the payment medium workbench format ACH carries CCD, CTX and PPD as format supplements; how the format tree maps F110 data into those fields is in the DMEE post.
How a return comes back
A return is an ordinary entry detail record in a file from your bank, followed by a type 99 addenda record: the return reason code in positions 04–06, the original entry trace number in 07–21, a date of death for R14/R15, and the original receiving DFI identification.
The clocks matter as much as the codes. The receiving bank (RDFI) has two banking days after settlement for most returns. Unauthorized consumer returns — R05, R07, R10, R11 — get 60 calendar days. R29, the corporate version, stays on two banking days. If your bank (the ODFI) thinks a return is itself wrong, it can dishonor it within five banking days of the return's settlement, and the RDFI can contest that dishonor within two banking days; after that the dispute leaves the network.
A notification of change is different: a zero-dollar COR entry with a type 98 addenda, carrying a C code (C01 incorrect account number, C02 incorrect routing number, C05 incorrect transaction code) and the corrected value. The payment posted; your master data didn't match. The NOC tells you exactly which field to change on the vendor or customer record before the next run.
ACH return reason codes: the full list
Titles below are Nacha's, condensed where the official wording runs to a paragraph.
R01–R33: the returns an originator sees
| Code | Nacha title |
|---|---|
| R01 | Insufficient Funds |
| R02 | Account Closed |
| R03 | No Account/Unable to Locate Account |
| R04 | Invalid Account Number Structure |
| R05 | Unauthorized Debit to Consumer Account Using Corporate SEC Code |
| R06 | Returned per ODFI's Request |
| R07 | Authorization Revoked by Customer |
| R08 | Payment Stopped |
| R09 | Uncollected Funds |
| R10 | Customer Advises Originator is Not Known to Receiver and/or Originator is Not Authorized by Receiver to Debit Receiver's Account |
| R11 | Customer Advises Entry Not in Accordance with the Terms of the Authorization |
| R12 | Account Sold to Another DFI |
| R13 | Invalid ACH Routing Number |
| R14 | Representative Payee Deceased or Unable to Continue in That Capacity |
| R15 | Beneficiary or Account Holder (Other Than a Representative Payee) Deceased |
| R16 | Account Frozen/Entry Returned per OFAC Instruction |
| R17 | File Record Edit Criteria/Entry with Invalid Account Number Initiated Under Questionable Circumstances/Return of Improperly-Initiated Reversal |
| R18 | Improper Effective Entry Date |
| R19 | Amount Field Error |
| R20 | Non-Transaction Account |
| R21 | Invalid Company Identification |
| R22 | Invalid Individual ID Number |
| R23 | Credit Entry Refused by Receiver |
| R24 | Duplicate Entry |
| R25 | Addenda Error |
| R26 | Mandatory Field Error |
| R27 | Trace Number Error |
| R28 | Routing Number Check Digit Error |
| R29 | Corporate Customer Advises Not Authorized |
| R30 | RDFI Not Participant in Check Truncation Program |
| R31 | Permissible Return Entry (CCD and CTX only) |
| R32 | RDFI Non-Settlement |
| R33 | Return of XCK Entry |
R34–R39: limited participation and converted checks
| Code | Nacha title |
|---|---|
| R34 | Limited Participation DFI |
| R35 | Return of Improper Debit Entry |
| R36 | Return of Improper Credit Entry |
| R37 | Source Document Presented for Payment |
| R38 | Stop Payment on Source Document |
| R39 | Improper Source Document/Source Document Presented for Payment |
R40–R47: automated enrollment (ENR) only
| Code | Nacha title |
|---|---|
| R40 | Return of ENR Entry by Federal Government Agency |
| R41 | Invalid Transaction Code |
| R42 | Routing Number/Check Digit Error |
| R43 | Invalid DFI Account Number |
| R44 | Invalid Individual ID Number/Identification Number |
| R45 | Invalid Individual Name/Company Name |
| R46 | Invalid Representative Payee Indicator |
| R47 | Duplicate Enrollment |
R50–R53: re-presented checks (RCK) only
| Code | Nacha title |
|---|---|
| R50 | State Law Affecting RCK Acceptance |
| R51 | Item Related to RCK Entry is Ineligible or RCK Entry is Improper |
| R52 | Stop Payment on Item Related to RCK Entry |
| R53 | Item and RCK Entry Presented for Payment |
R61–R77: dishonored and contested dishonored returns
R61–R70 are sent by the ODFI dishonoring a return; R71–R77 by the RDFI contesting that dishonor.
| Code | Nacha title |
|---|---|
| R61 | Misrouted Return |
| R62 | Return of Erroneous or Reversing Debit |
| R67 | Duplicate Return |
| R68 | Untimely Return |
| R69 | Field Error(s) |
| R70 | Permissible Return Entry Not Accepted/Return Not Requested by ODFI |
| R71 | Misrouted Dishonored Return |
| R72 | Untimely Dishonored Return |
| R73 | Timely Original Return |
| R74 | Corrected Return |
| R75 | Return Not a Duplicate |
| R76 | No Errors Found |
| R77 | Non-Acceptance of R62 Dishonored Return |
R80–R85: international (IAT) entries
| Code | Nacha title |
|---|---|
| R80 | IAT Entry Coding Error |
| R81 | Non-Participant in IAT Program |
| R82 | Invalid Foreign Receiving DFI Identification |
| R83 | Foreign Receiving DFI Unable to Settle |
| R84 | Entry Not Processed by Gateway |
| R85 | Incorrectly Coded Outbound International Payment |
The gaps are real. R48–R49, R54–R60, R63–R66 and R78–R79 are not assigned. Lists that still show R63–R66 ("incorrect dollar amount", "incorrect transaction code" and so on) are describing field errors that the current rules carry inside an R69 dishonored return, as field codes 01–07 in the addenda. A code table built from one of those lists will map codes your bank never sends. All 70 codes above are current: Nacha's recent changes repurposed codes rather than retiring them (next section). R30 and R33 belong to check-truncation and destroyed-check programmes a corporate originator will rarely touch.
The codes whose meaning moved
Three rule changes decide how you read a code, and a code table older than the first two will misroute returns today:
- R10 and R11, April 2020. Nacha split the unauthorized reasons: R10 now means no relationship or no authorization at all; R11 was repurposed to mean an authorization exists but the entry broke its terms — wrong amount, debited early, or part of an incomplete transaction. R11 counts as an unauthorized return for return-rate purposes, and since April 2021 it also carries the unauthorized entry fee.
- R06 and R17, 1 October 2024. An ODFI may now request a return for any reason (R06; the RDFI's compliance is optional). And an RDFI may use R17 to return an entry it believes was initiated under questionable circumstances — account takeover, business email compromise, payee impersonation — with
QUESTIONABLEin the addenda information. - R16 and R90, 17 March 2028. A new R90, "Entry Returned Due to RDFI's Sanctions Compliance Obligations", takes over sanctions returns, and R16 narrows to frozen accounts. Approved, not yet live — which is why it sits outside the list above.
An R17 with QUESTIONABLE in the addenda is not a data error to fix and resend. It is the receiving bank telling you the payment was probably induced by someone other than your real counterparty.
That matters for payment fraud controls: an R17 QUESTIONABLE on a vendor payment is the signature of an invoice-redirection fraud that already got past your beneficiary checks, and it belongs in the fraud queue, not the repair queue.
The return rates Nacha watches
Returns are also a scorecard. Nacha's risk and enforcement rules set an unauthorized return rate threshold of 0.5% (R05, R07, R10, R11, R29, R51), an administrative return rate level of 3.0% (R02, R03, R04) and an overall return rate level of 15.0% for debits. The threshold is a limit the originator has to get back under; a level is the point at which Nacha may open a preliminary inquiry into the origination practices behind it. If you collect by ACH, those three numbers belong on the same dashboard as your DSO.
Where returns meet your treasury system
You rarely read the raw return file. Returns reach treasury through the bank's reporting: a BAI2 detail record, or a camt.053/camt.054 entry — Nacha publishes an ISO 20022 guide to carrying the ACH return data in camt.053. From there the EBS posting rules have to recognise the line as a return, find the original by trace number, and reverse the clearing. What I would build: keep the R code as data on the reversal, and route by family — R02/R03/R04/C-codes to master-data repair, R01/R09 to cash and collections, R05/R07/R10/R11/R29 to the customer and mandate owner, R17 QUESTIONABLE to fraud. And key the table by code set: an ACH return and an ISO 20022 reject are different lists, exactly as pain.002 rejects and SEPA returns are.
Same Day ACH is about to carry bigger payments: its per-payment limit rises from $1 million to $10 million on 17 September 2027. A mishandled return on a single $10 million payment is a cash-positioning problem, not a back-office one.
See also the BAI2 file format walkthrough, bank statement formats: MT940 vs camt.053 vs BAI2, pain.002 status and reject codes, and payment fraud prevention in treasury.
Primary sources
Nacha Operating Rules as in force on 2026-09-25 (2026 edition, including the October 2024 R06/R17 amendments, the March and June 2026 fraud-monitoring phases and the 18 September 2026 IAT definition rule); R90 and the $10 million Same Day ACH limit are approved but not yet effective. Nacha's rulebook and its return-code appendix are paid publications and nacha.org could not be fetched directly, so every code title, field rule and date was checked on 2026-09-25 through cross-checked excerpts of the listed sources: Nacha's own rule pages and developer guide, the Federal Reserve's FedACH forms, and bank-published code cards. Your ODFI's origination guide is the contract for what it accepts.
- Nacha — ACH Guide for Developers: ACH File Details — accessed 2026-09-25
- Nacha — Differentiating Unauthorized Return Reasons (R10/R11) — accessed 2026-09-25
- Nacha — Risk Management Topics, October 1, 2024 (R06 and R17) — accessed 2026-09-25
- Nacha — Return for Questionable Transaction — accessed 2026-09-25
- Nacha — ACH Network Risk and Enforcement Topics (return rate threshold and levels) — accessed 2026-09-25
- Nacha — New Return Reason Code for Sanctions Compliance Obligations (R90) — accessed 2026-09-25
- Nacha — Risk Management Topics: Company Entry Descriptions — accessed 2026-09-25
- Nacha — Same Day ACH Per Payment Limit to Increase to $10 Million — accessed 2026-09-25
- Nacha — ISO 20022 Guide to Mapping U.S. ACH Returns (camt.053) — accessed 2026-09-25
- Federal Reserve Financial Services — FedACH Contested Dishonored Return Item instructions — accessed 2026-09-25
- Commerce Bank — ACH Return, NOC and Transaction Codes card — accessed 2026-09-25
The code tables in this article are also in the code lookup — one search box across the SAP, SWIFT MT, ISO 20022, BAI2 and NACHA ACH references.
Frequently asked questions
(4)
What is the difference between ACH return codes R10 and R11?
Since Nacha's rule change of 1 April 2020, R10 means the customer says the originator is not known to them or is not authorized to debit the account at all — there is no authorization relationship. R11 means there is a relationship and an authorization exists, but the entry does not match its terms: a different amount than authorized, a debit settled earlier than authorized, or a debit that is part of an incomplete transaction. Both are consumer unauthorized returns with the 60-day window, but R10 tells you to stop debiting that account, while R11 tells you to fix how you debit it.
How long does a bank have to return an ACH payment?
The default is two banking days after the settlement date of the original entry, which covers the administrative returns like R01 insufficient funds, R02 account closed, R03 no account and R04 invalid account number. Unauthorized returns on consumer accounts — R05, R07, R10 and R11 — have an extended window of 60 calendar days after settlement. A corporate account's unauthorized claim, R29, stays on the two-banking-day clock. Past those windows the RDFI can no longer use the ACH return, and the dispute moves outside the network.
What does R17 QUESTIONABLE mean on an ACH return?
Since 1 October 2024, a receiving bank may use R17 to return an entry it believes was initiated under questionable circumstances, such as account takeover, business email compromise or payee impersonation, and it marks that use with the word QUESTIONABLE in the addenda information of the return. Using R17 this way is optional for the bank. For an originator it is a fraud signal rather than a data error: the payment was probably induced by someone other than your genuine counterparty, so the right response is an investigation, not a resend.
What is the difference between an ACH return and a notification of change?
A return sends the money back: the entry did not post, it comes back with an R code in a type 99 addenda record, and you have to act before paying or collecting again. A notification of change is a zero-dollar COR entry that says the entry posted but some of your data is wrong, with a C code such as C01 incorrect account number or C02 incorrect routing number in a type 98 addenda. The payment went through; the NOC asks you to correct the master data before the next one.