Skip to main content
PATCH
cURL

Authorizations

Authorization
string
header
required

API token authentication using format <api token id>:<api client secret>

Path Parameters

id
string
required

System-generated unique card identifier

Body

application/json

Update request for PATCH /cards/{id}. At least one of state, fundingSources, maxSpendPerTransaction, maxSpendPerDay, or maxTransactionsPerDay must be supplied. state transitions are limited to ACTIVE ⇄ FROZEN and ACTIVE | FROZEN → CLOSED; any other transition returns 409 INVALID_STATE_TRANSITION. CLOSED is terminal and irreversible and cannot be combined with fundingSources, maxSpendPerTransaction, maxSpendPerDay, or maxTransactionsPerDay. fundingSources, when supplied, fully replaces the card's bound funding sources — the array order determines the priority Authorization Decisioning tries them in.

state
enum<string>

Target state for the card. Permitted transitions are ACTIVE ⇄ FROZEN and ACTIVE | FROZEN → CLOSED. CLOSED is terminal and irreversible; once closed, the card stays in the system for audit and reconciliation but cannot transact again.

Available options:
ACTIVE,
FROZEN,
CLOSED
Example:

"FROZEN"

fundingSources
string[]

New ordered list of internal account ids to bind as funding sources. Fully replaces the previous binding. Each id must belong to the cardholder and be denominated in the card's currency. The list must contain at least one source — to stop a card from spending without removing all sources, transition it to FROZEN instead. Cannot be supplied alongside state: CLOSED.

Minimum array length: 1
Example:
maxSpendPerTransaction
integer<int64> | null

Replacement card-specific per-transaction cap, in the smallest unit of the card's currency. Omit this field to leave the current cap unchanged, supply null to clear it, or supply a positive integer to set it. When the platform config also supplies cardConfigs.maxSpendPerTransaction, Grid enforces the lower of the two values. Accepted only when the card's cardCapabilities.supportsSpendLimits is true. Cannot be supplied alongside state: CLOSED.

Required range: 1 <= x <= 9007199254740991
Example:

10000

maxSpendPerDay
integer<int64> | null

Replacement card-specific UTC-calendar-day cap, in the smallest unit of the card's currency. Omit this field to leave the current cap unchanged, supply null to clear it, or supply a positive integer to set it. When the platform config also supplies cardConfigs.maxSpendPerDay, Grid enforces the lower of the two values. Refunds, reversals, and authorization expiries do not restore capacity during the day. Accepted only when the card's cardCapabilities.supportsSpendLimits is true. Cannot be supplied alongside state: CLOSED.

Required range: 1 <= x <= 9007199254740991
Example:

25000

maxTransactionsPerDay
integer<int32> | null

Replacement card-specific cap on the number of transactions the card may authorize during one UTC calendar day. Omit this field to leave the current cap unchanged, supply null to clear it, or supply a positive integer to set it. When the platform config also supplies cardConfigs.maxTransactionsPerDay, Grid enforces the lower of the two values. Refunds, reversals, and authorization expiries do not restore capacity during the day. Accepted only when the card's cardCapabilities.supportsTransactionCountLimit is true. Cannot be supplied alongside state: CLOSED.

Required range: 1 <= x <= 2147483647
Example:

20

Response

Card updated. Returns the updated card.

id
string
required

System-generated unique card identifier

Example:

"Card:019542f5-b3e7-1d02-0000-000000000010"

customerId
string
required

The id of the Customer who holds this card.

Example:

"Customer:019542f5-b3e7-1d02-0000-000000000001"

state
enum<string>
required

Lifecycle state of a card.

Available options:
PENDING_KYC,
PROCESSING,
ACTIVE,
FROZEN,
CLOSED
form
enum<string>
required

Physical form factor of the card. Only VIRTUAL is supported in v1; PHYSICAL will be added in a later release.

Available options:
VIRTUAL
fundingSources
string[]
required

Internal account ids bound to this card as funding sources, in priority order — the first entry is tried first by Authorization Decisioning. Every card has at least one funding source.

Example:
maxSpendPerTransaction
integer<int64> | null
required

Card-specific cap on a single transaction, in the smallest unit of the card's currency. Null means the card has no card-specific cap. When the platform config also supplies cardConfigs.maxSpendPerTransaction, Grid enforces the lower of the two values without replacing this configured value. A transaction for exactly the effective limit is allowed.

Required range: 1 <= x <= 9007199254740991
Example:

5000

maxSpendPerDay
integer<int64> | null
required

Card-specific cap on cumulative new spend during one UTC calendar day, in the smallest unit of the card's currency. The window resets at 00:00 UTC. Null means the card has no card-specific daily cap. When the platform config also supplies cardConfigs.maxSpendPerDay, Grid enforces the lower of the two values without replacing this configured value. Refunds, reversals, and authorization expiries do not restore capacity during the day. Spend exactly equal to the effective limit is allowed.

Required range: 1 <= x <= 9007199254740991
Example:

25000

maxTransactionsPerDay
integer<int32> | null
required

Card-specific cap on the number of transactions the card may authorize during one UTC calendar day. The window resets at 00:00 UTC. Null means the card has no card-specific daily transaction cap. When the platform config also supplies cardConfigs.maxTransactionsPerDay, Grid enforces the lower of the two values without replacing this configured value. Each approved authorization counts once for the day it was authorized; refunds, reversals, and authorization expiries do not restore capacity during the day. A transaction that brings the day's count exactly to the effective limit is allowed.

Required range: 1 <= x <= 2147483647
Example:

20

createdAt
string<date-time>
required

Creation timestamp

Example:

"2026-05-08T14:10:00Z"

updatedAt
string<date-time>
required

Last update timestamp

Example:

"2026-05-08T14:11:00Z"

platformCardId
string

Platform-specific card identifier generated by the server.

Example:

"card-emp-001"

stateReason
enum<string>

Reason associated with the current state. Present when the card is CLOSED or when provisioning was rejected; absent otherwise.

Available options:
ISSUER_REJECTED,
CLOSED_BY_PLATFORM,
CLOSED_BY_GRID
brand
enum<string>

Card network brand. Read-only — determined by Grid when the card is provisioned with the issuer.

Available options:
VISA,
MASTERCARD
last4
string

Last four digits of the card PAN.

Example:

"4242"

expMonth
integer

Card expiration month (1–12).

Required range: 1 <= x <= 12
Example:

12

expYear
integer

Card expiration year (four digits).

Example:

2029

cardCapabilities
object

Actions supported for this card by the issuer selected at issuance. Present for cards whose program has been resolved; absent otherwise. These capabilities are fixed at issuance for the card's lifetime.

currency
string

Currency the card transacts in (ISO 4217 for fiat, tickers for crypto). Derived from the funding sources at issue time — all funding sources bound to a card must be denominated in the same card-eligible currency.

Example:

"USD"

processorRef
string

Opaque processor-side reference for the card (e.g. the Lithic card token). Useful for cross-referencing in the processor's dashboards; not used for any Grid request routing.

Example:

"card_b81c2a4f"

issuerRef
string

Opaque identifier for the card on the issuer of record (e.g. the Lead Bank account/card identifier). Useful for cross-referencing in issuer dashboards; not used for any Grid request routing.

Example:

"lead_card_7a1b9c3d"