Skip to main content
Lead runs validation checks on every ACH entry it processes, outgoing and incoming. A failure takes one of two paths:
  • Synchronous. The check fails at submission time. POST /v2/ach returns 422 and creates no entry. Fix the request and resend it.
  • Asynchronous. The check runs after Lead receives the entry. An outgoing entry moves to rejected, directly or after under_review. You receive an ach.rejected webhook with the entry’s rejection.reason and rejection.details.
The table lists each check, how to avoid it, and which path a failure takes.

Reading a rejection

On an asynchronous rejection, rejection.reason is a value from a closed set. rejection.details is free text that names the specific problem, for example the account number that was inactive. Branch on reason and show details to operators. See The rejection block.