Guide · ChargeWarden
ACH Return Codes: What Each One Means
ACH return codes R01 to R85 explained for online stores: what each common code means, its return window, whether you can retry, and what to do next.
By the PluginLoom teamUpdated 7 min read10 sources
Our plugin for this
ChargeWarden from $129/yr
Card-testing and fraud protection for WooCommerce, with order risk scores you can read.
- 14-day store credit
- Secure checkout by Stripe
- Updates and support for a year
ChargeWarden from $129/yr
Buy ChargeWardenShort answer: an ACH return code is the two-character reason, from R01 to R85, that a customer's bank gives when it sends an ACH payment back. For an online store taking ACH debits, a handful of codes matter most: R01 (insufficient funds), R02, R03 and R04 (closed, missing or invalid account), and R10, R11, R05, R07 and R29 (unauthorized). Most returns arrive within 2 banking days of settlement; unauthorized consumer returns can arrive up to 60 calendar days later. Each code tells you whether you can retry, whether you need a new account, or whether you need to stop debiting that customer.
Key terms#
- Return: a settled ACH entry sent back by the receiving bank (the RDFI), with a reason code. The money is taken back from you.
- Originator: you, the business that starts the debit.
- SEC code: the code that says how the debit was authorized. Online consumer debits are WEB; business-to-business debits are often CCD.
- Return rate: returns divided by debits over the last 60 days or two calendar months, which Nacha and payment providers watch.
The codes an online store sees most#
Descriptions below follow Plaid's published ACH return code list; families follow Nacha's rate rules.
| Code | Meaning | Window (typical) | Rate family | What to do |
|---|---|---|---|---|
| R01 | Insufficient funds | 2 banking days | Overall | Retry once funds are likely there; Plaid allows up to 2 retries |
| R02 | Account closed | 2 banking days | Administrative | Ask for a different account; do not retry |
| R03 | No account, or unable to locate account | 2 banking days | Administrative | Ask the customer to link the account again; check the name matches |
| R04 | Invalid account number | 2 banking days | Administrative | Re-verify the account; often a typo or an expired tokenized number |
| R05 | Unauthorized debit to a consumer account using a business SEC code | Up to 60 days | Unauthorized | Use WEB, not CCD, for consumers |
| R07 | Authorization revoked by customer | Up to 60 days | Unauthorized | Stop debiting; cancel the subscription |
| R08 | Payment stopped | 2 banking days | Overall | Contact the customer before trying again |
| R09 | Uncollected funds | 2 banking days | Overall | Retry a few days later; Plaid allows up to 2 retries |
| R10 | Customer advises not authorized | Up to 60 days | Unauthorized | Do not resubmit; review your authorization flow |
| R11 | Entry not in accordance with the terms of the authorization | Up to 60 days | Unauthorized | Check amount, date and schedule against what the customer agreed |
| R16 | Account frozen | 2 banking days | Overall | Ask for another payment method |
| R20 | Non-transaction account | 2 banking days | Overall | Ask for a checking account |
| R29 | Corporate customer advises not authorized | 2 banking days | Unauthorized | The business must tell its bank to allow your debits |
Nacha's unauthorized family is R05, R07, R10, R11, R29 and R51 (R11 was added on 1 April 2020). The administrative family is R02, R03 and R04. Everything counts toward the overall rate.
What the rest of the list covers#
Plaid's list runs to R85. Most of the other codes are technical or rare for a store:
- File and format errors: R17 (fields rejected), R18 (improper effective entry date), R19 (amount field error), R25 (addenda error), R26 (mandatory field error), R27 (trace number error), R28 (routing number check digit).
- Bank status: R12 (branch sold to another bank), R13 (invalid ACH routing number), R34 (limited participation bank).
- Account holder status: R14 (representative payee deceased) and R15 (beneficiary or account holder deceased).
- Credit-only codes: R23 (credit entry refused by receiver), for example a refund the customer's bank would not accept.
- Duplicates: R24 (duplicate entry).
If you use a processor or Plaid, these usually point to a setup problem rather than a customer problem. Contact your provider.
Return windows: why 60 days matters#
Plaid's documentation explains the two windows. Most returns, "including all R01 'insufficient funds' returns", must come back within 2 banking days of settlement. "However, for ACH returns in which the consumer alleges that the transaction was unauthorized, including return codes such as R10 or R11, the window is 60 calendar days."
The SEC code changes the window too. Plaid notes that consumer codes (WEB, TEL) allow unauthorized returns for up to 60 calendar days even if the debit went to a business account, and that debiting a consumer with the business code CCD can be returned for up to 60 days with R05.
In practice: if you ship two banking days after settlement, you are safe from R01 to R04, but not from R10 or R11.
What does it cost to ignore return codes?#
Return codes are an early warning system. Ignoring them costs you three ways.
- Lost goods and fees. Each return reverses money you may already have spent or shipped against.
- Return-rate limits. Nacha's levels are 0.5% for unauthorized returns, 3.0% for administrative returns and 15.0% overall. Nacha says going above the administrative or overall level starts an inquiry rather than being an automatic violation. Payment providers can be stricter: Plaid's limits for Plaid Transfer are 0.4% unauthorized, 2.5% administrative and 12% overall over 60 days, and Plaid says failing to bring rates down within three months "may result in a fine" and could lead to losing access.
- Fraud monitoring duties. Since Nacha's Phase 2 fraud monitoring rule (19 June 2026, in practice 22 June) every business that originates ACH debits must run risk-based processes to spot fraudulent entries and review them at least once a year. A rising R10 count is exactly what those processes should catch.
The rate maths is covered step by step in Nacha return rate thresholds, and the monitoring rule in Nacha fraud monitoring rule 2026.
A worked example: one month of returns#
A store sends 1,000 WEB debits in the 60 days to 31 October. In the same period it receives these returns:
| Code | Count | Family |
|---|---|---|
| R01 | 22 | Overall only |
| R03 | 9 | Administrative |
| R04 | 6 | Administrative |
| R10 | 4 | Unauthorized |
| R11 | 2 | Unauthorized |
Using Nacha's first method (returns divided by debits originated in the same 60 days):
- Unauthorized: (4 + 2) ÷ 1,000 = 0.6%. That is above Nacha's 0.5% level and Plaid Transfer's 0.4% limit. This is the number to fix first.
- Administrative: (9 + 6) ÷ 1,000 = 1.5%. Below 3.0%, but every one of those 15 was avoidable with account validation.
- Overall: 43 ÷ 1,000 = 4.3%. Well below 15%.
The R10 and R11 returns point to the checkout wording and the statement description. The R03 and R04 returns point to typed account numbers without validation. R01 is mostly timing and balance.
Our plugin for this
ChargeWarden from $129/yr
Card-testing and fraud protection for WooCommerce, with order risk scores you can read.
How to handle a return, step by step#
- Read the code first, not just the amount. It tells you who has to act.
- Pause fulfilment for that order or membership until it is resolved.
- For R01 or R09, wait for the customer's next likely payday, then retry. Plaid requires a retry to be labelled "Retry 1" or "Retry 2" and allows no more than two.
- For R02, R03, R04, R16 or R20, email the customer and ask them to link or enter a different account. Do not retry the same one.
- For R07, R10 or R11, stop all future debits to that account. Check what the customer agreed to, the amount and the date. Keep your proof of authorization.
- For R29, ask the business customer to tell its bank to allow debits from your company.
- Log every return by code and look at the 60-day trend each month, split into unauthorized, administrative and overall.
How to prevent the most common returns#
| Code | Prevention |
|---|---|
| R01, R09 | Check the real-time balance before larger debits; avoid debiting on a Friday with Standard ACH; send reminders before recurring debits |
| R02, R03, R04 | Validate the account on first use, as Nacha requires for WEB debits; a bank login validates it on the spot |
| R10 | Show clear authorization wording and use a statement description customers recognize |
| R11 | Debit exactly the amount and date you showed; notify customers before any change |
| R05 | Use the WEB code for consumers |
| R07 | Make cancelling easy, so customers cancel with you instead of their bank |
How ChargeWarden and BankBridge help#
For stores that take ACH debits with BankBridge and Plaid Transfer, ChargeWarden reads every entry and every return. It shows rolling 60-day unauthorized, administrative and overall return rates against Nacha's 0.5%, 3% and 15% levels, and emails you as a rate gets close. It records how each WEB debit account was validated through Plaid when the debit was created, and flags first-use accounts with no record. A monthly PDF and CSV report lists volumes, return rates and returns by code, which you can share with your bank. The report supports your own risk-based process; it is not a certification, and your bank calculates the official rates.
On the BankBridge side, Plaid's bank login, balance check and Signal return-risk score stop many R01 to R04 returns before the debit is sent.
See the ACH monitoring doc, look around the live demo, or get ChargeWarden.
This guide is general information, not legal advice. Nacha's own Return Reason Code Guide is a paid booklet; descriptions here follow Plaid's public list and Nacha's public rule pages, checked 24 October 2026.
Frequently asked questions
What would cause an ACH return?
The customer's bank sends a debit back when it cannot or will not post it. The most common reasons are insufficient funds (R01), a closed account (R02), an account number that does not exist (R03) or is invalid (R04), and a customer saying the debit was not authorized (R10) or did not match what they agreed to (R11).
How long does a returned ACH take?
Plaid's documentation says most returns, including all R01 insufficient-funds returns, must come back within 2 banking days of settlement. Returns where a consumer says the debit was unauthorized, such as R10 or R11, can come back for up to 60 calendar days.
Can an ACH return be reversed or retried?
A return cannot be undone by the merchant, but some debits can be sent again. Plaid allows a returned transfer to be retried up to 2 times, and only for R01 (insufficient funds) and R09 (uncollected funds). You cannot resubmit after an R10. For other codes, fix the cause, such as getting a new account, and get a fresh authorization.
What is the most common ACH return code?
R01, insufficient funds. Plaid calls it "by far the most common return type". It counts toward Nacha's overall return level of 15%, not the unauthorized level.
What is the difference between R10 and R11?
R10 means the customer says they do not know you or never authorized you to debit their account. R11 means they did authorize you, but the debit did not match the terms, for example a wrong amount or date. Both count as unauthorized returns toward Nacha's 0.5% level, and both can arrive up to 60 days after settlement.
Sources
The date shows when we last checked that the source still says what we say it says.
- Plaid Docs: Transfer errors, ACH return codes (full list)plaid.com. Checked 2026-10-24
- Plaid Docs: Transfer errors and returns (windows, retries, return-rate limits)plaid.com. Checked 2026-10-24
- Plaid Docs: Creating transfers (SEC codes and return windows)plaid.com. Checked 2026-10-24
- Nacha: ACH Network Risk and Enforcement Topicsnacha.org. Checked 2026-10-24
- Nacha: Differentiating Unauthorized Return Reasonsnacha.org. Checked 2026-10-24
- Nacha: How to calculate the unauthorized return rate (PDF)nacha.org. Checked 2026-10-24
- Nacha: How to calculate the administrative or overall return rate (PDF)nacha.org. Checked 2026-10-24
- Nacha: Supplementing Fraud Detection Standards for WEB Debitsnacha.org. Checked 2026-10-24
- Nacha: Fraud Monitoring Phase 2nacha.org. Checked 2026-10-24
- Nacha: Return Reason Code Guide (paid booklet, listing page)nacha.org. Checked 2026-10-24
The short version
Put this guide to work with ChargeWarden
The problem
Card-testing bots hit the WooCommerce checkout and the Store API with stolen cards, which can bring fees, disputes and trouble with your payment provider.
How ChargeWarden solves it
ChargeWarden limits attempts on both checkouts, scores every order with written reasons, tracks ACH return rates for BankBridge stores and inventories the scripts on your payment pages.
Plans
Single store
$129per year
Buy ChargeWarden, Single store5 storesRecommended
$199per year
Buy ChargeWarden, 5 storesUnlimited stores
$349per year
Buy ChargeWarden, Unlimited stores
- 14-day store credit
- Secure checkout by Stripe
- Updates and support for a year