Update a card
Update a card’s state and / or its bound fundingSources. At least one of the two fields must be supplied.
statetransitions are limited toACTIVE ⇄ FROZENandACTIVE | FROZEN → CLOSED.CLOSEDis terminal and irreversible. Any other transition returns409 INVALID_STATE_TRANSITION.fundingSources, when supplied, fully replaces the card’s bound funding sources. Array order determines the priority Authorization Decisioning tries them in. Each id must belong to the cardholder and be denominated in the card’s currency; the list must contain at least one source.fundingSourcescannot be supplied alongsidestate: CLOSED.
Because both updates are sensitive state changes, this endpoint uses Grid’s 202 → signed-retry pattern (same shape as DELETE /auth/credentials/{id} and POST /internal-accounts/{id}/export):
-
Call
PATCH /cards/{id}with the target fields and no signing headers. The response is202with apayloadToSign,requestId, andexpiresAt. -
Sign the
payloadToSignwith the session private key of a verified authentication credential on the card’s owning internal account and retry with the signature as theGrid-Wallet-Signatureheader and therequestIdechoed back as theRequest-Idheader. The signed retry returns200with the updatedCard.
Effects:
state: FROZEN: Authorization Decisioning declines new auths withCARD_PAUSED. Existing pulls and in-flight reconciliation continue — freezing does not pause the lifecycle of authorizations that already passed.state: ACTIVE: normal authorization behavior resumes.state: CLOSED: terminal close. The card transitions tostate: "CLOSED"withstateReason: "CLOSED_BY_PLATFORM"and stays in the system for audit and reconciliation. All pending auths reconcile to a terminal state via the existing reconcile primitive. Inbound clearings received after close follow the standard force-post / late-presentment path — Lightspark absorbs the loss if a post-hoc pull on the now-unbound source fails. Funding-source bindings are detached. Refunds already in flight still complete because Lightspark holds the card-reserve keys.fundingSourceschange: emitscard.funding_source_changereflecting the new ordered binding.
The card.state_change webhook fires on every successful state transition; the card.funding_source_change webhook fires whenever fundingSources is updated.
Documentation Index
Fetch the complete documentation index at: https://ramps-05-22-docs-annotate-cards-intro-snippet-triggers-mint.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Authorizations
API token authentication using format <api token id>:<api client secret>
Headers
Signature over the payloadToSign returned in a prior 202 response, produced with the session private key of a verified authentication credential on the card's owning internal account and base64-encoded. Required on the signed retry; ignored on the initial call.
The requestId returned in a prior 202 response, echoed back on the signed retry so the server can correlate it with the issued challenge. Required on the signed retry; must be paired with Grid-Wallet-Signature.
Path Parameters
System-generated unique card identifier
Body
Update request for PATCH /cards/{id}. At least one of state or fundingSources 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. fundingSources, when supplied, fully replaces the card's bound funding sources — the array order determines the priority Authorization Decisioning tries them in.
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.
ACTIVE, FROZEN, CLOSED "FROZEN"
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.
1[
"InternalAccount:019542f5-b3e7-1d02-0000-000000000002",
"InternalAccount:019542f5-b3e7-1d02-0000-000000000003"
]Response
Signed retry accepted. Returns the updated card.
System-generated unique card identifier
"Card:019542f5-b3e7-1d02-0000-000000000010"
The id of the Customer who holds this card.
"Customer:019542f5-b3e7-1d02-0000-000000000001"
Lifecycle state of a card.
| State | Description |
|---|---|
PENDING_KYC | The cardholder has not yet completed KYC. Cards in this state cannot transact. |
PENDING_ISSUE | The card has been requested and is being provisioned with the issuer. |
ACTIVE | The card is live and can authorize transactions. |
FROZEN | The card is temporarily disabled by the platform. New authorizations are declined with CARD_PAUSED. Existing settlements and refunds continue to reconcile. |
CLOSED | The card is permanently closed. Terminal, irreversible state. |
PENDING_KYC, PENDING_ISSUE, ACTIVE, FROZEN, CLOSED Physical form factor of the card. Only VIRTUAL is supported in v1;
PHYSICAL will be added in a later release.
VIRTUAL 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.
[
"InternalAccount:019542f5-b3e7-1d02-0000-000000000002",
"InternalAccount:019542f5-b3e7-1d02-0000-000000000003"
]Creation timestamp
"2026-05-08T14:10:00Z"
Last update timestamp
"2026-05-08T14:11:00Z"
Platform-specific card identifier. Optional on create — system-generated if omitted, mirroring platformCustomerId semantics.
"card-emp-aary-001"
Reason associated with the current state. Populated when the card is CLOSED or when provisioning was rejected; otherwise null.
ISSUER_REJECTED, CLOSED_BY_PLATFORM, CLOSED_BY_GRID Card network brand. Read-only — determined by Grid when the card is provisioned with the issuer.
VISA, MASTERCARD Last four digits of the card PAN.
"4242"
Card expiration month (1–12).
1 <= x <= 1212
Card expiration year (four digits).
2029
URL of the card issuer's iframe that securely displays the PAN, CVV, and expiry to the cardholder. The full PAN and CVV never cross Grid's servers — render this URL in an iframe in your client to reveal card details.
"https://embed.lithic.com/iframe/...?t=..."
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.
"USD"
Opaque identifier for the card on the underlying issuer. Useful for cross-referencing in issuer dashboards; not used for any Grid request routing.
"lithic_card_4f8d3a2b1c"