There are complexities with every payments system—for ACH payments, return codes are one of those potentially complex items. In this post we’ll explore some reasons for why an ACH payment may go bad and then tell you what you can do about it.
First, the basics. If you’re brand new to dealing with ACH payments, here’s a quick overview. ACH stands for the Automated Clearing House—it’s an electronic network allowing banks and their customers to send funds between one another in the US. Think about when you pay a bill online using your bank account, here your payment is being processed using ACH.
For more explanation, check out ACH for beginners.
Common ACH Reject Codes
There are hundreds of ACH return codes, but some common codes are R01, R02, R03, R04, R10, and R20. We’ll explain those below, but head here for a full list of the possible ACH return codes in the system.
R01 – Insufficient funds
The available and/or cash reserve balance is not sufficient to cover the dollar value of the debit entry. Basically, there were insufficient funds to complete a debit transaction.
R02 – Account closed
A previously active account has been closed by action of the customer or the RDFI. In other words, the bank account is closed, and this transaction should not be re-submitted.
R03 – No account or unable to locate account
The account number structure is valid and it passes the C heck digit validation, but the account number does not correspond to the individual identified in the entry, or the account number designated is not an existing account.
Essentially, the routing or account number got fudged or mistyped, therefore it couldn’t be used. This is a simple, yet common mistake—on the bright side it’s easily avoidable (see tips for avoiding return codes below).
R04 – Invalid account number
The account number structure is not valid. The entry may fail the Check digit validation or may contain an incorrect number of digits. This means that the account number entered is definitely not valid, for instance your customer may have entered only half of the digits needed for a routing number.
Stay Updated With Dwolla
R10 – Customer advises unauthorized, improper, ineligible, or part of an incomplete transaction
The financial institution has been notified by the receiver (ie. customer) that the entry is unauthorized, improper or ineligible. Someone has contacted their bank and taken action to stop the transaction.
R20 – Non-transaction account
The ACH entry destined for a non-transaction account, for example an account against which transactions are prohibited or limited. Basically, the bank account entered can’t be used for ACH transactions.
Tips for avoiding return codes
Now that you have a grasp of some of the reasons ACH transactions can go bad, here are quick and easy tips to avoid receiving ACH return codes.
- Ensure that your customer’s or user’s routing and account number is entered correctly before confirming entry. It’s easy to miss a digit or type something incorrectly when you’re hurrying to pay a bill, so it’s critical they slow down and pay attention to detail.
- If a prepaid checking account involved, make sure this bank allows for receiving ACH credits and debits. Per the R20 code, not all accounts can be used for ACH transactions, so it’d be beneficial to confirm this isn’t the case.
- Ensure you or your customer’s funds have cleared the respective bank account and are available to before using those funds to make subsequent transactions to another party.
If you receive a return code, contact your bank to find out why they issued a return and what you can do to remedy the situation.
Dwolla, for better ACH payments
Dwolla is here every step of the way to get you up and running with ACH payments. Whether you’re a developer, product manager, or someone with very little tech know-how, we can help you understand when and where to build ACH into your payments process.
If you’re dealing with several of ACH return codes, check out Dwolla’s Instant Bank Account Verification process (IAV)—great for platforms. Just reach out below to learn more!