Create a prenote entry (zero-dollar ACH entry) with the same SEC code (e.g., PPD, CCD) as the intended live debit; set the transaction code to the prenote variant (e.g., 23 for checking debit prenote, 28 for savings debit prenote)
Submit the prenote to your ODFI (Originating Depository Financial Institution) in a standard NACHA-formatted ACH file; the prenote is batched and transmitted in the next available ACH window
Record the prenote submission date; NACHA rules require a minimum waiting period of 3 banking days between prenote submission and the first live debit using that account — enforce this programmatically
During the waiting period, monitor for return entries against the prenote: an R03 (no account/unable to locate) or R04 (invalid account number) on a prenote means the account does not exist and the live debit must be blocked
After the waiting period expires with no prenote return, mark the account as validated and allow live debit origination; store the validation timestamp and prenote trace number for audit
If a Notification of Change (NOC/COR) is received after the prenote, apply the C-code corrections (e.g., C01 incorrect account number, C02 incorrect routing number) before originating the live entry
Known gotchas
The 3-banking-day waiting period counts only business days on which ACH is processed — weekends and Federal Reserve holidays do not count; use the Fed's ACH holiday calendar to compute the correct go-live date
Prenote returns have a longer return window than live entry returns (up to 60 days for some return codes on prenotes); do not assume a non-return after 3 days means the account is fully clean — monitor for late returns
Some ODFIs and BaaS providers have simplified or eliminated prenote requirements in favor of instant account verification (Plaid Auth, micro-deposits); confirm your ODFI's current policy before implementing a prenote-based flow
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