> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lead.bank/llms.txt
> Use this file to discover all available pages before exploring further.

# Payment controls

> Block or allow ACH, wire, instant payment, and internal transfer activity on each account number, and the defaults Lead applies by entity role.

Each account number has a controls block for each rail. You set them on `POST /v2/account_numbers` and change them with `PATCH /v2/account_numbers/{account_number_id}`.

## How it works

Each block has an `incoming` side and an `outgoing` side. Wires also have `outgoing_international`. On each side, `counterparty_filter` decides who the account number can transact with:

* `accept_all`: every counterparty is allowed.
* `allowlist_only`: only the counterparties in the matching allowlist are allowed.
* `reject_all`: every counterparty is blocked.

Incoming ACH also has `accept_credit` and `accept_debit`, so you can take credits but refuse debits.

Lead rejects contradictory combinations with `422`, such as `accept_credit` `false` together with `counterparty_filter` `accept_all`.

## Defaults

When you don't set a control, Lead applies a default from the role of the entity that holds the account number. For an `account_holder`, the defaults are fully open:

* `accept_credit` `true`
* `accept_debit` `true`
* `counterparty_filter` `accept_all` on every side

For a `minor_account_holder` or `authorized_user`, the defaults turn off the outgoing rails that role can't use.

| Role | Outgoing credit (send) | Outgoing debit (pull) | Incoming |
| - | - | - | - |
| `account_holder` | ACH, domestic wire, international wire, instant payments, blockchain payments | ACH | Unrestricted |
| `minor_account_holder` | ACH, instant payments | ACH | Unrestricted |
| `authorized_user` | None | None | Unrestricted |

The table also sets the limit on what you can turn on. A PATCH or create request that turns on an outgoing rail the role doesn't allow returns `422`. Lead never rewrites your controls when a role changes. When an entity's role allows more, you update the controls yourself.

## Microdeposits and reversals

Your controls never block ACH microdeposits or reversals. You need them to verify accounts and fix errors, so they go through.

## ACH

The table lists the ACH controls.

| Attribute | Type | Description |
| - | - | - |
| `ach_controls.originator_id` | string or null | The originator this account number sends ACH under. The originator's `core_balance_id` must be the account number's balance. Only settable on an account number whose balance is a core balance. See [The Originator Object](https://docs.lead.bank/v2/products/originators/originator-object.md). |
| `ach_controls.incoming.accept_credit` | boolean | Whether the account number can receive ACH credits. |
| `ach_controls.incoming.accept_debit` | boolean | Whether the account number can receive ACH debits. |
| `ach_controls.incoming.counterparty_filter` | enum | Which counterparties can send ACH to this account number: `accept_all`, `allowlist_only`, or `reject_all`. |
| `ach_controls.incoming.counterparty_company_ids_allowlist` | array of strings | ACH company IDs permitted to send when `counterparty_filter` is `allowlist_only`. |
| `ach_controls.outgoing.counterparty_filter` | enum | Which counterparties this account number can send ACH to. |
| `ach_controls.outgoing.counterparty_account_numbers_allowlist` | array of objects | Permitted outgoing counterparties when `counterparty_filter` is `allowlist_only`. Each entry has `type` (`us_domestic`), `account_number`, and `routing_number`. |

## Wire

The table lists the wire controls.

| Attribute | Type | Description |
| - | - | - |
| `wire_controls.incoming.counterparty_filter` | enum | Which counterparties can send wires to this account number. |
| `wire_controls.incoming.counterparty_account_numbers_allowlist` | array of objects | Permitted incoming counterparties when `allowlist_only`. Each entry has `type`, `account_number`, and `routing_number`. |
| `wire_controls.outgoing.counterparty_filter` | enum | Which counterparties this account number can send domestic wires to. |
| `wire_controls.outgoing.counterparty_account_numbers_allowlist` | array of objects | Permitted outgoing domestic counterparties when `allowlist_only`. Each entry has `type`, `account_number`, and `routing_number`. |
| `wire_controls.outgoing_international.counterparty_filter` | enum | Which counterparties this account number can send international wires to. |
| `wire_controls.outgoing_international.counterparty_international_account_numbers_allowlist` | array of objects | Permitted outgoing international counterparties when `allowlist_only`. Each entry has `business_identifier_code` (8 or 11 character BIC) and `account_identifier` with `type` (`iban` or `account_number`) and `value` (1 to 34 characters). |

## Instant payments

The table lists the instant payment controls.

| Attribute | Type | Description |
| - | - | - |
| `instant_payment_controls.incoming.counterparty_filter` | enum | Which counterparties can send instant payments to this account number. |
| `instant_payment_controls.incoming.counterparty_account_numbers_allowlist` | array of objects | Permitted incoming counterparties when `allowlist_only`. Each entry has `account_number` and `routing_number`. |
| `instant_payment_controls.outgoing.counterparty_filter` | enum | Which counterparties this account number can send instant payments to. |
| `instant_payment_controls.outgoing.counterparty_account_numbers_allowlist` | array of objects | Permitted outgoing counterparties when `allowlist_only`. Each entry has `account_number` and `routing_number`. |

## Internal transfers

The table lists the internal transfer controls.

| Attribute | Type | Description |
| - | - | - |
| `internal_transfer_controls.incoming.counterparty_filter` | enum | Which account numbers can send internal transfers to this one. |
| `internal_transfer_controls.incoming.counterparty_account_number_ids_allowlist` | array of strings | Permitted sending `account_number_id` values when `allowlist_only`. |
| `internal_transfer_controls.outgoing.counterparty_filter` | enum | Which account numbers this one can send internal transfers to. |
| `internal_transfer_controls.outgoing.counterparty_account_number_ids_allowlist` | array of strings | Permitted receiving `account_number_id` values when `allowlist_only`. |

## Related

* [The Account Number Object](https://docs.lead.bank/v2/products/account-number/account-number-object.md)
* [Managing account numbers](https://docs.lead.bank/v2/products/account-number/managing.md)
* [Receiving ACH](https://docs.lead.bank/v2/products/ach/receiving-ach.md)
* [Sending ACH](https://docs.lead.bank/v2/products/ach/sending-ach.md)
