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.
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.
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.
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.
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.
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
NACHA return windows differ by R-code: most administrative returns must be sent within 2 banking days of settlement, but unauthorized debit returns (R05, R07, R10, R29) can arrive up to 60 calendar days after settlement, creating a long exposure window.
The two-retry rule for NSF returns applies per original entry; repackaging the payment as a new SEC code or changing any material field resets it to a new entry, which is permitted but must be clearly authorized in your user agreement.
Late returns (after the standard window) exist as R31–R33 for specific circumstances; your system must handle these, as they can arrive long after you consider the transaction settled.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp