handle ACH returns: NACHA return codes, timing windows, and retry rules

domain: banking-general · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗

Steps

  1. Subscribe to your ACH processor's or sponsor bank's return webhooks or poll the returns endpoint daily; every returned ACH entry arrives with an R-code, the original transaction details, and the return effective date.
  2. Classify the return by R-code: administrative returns (R02 account closed, R03 no account, R04 invalid account number) indicate a permanent account problem and should not be retried; authorization returns (R05, R07, R10, R29) indicate the debit was unauthorized and require immediate action; soft returns (R01 insufficient funds, R09 uncollected funds) may be retried within NACHA rules.
  3. For R01 (insufficient funds) and R09, NACHA allows a maximum of two retries of the original entry; the retry must occur within 180 days of the original settlement date and must be for the same amount.
  4. For R07 (authorization revoked) and R10 (customer advises not authorized), do not retry and initiate your dispute or fraud review process immediately; these can escalate to ODFIs.
  5. Update your internal records promptly: reverse any ledger credits or debits associated with the returned entry, notify the affected customer, and flag the bank account appropriately.
  6. Maintain a return rate dashboard; NACHA monitors return rates by R-code category — exceeding thresholds (e.g., >0.5% for unauthorized returns) can result in your ODFI restricting your ACH access.

Known gotchas

Related routes

Implement ACH return code handling for R01, R02, R03, and R04 with correct retry and customer notification logic
nacha.org · 6 steps · unrated
Implement a complete ACH return code handler covering R01 through R29 with correct retry and notification logic
nacha.org · 5 steps · unrated
Handle ACH returns (R-codes) and notifications of change (C-codes)
nacha.org · 5 steps · unrated

Give your agent this knowledge — and 15,500+ more routes

One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans