ach return codes list

ACH Return Codes (R01–R85): A Plain-English Cheat Sheet + Fixes

ACH returns are inevitable—but they don’t have to be mysterious or expensive. This guide gives you a plain-English cheat sheet for the return codes you’ll see most often, plus fast fixes and prevention tactics you can roll into your workflows today. Use it to reduce NSF noise, protect processor ratios, and get cash flowing smoothly.

How ACH returns work (and why they matter)

ACH is batch-based. When a debit fails, your bank (RDFI) sends back a return code that explains why. Each code maps to a problem you can fix—anything from insufficient funds to an invalid account number or a revoked authorization. Handling returns well means:

·       Fewer repeat failures (lower costs, cleaner ratios)

·       Faster collections (less time in limbo)

·       Better customer experience (fewer “why did this fail?” tickets)

The codes you’ll see most (with plain-English fixes)

These 15–20 codes account for the vast majority of returns most businesses face.

Insufficient funds & timing

·       R01 — Insufficient Funds

Meaning: Not enough money in the account when you pulled.

Fix now: Retry after the customer’s typical deposit window (payday, daily settlement).

Prevent next time: Pre-debit reminder + “pick your due day” scheduling.

·       R09 — Uncollected Funds

Meaning: Money is in the account but not yet available (e.g., pending).

Fix now: Wait 24–48 hours, then retry once. Prevent next time: Align pulls to posting windows; avoid Mondays/holidays for certain segments.

Account status & data quality

·       R02 — Account Closed

Meaning: Account existed but is now closed.

Fix now: Ask for a new payment method.

Prevent next time: Re-verify accounts at renewal or whenever a payment fails.

·       R03 — No Account/Unable to Locate

Meaning: Routing OK, but account number doesn’t match.

Fix now: Confirm digits; capture a fresh authorization.

Prevent next time: Use bank account validation at onboarding. 

·       R04 — Invalid Account Number

Meaning: Bad account number format.

Fix now: Correct the account on file.

Prevent next time: Input validation + instant account verification. 

·       R16 — Account Frozen/Blocked

Meaning: FI placed a hold (legal, fraud, etc.).

Fix now: Request an alternate account or card.

Prevent next time: Have a fallback payment rail ready. 

·       R20 — Non-Transaction Account

Meaning: Savings/loan account can’t accept debits.

Fix now: Collect a checking account.

Prevent next time: Label fields clearly; auto-detect account type.

Authorization & customer-initiated stops

·       R07 — Authorization Revoked by Customer

Meaning: Customer canceled permission to debit.

Fix now: Cease debits, resolve dispute, obtain new signed auth before resuming.

Prevent next time: Clear cancel flow + timestamped consent records. 

·       R08 — Stop Payment

Meaning: Customer asked bank to stop this debit.

Fix now: Do not retry; contact customer for resolution.

Prevent next time: Reminder before pull; easy self-serve reschedule. 

·       R10 — Customer Advises Not Authorized

Meaning: Customer disputes that they ever authorized the debit.

Fix now: Provide proof (dated authorization, mandate).

Prevent next time: Strong authorization capture + confirmation receipt.

·       R29 — Corporate Customer Advises Not Authorized

Meaning: Business account says your debit wasn’t authorized.

Fix now: Provide corporate authorization (CCD/CTX).

Prevent next time: Use the correct SEC code and documented business mandate.

Routing & formatting

·       R13 — Invalid Routing Number

Meaning: The ABA routing number is incorrect.

Fix now: Correct the routing number.

Prevent next time: Mask/validate on entry; verify instantly.

·       R17 — File/Field Edit Error (Can’t Process)

Meaning: Something in the entry is malformed.

Fix now: Correct the field(s) and re-submit.

Prevent next time: Automated formatting checks before submission.

Sensitive cases

·       R14 — Representative Payee Deceased / R15 — Beneficiary Deceased

Meaning: Account holder or representative passed away.

Fix now: Suspend debits; follow your policy for estate/next-of-kin procedures.

Prevent next time: Flag and escalate accounts with repeated death-related returns.

·       R06 — Returned Per ODFI’s Request

Meaning: The originating bank recalled it (operational reason).

Fix now: Contact your provider; don’t auto-retry.

Prevent next time: Review provider guidance before resubmission.

Quick reference: what not to retry

·   R07, R08, R10, R29 (authorization/stop): do not retry until you have new authorization or a resolution with the customer.

·       R02, R04, R16, R20 (account/eligibility): fix the underlying account issue first—retries will fail.

·       R13, R17 (routing/format): correct the data; then resubmit.

OK to retry once (with timing): R01, R09 after deposits have posted.

Smart scheduling that reduces returns (real-world patterns)

·       Match cash-flow: Let customers choose weekly/bi-weekly/semi-monthly/monthly due days that mirror their income.

·      Nudge before you pull: Send a reminder 24–72 hours in advance with a one-click “reschedule” option.

·      Retry with purpose: If R01/R09, retry once at the predicted deposit window; don’t hammer accounts.

·   Avoid clumping: Skip holidays and first-business-day pileups for vulnerable segments.

·       Watch segments: New customers and high-variance earners benefit most from flexible dates.

Compliance & documentation basics (so you win disputes)

·   Capture consent the right way: SEC-code-appropriate authorization (PPD/WEB/TEL/ CCD/CTX) with date, time, IP or call log, and language.

·       Provide the receipt/mandate: Email/SMS confirmation of the authorization and schedule.

·       Honor revokes/stops immediately: Log the date/time; stop debits until resolved.

·       Keep records: You’ll need them for returns, audits, and processor inquiries.

Prevention toolkit (what to implement this quarter)

1.     Instant account validation at onboarding (micro-deposits fallback).

2.     Pre-debit reminders with self-serve date change.

3.     Retry logic tied to deposit windows (R01/R09 only).

4.     Return code routing (what retries, what blocks, what escalates).

5.     Clear cancel flow and fast support handoff for R07/R08/R10/R29.

6.     Analytics: Track return rate by reason code, cohort, day-of-week, and schedule type.

How Liftoff makes ACH returns manageable (and cheaper)

·       Account validation built-in to catch R02/R03/R04/R13 before they happen.

·       Smart reminders & intelligent retries to lower R01/R09 without manual work.

·       Return code rules engine to block bad retries and auto-route next steps.

·       Unified Portal & API for schedules, invoices with e-payments, and real-time status.

·     $0 fees on ACH pulls and $0 on debit card transactions, so you reduce returns and processing costs.

·       RTP for disbursement + ACH for collections to balance speed and margin.

TLDR

·   Most returns boil down to timing (R01/R09), bad data (R03/R04/R13), or authorization (R07/R08/R10/R29).

·       Retry only when it makes sense (e.g., R01 after deposits); fix root causes elsewhere.

·       Validation, reminders, and smart retries drive down returns—and costs.

·       Liftoff gives you the tools (and $0 ACH/debit) to make returns the exception, not the norm.

FAQs

What are ACH return codes?

They’re standardized reasons a bank sends back with a failed ACH entry. Each code points to a specific issue you can fix.

Which ACH return codes are most common?

Typically, R01 (Insufficient Funds), R03 (No Account), R04 (Invalid Account Number), R08 (Stop Payment), R10 (Not Authorized), and R29 (Corporate Not Authorized).

When should I retry a failed ACH?

Generally, only for R01 or R09, timed to the customer’s deposit cycle. Don’t retry authorization or account-status failures until you’ve fixed the cause.

How do I lower my ACH return rate?

Validate bank accounts at onboarding, send a reminder before the pull, let customers pick due dates, and use smart, limited retries.

Can I automate return handling?

Yes. With Liftoff you can map return codes to actions (retry, block, request new auth, switch rails) and reduce manual work.

Is there a full list of R01–R85?

Yes. Most businesses only encounter ~15–20 codes regularly, but you can keep a complete reference internally and train your team on the common ones first.

Back to blog