Skip to main content
An outgoing ACH is a credit or a debit. A credit pushes funds from the balance behind your account number to the counterparty. A debit pulls funds from the counterparty into that balance.

Prerequisites

Before you send, check these:
  • Origination is configured at onboarding. Lead sets up your ACH originator identity (company name and company ID) on your program. You don’t pass originator details on requests.
  • Your token needs the ach/read_write scope.
  • The sending account number must be active, and its outgoing ACH controls must permit the counterparty. By default all counterparties are permitted.
  • The sending account number can’t be one Lead holds. Every rail returns an error for those.

Endpoints

You can use these endpoints:

Request requirements

The create request takes these fields: Optional fields include individual_id, descriptive_date, additional_information, and metadata. See Create an ACH for the full schema and The ACH Object for every response field.
A successful response returns the ACH object in scheduled, with core_balance_id already set to the core balance the entry posts to and core_transaction_id still null.

Statuses

An outgoing entry that passes validation moves from scheduled to processing, submitted, and posted. An entry that fails a validation rule goes to manual review. This table is an excerpt. ACH Statuses is the canonical reference, including the return chain. See the outgoing transition diagram for the full lifecycle, including the return chain.

Events

Act on webhooks rather than assuming success from the 200:

Canceling

POST /v2/ach/{ach_id}/cancel cancels an entry that is scheduled, under_review, or approved. After an entry is processing, it can’t be canceled. The call requires an Idempotency-Key.

Reversing

POST /v2/ach/{ach_id}/reverse creates a new outgoing entry in the opposite direction for the same amount. The body takes reason, one of duplicate, receiver_incorrect, amount_incorrect, debit_too_early, or credit_too_late. Both entries carry a reversal block linking them. See Returns, reversals, and exceptions.

Testing in sandbox

Outgoing ACH doesn’t advance on its own in sandbox: entries stay in scheduled until you advance them one status at a time with POST /v2/simulate/ach/{ach_id}/advance, naming the next status in the body. See Sandbox testing.