Skip to main content
An account number is a routable payment address that references one balance and belongs to one entity. You create one with POST /v2/account_numbers, update its controls and metadata with PATCH /v2/account_numbers/{account_number_id}, and read it with GET /v2/account_numbers/{account_number_id}. Create and register require an Idempotency-Key header. See Idempotency. This example is the account number on Acme’s operating account, held by Acme’s own entity. It sends ACH under Acme’s main originator, so ach_controls.originator_id is set. Acme has locked it down. Incoming ACH debits come only from its two payroll tax processors. Outgoing ACH and wires go only to a short list of vendor accounts. International wires are off, and internal transfers run only against Acme’s settlement account. Incoming instant payments are open.
Every block is present in every status. The controls blocks always have a value, even the default. One field is conditional: ach_controls.originator_id. It’s set only when the balance is a core balance, because an originator settles to a core balance and the two must match. On a user deposit balance it’s always null. Entries go out under the originator Lead configured for your program at onboarding.

Fields

The table lists each field on the object.

The balance block

The table lists the fields in the balance block. The balance is set on create and can’t be changed. For core_balance, the balance must sit on a direct core account that Lead has enabled for account number creation. For user_deposit_balance, payments on the account number settle to the FBO core balance the user deposit balance sits on. This example is an account number for one of Acme’s customers, on that customer’s user deposit balance. Acme kept every control at its default, so the account number accepts and sends on every rail.
"originator_id": null[a], "incoming": { "accept_credit": true, "accept_debit": true, "counterparty_filter": "accept_all", "counterparty_company_ids_allowlist": [] }, "outgoing": { "counterparty_filter": "accept_all", "counterparty_account_numbers_allowlist": [] } }, "wire_controls": { "incoming": { "counterparty_filter": "accept_all", "counterparty_account_numbers_allowlist": [] }, "outgoing": { "counterparty_filter": "accept_all", "counterparty_account_numbers_allowlist": [] }, "outgoing_international": { "counterparty_filter": "accept_all", "counterparty_international_account_numbers_allowlist": [] } }, "internal_transfer_controls": { "incoming": { "counterparty_filter": "accept_all", "counterparty_account_number_ids_allowlist": [] }, "outgoing": { "counterparty_filter": "accept_all", "counterparty_account_number_ids_allowlist": [] } }, "instant_payment_controls": { "incoming": { "counterparty_filter": "accept_all", "counterparty_account_numbers_allowlist": [] }, "outgoing": { "counterparty_filter": "accept_all", "counterparty_account_numbers_allowlist": [] } }, "metadata": {}, "created_at": "2026-10-08T11:40:27Z", "updated_at": "2026-10-08T11:40:27Z" }

Payment controls

Each rail has a controls block that you set on create and change with PATCH. The fields, the counterparty_filter values (accept_all, allowlist_only, reject_all), the allowlist fields, and the default behavior are documented on Payment controls. ach_controls.originator_id names the originator this account number sends ACH under. The originator’s core_balance_id must match the account number’s balance. A mismatch returns 422. See The Originator Object.

Creating an account number

POST /v2/account_numbers and POST /v2/account_numbers/register take the same body, except that register also requires account_number. Lead checks the following before it creates the account number. Each failure returns 422.

Listing account numbers

GET /v2/account_numbers returns a list (objects, has_more). Filter by any of: Account numbers on balances Lead holds are included in list results.

Coming from v1

A v2 account number replaces the v1 account number. Account numbers created on /v1/account_number are readable on /v2/account_numbers with balance populated.