Skip to content
PluginLoom

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

Short 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.

CodeMeaningWindow (typical)Rate familyWhat to do
R01Insufficient funds2 banking daysOverallRetry once funds are likely there; Plaid allows up to 2 retries
R02Account closed2 banking daysAdministrativeAsk for a different account; do not retry
R03No account, or unable to locate account2 banking daysAdministrativeAsk the customer to link the account again; check the name matches
R04Invalid account number2 banking daysAdministrativeRe-verify the account; often a typo or an expired tokenized number
R05Unauthorized debit to a consumer account using a business SEC codeUp to 60 daysUnauthorizedUse WEB, not CCD, for consumers
R07Authorization revoked by customerUp to 60 daysUnauthorizedStop debiting; cancel the subscription
R08Payment stopped2 banking daysOverallContact the customer before trying again
R09Uncollected funds2 banking daysOverallRetry a few days later; Plaid allows up to 2 retries
R10Customer advises not authorizedUp to 60 daysUnauthorizedDo not resubmit; review your authorization flow
R11Entry not in accordance with the terms of the authorizationUp to 60 daysUnauthorizedCheck amount, date and schedule against what the customer agreed
R16Account frozen2 banking daysOverallAsk for another payment method
R20Non-transaction account2 banking daysOverallAsk for a checking account
R29Corporate customer advises not authorized2 banking daysUnauthorizedThe 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.

  1. Lost goods and fees. Each return reverses money you may already have spent or shipped against.
  2. 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.
  3. 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:

CodeCountFamily
R0122Overall only
R039Administrative
R046Administrative
R104Unauthorized
R112Unauthorized

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#

  1. Read the code first, not just the amount. It tells you who has to act.
  2. Pause fulfilment for that order or membership until it is resolved.
  3. 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.
  4. 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.
  5. 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.
  6. For R29, ask the business customer to tell its bank to allow debits from your company.
  7. 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#

CodePrevention
R01, R09Check the real-time balance before larger debits; avoid debiting on a Friday with Standard ACH; send reminders before recurring debits
R02, R03, R04Validate the account on first use, as Nacha requires for WEB debits; a bank login validates it on the spot
R10Show clear authorization wording and use a statement description customers recognize
R11Debit exactly the amount and date you showed; notify customers before any change
R05Use the WEB code for consumers
R07Make 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.

  1. Plaid Docs: Transfer errors, ACH return codes (full list)plaid.com. Checked 2026-10-24
  2. Plaid Docs: Transfer errors and returns (windows, retries, return-rate limits)plaid.com. Checked 2026-10-24
  3. Plaid Docs: Creating transfers (SEC codes and return windows)plaid.com. Checked 2026-10-24
  4. Nacha: ACH Network Risk and Enforcement Topicsnacha.org. Checked 2026-10-24
  5. Nacha: Differentiating Unauthorized Return Reasonsnacha.org. Checked 2026-10-24
  6. Nacha: How to calculate the unauthorized return rate (PDF)nacha.org. Checked 2026-10-24
  7. Nacha: How to calculate the administrative or overall return rate (PDF)nacha.org. Checked 2026-10-24
  8. Nacha: Supplementing Fraud Detection Standards for WEB Debitsnacha.org. Checked 2026-10-24
  9. Nacha: Fraud Monitoring Phase 2nacha.org. Checked 2026-10-24
  10. 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

  • 14-day store credit
  • Secure checkout by Stripe
  • Updates and support for a year