The ultimate guide to ACH return codes
An overview of each of the ACH return codes, what they mean, and how you can reduce ACH returns through an innovative payment solution.


The popularity of ACH payments is growing, with the National Automated Clearing House Association (NACHA) reporting more than 8 billion direct deposits made via the technology in 2023 alone, an increase of 3.3% by volume and 7.4% by value. As anyone who uses ACH payments knows, however, if ACH payments are growing, so too are ACH return codes.
With this increase in activity comes an increase in potential returned payments. Returned ACH transactions negatively impact businesses by disrupting cash flow, damaging a company’s reputation, and putting them at risk of possible fines from NACHA.
Fortunately, you can proactively manage ACH transactions to help reduce returns, including knowing each of the ACH return codes, what they mean, and how you can reduce ACH returns through an innovative payment solution.
What are ACH return codes?
When an ACH transaction can’t be completed, the Receiving Depository Financial Institution (RDFI) sends a notice to the Originating Depository Financial Institution (ODFI). This notice includes a code, called an ACH return code.
The code includes an R and a 2-digit number, such as R01, R04, or R78.
The ACH return process
The timing and specifics may vary depending on the agreement between the business and the customer, as well as the reasons for the return. Here is a general overview:
- You send an ACH payment request to your customer.
- The customer’s bank initially funds the request.
- The bank then takes money from the customer’s account.
- If the request can’t be funded for any reason, the customer bank will take the money back and provide a return code explaining why.
Returns can occur within a few days or even 30 days later (or longer), depending on the reason.

How do you identify ACH return codes?
The ACH return includes a 3-character code, which explains why the ACH payment didn’t go through. Each code has a name, a reason for return, and a timeline for when it may show up after the payment request has been processed or how long you have to respond.
The most common ACH return codes
There are 85 different reasons for an ACH payment to be returned, which we share below. However, these reasons cover most instances.
R01 – Insufficient funds
This common return code indicates that the customer didn’t have enough money in their account at the time of the request to cover the full amount of the debit entry. This doesn’t mean you’re out of luck, but you do need to wait 30 days to try again.
R02 – Account closed
This is one of the simpler ACH return codes. If the customer’s bank account is no longer active, the request will be returned under this code.
R03 – No account/Unable to locate account
This return code indicates that the account number listed on the payment request is either a valid account that doesn’t match the customer or isn’t a valid and open account. It requires additional validation.
For example, if a customer tries to buy something online, they may miskey their account number. They fill out an actual account number, but it is not their own. Code R03 may appear on the return notice because the account and customer names don’t match. The retailer may choose to ask the customer to restate their account number or request a different payment method.
R04 – Invalid account number
In this instance, the account number isn’t correct at all. It’s not a mismatch, but rather, it’s invalid. It could be in the wrong format, have not enough numbers, or have too many numbers for the account type.
R05 – Unauthorized debit entry
A return code of R05 indicates that the account type didn’t match the payment request. For example, you could be attempting a B2B payment via ACH from a business account to another business account, but the customer provided a personal bank account number for the receiving bank. Because each ACH transaction needs to specify the proper account types ahead of time, the payment would be returned under an R05 code.
R10 – Customer advises not authorized
The full description for code R10, as stated by NACHA, is “Customer Advises Originator is Not Known to Receiver and/or Originator is Not Authorized by Receiver to Debit Receiver’s Account.” It covers instances where the customer doesn’t recognize the originator of the ACH request, doesn’t have a relationship with them, or hasn’t authorized the transaction to occur.
R16 – Account frozen
The R16 return code indicates that the customer account has been frozen and no debits or credits can occur. This may be due to a number of reasons, including a customer’s request or because the account is subject to legal review or asset seizure from the government.
Best practices for managing ACH returns
While some ACH returns are outside of your control, you can reduce the overall number by taking some additional care with your payment requests.
Verify data
Use payment gateways or checkout services that require some verification before submission. This could be by having customers type their account number in twice on the payment screen and making sure the entries match.
Educate your customers
Insufficient funds returns happen when customers don’t fully understand the amount they will be charged or the frequency of the charges. Subscription billing, for example, can take customers by surprise, especially if the amount changes month-to-month due to usage.
By educating the customer on the cost of services and how the billing works, they will be more likely to have the funds in their account at the time of payment.
Make payment changes simple
Some of the more common ACH return reasons involve an account being closed before payment can be processed. This may simply be a matter of a customer not being able to update their account information with your company.
Consider more self-service options for account updates so customers can keep account info current and avoid having you try to charge a closed account.
Partner with Astra
Finally, integrating an Instant Payments API, like the one offered by Astra, gives you more control over your ACH payments (and, therefore, your return rates).
Some of the benefits of Astra include:
- Accelerated ACH that makes ACH payments happen faster and reduces the time from initial request to payout
- Enhanced fraud detection to help flag payment requests that are unlikely to be honored by the customer’s bank
- Automated balance checking to ensure the customer can cover a payment request
- Automated updates on the transfer status via webhooks, so you get real-time information and don’t have to wait days or weeks to learn about a returned payment
Astra integrates into your existing product, helping you comply with industry and legal standards.
At Astra, we build the infrastructure for instant transfers, but we also help companies manage traditional payments through the ACH system. In both instances, our customers get fast and secure payment support. We also take ACH returns seriously and work to improve the entire payment journey. Customers are instantly verified to ensure they match their identities, which prevents spammers, scammers, and bots from accessing your payment platform.
Once verified, customers give a one-time authorization that makes future payments simple and secure. And, while Astra prides itself on efficient payments, ACH money doesn’t leave the account until the risk has been assessed. User verification and account resolution must happen first, as well as a check to see that there’s enough money in the account to cover the payment. We analyze the account and the user’s history to determine the appropriate settlement speed.
Less risk and lower returns with Astra
With more assurance that an account is legit, fully funded, and approved by the customer, you can reduce the likelihood of an ACH return when using Astra’s Accelerated ACH services. This benefits businesses in terms of the costs to process payments. Astra also helps you comply with NACHA regulations, avoiding the risk of fines or even being removed from the ACH network altogether.
Returns don’t have to diminish your growth or frustrate customers. Book a demo to find out how partnering with Astra can help you reduce returns and provide a better user experience.
Full list of every ACH return code
While this article breaks down some of the more common ACH return codes, we weren’t able to cover them all. Here’s a full list of every ACH return code.
Return Code | Title | Timeframe |
R01 | Insufficient Funds | 2 Banking Days |
R02 | Account Closed | 2 Banking Days |
R03 | No Account / Unable to Locate Account | 2 Banking Days |
R04 | Invalid Account Number | 2 Banking Days |
R05 | Unauthorized Debit to Consumer Account | 60 Calendar Days |
R06 | Returned per ODFI’s Request | Undefined |
R07 | Authorization Revoked by Customer | 60 Calendar Days |
R08 | Payment Stopped | 2 Banking Days |
R09 | Uncollected Funds | 2 Banking Days |
R10 | Customer Advises Not Authorized | 60 Calendar Days |
R11 | Check Truncation Entry Return | 60 Calendar Days |
R12 | Branch Sold to Another DFI | 2 Banking Days |
R13 | Invalid ACH Routing Number | Next File Delivery Time Following Processing |
R14 | Representative Payee Deceased | 2 Banking Days |
R15 | Beneficiary or Account Holder Deceased | 2 Banking Days |
R16 | Account Frozen | 2 Banking Days |
R17 | File Record Edit Criteria | 2 Banking Days |
R18 | Improper Effective Entry Date | Next File Delivery Time Following Processing |
R19 | Amount Field Error | Next File Delivery Time Following Processing |
R20 | Non-Transaction Account | 2 Banking Days |
R21 | Invalid Company Identification | 2 Banking Days |
R22 | Invalid Individual ID Number | 2 Banking Days |
R23 | Credit Entry Refused by Receiver | RDFI Must Transmit Return Upon Receipt of Refusal |
R24 | Duplicate Entry | 2 Banking Days |
R25 | Addenda Error | Next File Delivery Time Following Processing |
R26 | Mandatory Field Error | Next File Delivery Time Following Processing |
R27 | Trace Number Error | Next File Delivery Time Following Processing |
R28 | Routing Number Check Digit Error | Next File Delivery Time Following Processing |
R29 | Corporate Customer Advises Not Authorized | 2 Banking Days |
R30 | RDFI Not Participant in Check Truncation Program | Next File Delivery Time Following Processing |
R31 | Permissible Return Entry (CCD and CTX only) | Undefined |
R32 | RDFI Non-Settlement | Next File Delivery Time Following Processing |
R33 | Return of XCK Entry | 60 Calendar Days |
R34 | Limited Participation DFI | Next File Delivery Time Following Processing |
R35 | Return of Improper Debit Entry | Next File Delivery Time Following Processing |
R36 | Return of Improper Credit Entry | Next File Delivery Time Following Processing |
R37 | Source Document Presented for Payment | 60 Calendar Days |
R38 | A stop payment was placed on the source document of the transaction | 60 Calendar Days |
R39 | Improper Source Document | 2 Banking Days |
R40 | Return of ENR Entry | 2 Banking Days |
R41 | Invalid Transaction Code | N/A |
R42 | Routing Number / Account Number Mismatch | N/A |
R43 | Invalid DFI Account Number | N/A |
R44 | Invalid Individual Identifier | N/A |
R45 | Invalid Individual Name | N/A |
R46 | Invalid Representative Payee Indicator | 1 Banking Day |
R47 | Duplicate Enrollment | 1 Banking Day |
R50 | State Law Affecting RCK Acceptance | 2 Banking Days |
R51 | Item is Ineligible, Notice Not Provided | 2 Banking Days |
R52 | Stop Payment on Item | 60 Banking Days |
R53 | Item and ACH Entry Presented for Payment | 60 Calendar Days |
R61 | Misrouted Return | 60 Calendar Days |
R62 | Incorrect Trace Number | 1 Banking Day |
R63 | Incorrect Dollar Amount | 1 Banking Day |
R64 | Incorrect Individual Identification | 1 Banking Day |
R65 | Incorrect Transaction Code | 1 Banking Day |
R66 | Incorrect Company Identification | 1 Banking Day |
R67 | Duplicate Return | 1 Banking Day |
R68 | Untimely Return | 1 Banking Day |
R69 | Multiple Errors | 1 Banking Day |
R70 | Permissible Return Entry Not Accepted / Notice Not Provided | 1 Banking Day |
R71 | Misrouted Dishonored Return | 1 Banking Day |
R72 | Untimely Dishonored Return | 1 Banking Day |
R73 | Timely Original Return | 1 Banking Day |
R74 | Corrected Return | 1 Banking Day |
R75 | Return Not a Duplicate | 1 Banking Day |
R76 | No Errors Found | Contested Return must be transmitted within 2 Banking Days |
R77 | Non-Acceptance of R62 Dishonored Return | Contested Return must be transmitted within 2 Banking Days |
R78 | Non-Acceptance of R68 Dishonored Return | 1 Banking Day |
R79 | Incorrect Data in Return Entry | 1 Banking Day |
R80 | IAT Entry | Contested Return must be transmitted within 2 Banking Days |
R81 | Non-Participant in IAT Program | Contested Return must be transmitted within 2 Banking Days |
R82 | Invalid Foreign Receiving DFI Identification | Contested Return must be transmitted within 2 Banking Days |
R83 | Foreign Receiving DFI Unable to Settle | Contested Return must be transmitted within 2 Bnkg. Days |
R84 | Entry Not Processed by Gateway | N/A |
R85 | Incorrectly Coded Outbound International Payment | 2 Banking Days |