Skip to main content
Spending controls let you restrict how much a cardholder can spend per transaction, which merchant categories they can transact with, and which individual merchants they can transact with. These controls are optional and can be set at card creation or updated later.

Per-transaction limits

Set a maximum amount for each individual transaction. The limit must be greater than 0 and cannot exceed the system-defined maximum authorization threshold.

Set at card creation

Include spending_controls in the Create Card request:

Update on an existing card

Use the Update Card endpoint:
Response:
The change takes effect after the card.update.succeeded webhook fires.
Only the PER_TRANSACTION interval is currently supported. The currency matches the card’s card_currency. When omitted during card creation, the system defaults to the account-level maximum per-transaction authorization limit.

MCC controls

Merchant Category Code (MCC) controls restrict which types of merchants a card can transact with. You can define either an allowlist or a blocklist, but not both.

Allowlist (allowed_mcc)

Only transactions with MCCs in this list are accepted. All other MCCs are declined.

Blocklist (blocked_mcc)

Transactions with MCCs in this list are declined. All other MCCs are accepted.
allowed_mcc and blocked_mcc cannot be set at the same time. Set one or the other, or omit both.

Set MCC controls

Include risk_controls at card creation or use the Update Card endpoint:
Response:

Declined transaction example

When a transaction is declined due to MCC controls, the authorization webhook shows transaction_status: DECLINED with a description indicating the reason:

Merchant controls

Merchant controls restrict which individual merchants a card can transact with. Use them when MCC controls are too coarse — for example, to block one ride-hailing brand while leaving the rest of the category open.
Merchant controls are supported on Business Visa only. See Card products.

Find merchant codes

allowed_merchants and blocked_merchants take merchant codes, not merchant names. Look them up with List Merchant Brands. Filter by display_name (case-insensitive prefix match) or merchant_code (exact match). At least one filter is required — there is no way to list the whole catalog. Supplying both returns only the entries that match each filter.
Response:
A brand can span several catalog entries. Configure every entry you want covered — selecting Grab does not imply Grabtaxi.

Allowlist (allowed_merchants)

Only transactions with merchants in this list are accepted. All other merchants are declined.

Blocklist (blocked_merchants)

Transactions with merchants in this list are declined. All other merchants are accepted.
allowed_merchants and blocked_merchants cannot be set at the same time, and the list cannot exceed 20 entries. An unknown merchant code is rejected.

Set merchant controls

Include risk_controls at card creation or use the Update Card endpoint:
Response:
Retrieve Card returns the configured merchant codes under risk_controls:

Update and clear merchant controls

On Update Card, omitting allowed_merchants and blocked_merchants leaves the current configuration unchanged. Pass an empty array to clear it:
Switching between the two lists is a single call — setting a non-empty allowed_merchants clears any existing blocked_merchants, and the reverse.

How merchant and MCC controls interact

Merchant controls and MCC controls are evaluated independently, so one card can carry both. An update that touches only merchant fields leaves the existing MCC configuration in place, and an update that touches only MCC fields leaves the merchant configuration in place.