When returns arrive
Returns land within windows set by the ACH rules, which vary by reason:- Administrative returns (wrong or closed account, invalid number) usually arrive within about two banking days.
- Unauthorized returns (the account holder disputes the debit) can arrive up to 60 calendar days after settlement.
unauthorized, administrative, and
other, so you can treat them differently.
How Spritz surfaces a return
When a debit is returned:- The deposit’s
statusanddebitStatusbecomereturned, and the deposit carries areturnCodeandreturnReason. - The
achDebitReturn.createdwebhook fires, followed byachDebitReturn.updatedas details change.
cryptoStateAtReturn is the key exposure signal: a return before the crypto is released
costs you nothing, while a return after fully_confirmed delivery is a realized loss.
Common return codes
ACH return codes follow the NACHA standard (R01, R02, and so on). The ones you’ll
see most:
This is a subset. The full set of codes is defined by NACHA, and
returnReason carries
the human-readable text for whatever code applies.
Keeping return rates low
The ACH network holds originators to return-rate thresholds (for example, a low cap on unauthorized returns), and exceeding them can put ACH access at risk. To protect that, Spritz runs risk checks before every debit and may block a deposit, returning a409 at
create time before any funds move, rather than risk a costly return. Only debit
accounts your user has clearly authorized, and reconcile returns promptly.
Reconciling
1
Listen for the webhook
Subscribe to
achDebitReturn.created and achDebitReturn.updated so you learn about
returns as they happen.2
Assess exposure
Use
cryptoStateAtReturn and lossAmountUsd to decide whether the return is a real
loss or was caught before delivery.3
Act
Recover from the user where appropriate, and factor repeated returns into whether you
continue to offer ACH debit to that user.