ACH return codes: What they mean and how to resolve them

- What are ACH return codes?
- How do ACH return codes work?
- How are ACH return codes assigned?
- Why understanding ACH return codes is important for your business
- List of the most common ACH return codes
- List of less common and international ACH return codes
- ACH returns vs. ACH reversals
- How to manage and resolve ACH returns
- Automate your AP with Ramp

Your business probably appreciates the speed, affordability, and security of ACH payments. Unfortunately, ACH transactions sometimes fail. When that happens, you get an ACH return code.
ACH return codes explain why an ACH payment failed, whether due to insufficient funds, invalid account numbers, or other issues.
Understanding these codes can help your accounts payable (AP) team identify patterns, resolve payment failures, and improve transaction success rates. This can save your company time and money and help ensure timely payments.
Let’s look at what ACH return codes are and why they matter, and explore some of the most common codes to be aware of.
What are ACH return codes?
ACH return codes, also called ACH return reason codes, are three-character error messages generated when an ACH transaction fails.
Each code begins with the letter "R" followed by a two-digit number. For example, R01 is the ACH return code for insufficient funds, and R04 is the code for an invalid account number. These standardized codes provide a clear explanation for the failure, making it easier for your business to diagnose and resolve payment issues.
ACH return codes can be used by banks, financial institutions, businesses, and finance professionals. Understanding what they're for can help you remain compliant with the rules around ACH payments, and keep payment processing efficient.
How do ACH return codes work?
When an ACH payment fails, the Receiving Depository Financial Institution (RDFI) assigns a return code explaining the reason. This code is sent to the Originating Depository Financial Institution (ODFI), which then relays the information to the business that initiated the transaction.
The RDFI is the bank or financial institution receiving the ACH payment. It can assign an ACH return reason code if the payment doesn't meet certain criteria or there's some other issue that prevents it from accepting the payment.
The ODFI is the bank or financial institution sending the ACH payment. If it feels a payment return was improper, it can assign dishonored return codes to challenge it.
When a payment receives an ACH return code, take action to resolve the issue as quickly as possible. Delays can negatively affect your cash flow, which is why having ACH return code information at your fingertips is essential.
How are ACH return codes assigned?
Banks assign ACH return reason codes based on certain criteria—for example, if a sending account has insufficient funds to complete the transaction, or the receiving account has been closed. Incorrect payment information, from the account number to the dollar amount, may also trigger ACH return codes.
The regulatory body Nacha oversees this process, ensuring consistency in return codes across the ACH network. They also standardize codes, which makes it easier to both issue and respond to them. Some codes are more common for consumer transactions, while others pertain to business transactions.
Why understanding ACH return codes is important for your business
Learning at least some of the most common ACH return codes will help you quickly determine why any issues with your ACH payments have occurred and figure out whether a larger problem needs addressing. By understanding these codes, you’ll be able to:
- Identify payment issues: These codes provide a standardized reason for failed transactions so your business can address problems quickly
- Enhance communication: Return codes create transparency between banks and your business, helping resolve issues efficiently and reducing delays
- Improve transaction success rates: By analyzing return codes, your business can detect recurring issues, adjust payment methods, and take proactive steps to reduce failures
- Ensure Nacha compliance: Monitoring return codes helps your business stay within Nacha’s 15% return rate threshold, avoiding penalties and maintaining uninterrupted ACH services
Knowing how ACH return codes work and how to respond to them is key to optimizing payment workflows, reducing failed transactions, and ensuring compliance with ACH network rules.
List of the most common ACH return codes
There are 85 ACH return codes. This breakdown of 20 of the most common ones gives you a good idea of how they work and the types of situations they can alert you to.
While these ACH return reason codes aren’t numbered in order from most to least used, the first four return codes—R01, R02, R03, and R04—tend to be the most commonly encountered and may be worth memorizing.
Code | Description | Reason |
---|---|---|
R01 | Insufficient funds | Account doesn’t have enough funds |
R02 | Account closed | Account closed by bank or account holder |
R03 | No account/unable to locate | Valid account number format with no account match |
R04 | Invalid account number | Incorrect or invalid account number |
R05 | Unauthorized debit | Account holder did not authorize transaction |
R06 | Returned per ODFI’s request | Originating bank requested return of funds |
R07 | Authorization revoked | Account holder no longer approving transaction |
R08 | Payment stopped | Account holder placed stop payment on transaction |
R09 | Uncollected funds | Funds are unavailable to cover transaction |
R10 | Customer advises not authorized | Account holder claims transaction is unauthorized |
R11 | Check truncation entry return | Check processed incorrectly |
R12 | Branch sold to another DFI | Another institution bought account holder's branch |
R13 | Invalid ACH routing number | Incorrect routing number |
R14 | Representative payee deceased | Person managing funds has passed away |
R15 | Beneficiary or account holder deceased | Beneficiary or account holder death paused transactions; awaiting proper documents |
R16 | Account frozen | Frozen account preventing transactions |
R17 | File record edit criteria | File data integrity issues |
R18 | Improper effective entry date | Invalid entry date, likely due to weekend or holiday |
R19 | Amount field error | Amount errors such a exceeded limit or incorrect format |
R20 | Non-transaction account | Account not set up for transactions |
Getting an ACH return code can be stressful when you don’t know what it means or what to do about it. Understanding these codes and being able to quickly look up their meaning will make it much easier to determine your next steps and resolve any issues you encounter.
All payments in one place? Check.
Handle all domestic and global vendor payments on a single platform—by check, card, ACH, or international wire.

List of less common and international ACH return codes
You may occasionally run into some return codes outside the 20 we covered above. Here's a list of less common and international ACH return codes you might encounter, from R21 to R85, along with their descriptions and reasons:
Code | Description | Reason |
---|---|---|
R21 | Invalid company identification | Entry may fail check digit validation or may not correspond to an individual or entity in the customer database |
R22 | Invalid individual ID number | Individual ID number specified in the entry detail record does not agree with the corresponding ID number in the customer database |
R23 | Credit entry refused by receiver | Receiver has notified the RDFI that it will not accept credit entries |
R24 | Duplicate entry | Trace number, date, dollar amount and/or other data matches another transaction |
R25 | Addenda error | Addenda records are only used with IAT entries and CTX entries |
R26 | Mandatory field error | Errors in the required fields or the formatting of the Nacha record |
R27 | Trace number error | Trace number does not follow the required format or contains invalid information |
R28 | Routing number check digit error | Routing transit number check digit is not equal to the computed check digit |
R29 | Corporate customer advises not authorized | Corporate receiver has advised the RDFI that the originator is not authorized to debit the account |
R30 | RDFI not participant in check truncation program | RDFI is not able to settle the entry because it is not a participant in the check truncation program |
R31 | Permissible return entry (CCD and CTX only) | RDFI has been notified by the receiver that the receiver authorizes the RDFI to return the entry |
R32 | RDFI non-settlement | RDFI is not able to settle the entry |
R33 | Return of XCK entry | RDFI determines at its sole discretion to return an XCK entry; an XCK return entry may be initiated by midnight of the sixtieth day following the settlement date of the XCK entry |
R34 | Limited participation DFI | RDFI participation has been limited by a federal or state supervisor |
R35 | Return of improper debit entry | RDFI determines at its sole discretion that a debit entry was improperly initiated under the circumstances |
R36 | Return of improper credit entry | RDFI determines at its sole discretion that a credit entry was improperly initiated under the circumstances |
R37 | Source document presented for payment | Source document to which an ARC, BOC, or POP entry relates has been presented for payment |
R38 | Stop payment on source document | Stop payment order has been placed on the source document to which the ARC or BOC entry relates |
R39 | Improper source document | Source document to which an ARC, BOC, or POP entry relates has been presented for payment or is ineligible |
R40 | Return of ENR entry by federal government agency | Only the federal government or other authorized party may return ENR entries; this return reason code may only be used to return ENR entries |
R41 | Invalid transaction code | Transaction code is not valid for the type of account referenced in the entry |
R42 | Routing number / check digit error | Routing number and check digit in the entry do not match the corresponding fields in the addenda record |
R43 | Invalid DFI account number | Receiver's account number does not conform to the standards for that account type or the RDFI |
R44 | Invalid individual ID number / receiver ID number | Individual ID number/receiver ID number has an incorrect number of digits or contains non-numeric characters |
R45 | Invalid individual name / receiving company name | Name field is either blank or contains characters that make the name unintelligible |
R46 | Invalid representative payee indicator | Representative payee indicator is not valid |
R47 | Duplicate return | Entry is a duplicate of an entry previously returned by the RDFI |
R48 | Branch sold to another DFI | RDFI has sold branch that maintains receiver's account to another financial institution |
R49 | Reserved for Nacha use | This return reason code is reserved for future use by Nach |
R50 | State law affecting RCK acceptance | RDFI is located in a state that has not adopted Revised Article 4 of the Uniform Commercial Code and has elected not to accept RCK entries |
R51 | Item is ineligible or improper | Item to which the RCK entry relates is ineligible for collection or the RCK entry is otherwise improper |
R52 | Stop payment on item related to RCK entry | Stop payment order has been placed on the item to which the RCK entry relates |
R53 | Item and RCK entry presented for payment | Both RCK entry and original item have been presented for payment |
R54 | Receivable document presented for payment | Original receivable document to which the RCK entry relates has been presented for payment |
R55 | Source document presented for payment | Source document to which the BOC entry relates has been presented for payment |
R56 | Source document presented for payment | Source document to which the ARC entry relates has been presented for payment |
R57 | RDFI not qualified to participate | RDFI is not qualified to participate in the BOC program |
R58 | Payee deceased | Payee is deceased |
R59 | Payee account closed | Payee's account has been closed |
R60 | Entry settled prior to return | Entry has been settled and cannot be returned |
R61 | Misrouted return | Return entry has been misrouted to an incorrect ODFI |
R62 | Incorrect trace number | Trace number in the return entry does not match trace number in the original entry |
R63 | Incorrect dollar amount | Dollar amount in the return entry does not match dollar amount in the original entry |
R64 | Incorrect individual identification number | Individual ID number in the return entry does not match individual ID number in the original entry |
R65 | Incorrect transaction code | Transaction code in the return entry does not match transaction code in the original entry |
R66 | Incorrect company identification | Company identification in return entry does not match company identification in original entry |
R67 | Duplicate return | Return entry is a duplicate of a return entry previously sent by the RDFI |
R68 | Untimely return | Return entry was not sent within the timeframe established by Nacha Operating Rules |
R69 | Field error(s) | One or more field requirements are not met |
R70 | Permissible return entry not accepted / notice not provided | ODFI has not agreed to accept a permissible return entry, or ODFI did not request the return entry |
R71 | Misrouted dishonored return | Dishonored return entry has been misrouted to an incorrect RDFI |
R72 | Untimely dishonored return | Dishonored return entry was not sent within the timeframe established by Nacha Operating Rules |
R73 | Timely original return | RDFI is certifying that original return entry was sent within the established timeframe |
R74 | Corrected return | RDFI is correcting a previous return entry that contained incorrect information |
R75 | Return not a duplicate | RDFI is asserting that a return entry is not a duplicate of a previously transmitted return |
R76 | No errors found | RDFI has reviewed the return entry and found no errors in the return reason code or other return entry information |
R77 | Non-acceptance of R62 dishonored return | ODFI does not accept the dishonored return entry identified by return reason code R62 |
R78 | Non-acceptance of R68 dishonored return | ODFI does not accept the dishonored return entry identified by return reason code R68 |
R79 | Incorrect data in return entry | RDFI provided incorrect data in the return entry |
R80 | Cross-border payment coding error | Foreign exchange indicator, settlement method, or other cross-border payment information contains an error |
R81 | Non-participant in cross-border program | RDFI is not able to settle the entry because it is not a participant in the cross-border program |
R82 | Invalid foreign receiving DFI identification | Foreign receiving DFI identification is not valid |
R83 | Foreign receiving DFI unable to settle | Foreign receiving DFI is unable to settle the entry |
R84 | Entry not processed by gateway | Entry could not be processed by the gateway |
R85 | Incorrectly coded outbound international payment | Entry is incorrectly identified as an international ACH transaction |
As you can see, ACH return codes can alert you to a wide variety of reasons for an ACH payment failure, such as insufficient funds, a closed account, or an invalid account number. That information will help you determine how to proceed in correcting the issue.
If you regularly experience failed ACH returns, you can use these codes to figure out why. Resolving failed ACH payments costs time, puts you at risk of paying invoices late, and costs money.
ACH returns vs. ACH reversals
ACH returns and ACH reversals are similar-sounding terms with very different meanings. Understanding the difference will help you manage transactions more effectively and avoid confusion.
For example, if you make an ACH payment by mistake and want to reverse it, reading about ACH returns won’t be helpful. Likewise, if you experience an ACH payment failure, researching ACH reversals will only cause confusion.
To clarify, let’s break down the differences between ACH returns and ACH reversals:
Criteria | ACH return | ACH reversal |
---|---|---|
Definition | A failed payment when an ACH transaction can’t be processed successfully | A request to reverse a completed ACH payment due to an error |
Initiator | The receiving bank (RDFI) when an issue is detected | The sending bank (ODFI) upon identifying a mistake |
Common reasons | Insufficient funds Invalid account number | |
Processing time | 2–60 days, depending on return code | Must be requested within 24 hours of identifying the error |
How to manage and resolve ACH returns
Reducing ACH returns requires taking proactive steps to prevent failed transactions and ensure smooth payment processing. Here are some best practices to follow when you receive a return code:
- Understand return codes: Learn the meaning of each ACH return code to quickly identify and resolve issues. For example, for code R01 (insufficient funds), contact the payer and request that they remit payment from an alternative source.
- Verify account details: Double-check vendor account and routing numbers before processing payments
- Notify vendors promptly: Inform customers when a transaction is returned and provide guidance on how to resolve it
- Use account verification tools: Implement solutions that complete the ACH verification process, and check for sufficient funds before initiating payments
- Monitor return patterns: Analyze return data regularly to spot recurring issues and adjust processes accordingly
- Stay Nacha-compliant: Keep return rates within Nacha thresholds to avoid penalties and ensure uninterrupted ACH access
Acting quickly when you get an ACH return code will help you get your payments back on track, minimize recurrences, and maintain strong vendor relationships.
Automate your AP with Ramp
With manual AP processes, data entry mistakes can lead to returned ACH payments or the need for an ACH reversal. You can avoid these errors and more by automating your AP process.
Ramp Bill Pay lets you scan or upload documents such as invoices, purchase orders, vendor onboarding docs, and receipts instead of entering all that information manually.
And with the ability to streamline the payment process with features such as automated workflows, two-way and three-way matching, and error alerts, you'll have complete visibility into your cash flow, too.
What else could Ramp do to streamline your AP process? Find out with a demo.
This post includes general information about ACH payments. For help with ACH functionality specific to Ramp, visit Ramp Support for more details.

“We’ve simplified our workflows while improving accuracy, and we are faster in closing with the help of automation. We could not have achieved this without the solutions Ramp brought to the table.”
Kaustubh Khandelwal
VP of Finance, Poshmark

“Our previous bill pay process probably took a good 10 hours per AP batch. Now it just takes a couple of minutes between getting an invoice entered, approved, and processed.”
Jason Hershey
VP of Finance and Accounting, Hospital Association of Oregon

“When looking for a procure-to-pay solution we wanted to make everyone’s life easier. We wanted a one-click type of solution, and that’s what we’ve achieved with Ramp.”
Mandy Mobley
Finance Invoice & Expense Coordinator, Crossings Community Church

“We no longer have to comb through expense records for the whole month — having everything in one spot has been really convenient. Ramp's made things more streamlined and easy for us to stay on top of. It's been a night and day difference.”
Fahem Islam
Accounting Associate, Snapdocs

“It's great to be able to park our operating cash in the Ramp Business Account where it earns an actual return and then also pay the bills from that account to maximize float.”
Mike Rizzo
Accounting Manager, MakeStickers

“The practice managers love Ramp, it allows them to keep some agency for paying practice expenses. They like that they can instantaneously attach receipts at the time of transaction, and that they can text back-and-forth with the automated system. We've gotten a lot of good feedback from users.”
Greg Finn
Director of FP&A, Align ENTA

“The reason I've been such a super fan of Ramp is the product velocity. Not only is it incredibly beneficial to the user, it’s also something that gives me confidence in your ability to continue to pull away from other products.”
Tyler Bliha
CEO, Abode
