Skip to main content
Lead creates an ACH object for every entry your program sends and every entry it receives. You create outgoing entries with POST /v2/ach and read them with GET /v2/ach and GET /v2/ach/{ach_id}. Returns, dishonored returns, contested returns, reversals, rejections, and corrections are recorded on the same object. POST /v2/ach requires an Idempotency-Key header. See Idempotency. This example is an incoming debit. A gym pulled $50 from an Acme customer’s account number, and the entry posted. The customer told Acme the debit wasn’t authorized, so Acme returned it with POST /v2/ach/{ach_id}/return and return code R10. The return posted, and the entry is now returned.
The core balance has two core transactions: the debit from when the entry posted, linked at the top level, and the credit from when the return posted, linked on the returns[] entry.

Fields

The table lists each field on the object.

The record details block

The table lists the fields in the record details block.

The counterparty block

The table lists the fields in the counterparty block.

The returns block

Each entry in returns[] is one return event on the ACH. A return, a dishonored return, and a contested return are all returns. The return_code tells you which.

The reversal block

The table lists the fields in the reversal block. POST /v2/ach/{ach_id}/reverse takes reason with the same values and creates a new outgoing entry in the opposite direction for the same amount. There is no free-text field, because Nacha reversals don’t have one.

The rejection block

The table lists the fields in the rejection block.

The correction block

Set when the counterparty’s bank sends a Notification of Change. Update your counterparty records from it before your next entry to that counterparty.

The IAT details block

Set on incoming IAT entries only. Lead doesn’t originate IAT.

Listing entries

GET /v2/ach returns a list (objects, has_more) sorted newest first. Filters:

Coming from v1

A v2 ACH object replaces the v1 ACH object. Entries created on /v1/ach are readable on /v2/ach. The create request body is unchanged.