Skip to main content
A transfer may go through one of three exception flows:
  • A return is a transfer the receiving bank sends back, for reasons like a closed account, insufficient funds, or an unauthorized debit. You can return transfers you receive, and transfers you originate can be returned to you.
  • A reversal is a correcting entry you initiate to recover funds from a transfer you originated by mistake, such as a duplicate or a wrong amount.
  • A Notification of Change (NOC) is a message from the receiving bank that accepts your transfer but tells you a detail was incorrect, with the corrected value to use on future transfers.

Returns

You can return an ACH transfer you received for any valid reason with POST /v2/ach/{ach_id}/return. External banks can likewise return transfers you originate. Either way, the return is recorded on the original transfer. Its status moves through the return chain. A new entry is added to returns[] with the return_code, a short reason, and any details the returning bank sent. After the return posts, it also includes the core_transaction_id of the ledger entry that moved the funds back. See The returns block and ACH Statuses. The deadline depends on the return reason:
  • Standard returns must be available to the originating depository financial institution (ODFI) by the opening of business on the second business day after the original settlement date. A business day is a weekday that isn’t a Federal Reserve holiday.
  • Unauthorized debit returns (R05, R07, R10, R11) have until the opening of business on the 60th calendar day after settlement. They also need a signed Written Statement of Unauthorized Debit (WSUD). Get the WSUD before you start the return, and keep it for at least one year from the settlement date.
You can submit a return before the original transfer reaches posted. Lead accepts the return request immediately, but doesn’t send it to the Fed until the original transfer posts.

Return codes

The endpoint POST /v2/ach/{ach_id}/return handles every step of a return dispute, and the return_code you pass tells Lead which step you mean. A standard code starts a return. A dishonor code disputes a return you received. A contest code answers a dishonor of a return you sent. Whichever step you’re on, you call the endpoint against the original transfer’s ach_id, and the code has to fit where the transfer is in the return chain. The request body also accepts metadata. Standard return codes initiate a return against a transfer you received: A return can itself be disputed, and both sides of that dispute run through the same endpoint. Submitting a dishonor or contest code moves the original transfer through the corresponding return chain statuses (pending_dishonored_return, return_dishonored, pending_contested_return, return_contested). It also adds another entry to returns[] with type dishonored_return or contested_return. Dishonored return codes dishonor a return you received against a transfer you originated. Submit within 5 business days of the return settling: Contested dishonored return codes contest a dishonor of a return you issued. Submit within 2 business days of the dishonor settling:

Late returns

If you suspect an unauthorized debit after the return window has passed, contact Lead promptly with documentation that shows the authorization is invalid. Lead reviews the request and, if appropriate, asks the ODFI for permission to make a late return. A receiver can ask for a late return of a debit you originated. Nacha requires the originator, which is you, to keep proof of authorization for two years after the settlement date of the last debit. Keep these records ready so you can support or dispute a late return request.

Reversals

Use a reversal to correct a transfer you originated in error: a duplicate payment, a wrong amount, or a wrong receiver. Initiate it with POST /v2/ach/{ach_id}/reverse within five business days of the original settlement date. Reversals are only for genuine mistakes. Never use them to recover a transaction you believe is unauthorized. The request body takes reason, one of duplicate, receiver_incorrect, amount_incorrect, debit_too_early, or credit_too_late, plus optional metadata. How reversals behave:
  • A reversal is a separate ACH transfer in the opposite direction for the same amount, with its own lifecycle and the same statuses as any other transfer. Lead sets its statement_descriptor to REVERSAL.
  • Both transfers carry a reversal block with the reason and the other transfer’s ID in linked_ach_id. See The reversal block.
  • No webhooks fire on the original transfer when a reversal is created. Watch the reversal transfer for status webhooks.
  • A reversal can itself be returned by the receiving bank. The return appears in the reversing transfer’s returns[].
  • Lead can reject a reversal in review, for example when it is requested after the five-business-day limit. The reversing transfer moves to rejected with a rejection block, and the original is unaffected.

Return or reversal?

Who made the mistake decides which action you use. If you originated it, reverse it. If you received it, return it.

Notifications of Change

A receiving depository financial institution (RDFI) doesn’t have to return a transfer with a wrong detail. It can post the transfer and send back a Notification of Change (NOC), which says what was wrong and gives the right value to use from then on. You don’t need to parse Nacha change codes. Lead normalizes each NOC into a correction block on the original ACH transfer, containing only the fields that changed. At least one field is present: "correction": { "account_number": "1234567899", "routing_number": "123456789", "account_type": "checking" }
  • account_number: the corrected counterparty account number.
  • routing_number: the corrected counterparty routing number.
  • account_type: the corrected counterparty account type, checking or savings.
RDFIs must send an NOC within two business days of the original entry’s settlement date. Lead delivers it to you within two business days of settlement. Corrections arrive via the ach.corrected webhook or the Return/NOC file.

What you must do

Do the following:
  • The transfer that triggered the NOC processes as usual; no action is needed on it.
  • Update your counterparty records with the corrected values. Do this within six business days of receiving the correction, or before your next transfer to that receiver.
  • Do not keep using the old details. Lead might reject a subsequent transfer to a corrected counterparty with a rejection.details that references the ACH that carried the correction. Lead also monitors NOC activity and might reach out if the same correction keeps arriving.
Unmanaged NOCs have real consequences: Nacha can impose monetary penalties depending on frequency and volume. Those fines might be charged to you under the Lead ACH Agreement, and Nacha can bar repeat violators from the ACH network.

Mapping to Nacha change codes

If you reconcile against raw Nacha data, such as the Return/NOC file, the common change codes map to correction fields as follows: