Skip to main content
Cards add five webhook event types on top of Grid’s existing webhook infrastructure. Signature verification (X-Grid-Signature) and retry behavior are identical to the rest of Grid — see Authentication and Webhooks for the underlying mechanics. One covers the card itself; the others cover a card transaction’s lifecycle.

Event types

All of them carry the standard envelope:
The id is unique per delivery and safe to use for idempotency.

CARD.STATE_CHANGE

The data payload is the post-change Card resource. Example — activation after issuance:
Common branches to handle in your consumer:
  • state: "ACTIVE" after PROCESSING — the card is live. To reveal the full card details, request a reveal with POST /cards/{id}/reveal right before rendering its short-lived panEmbedUrl in an iframe — webhook payloads never carry a reveal URL.
  • state: "CLOSED", stateReason: "ISSUER_REJECTED" — the issuer rejected provisioning; offer to issue a new card.
  • state: "FROZEN" / state: "ACTIVE" — reflect the freeze toggle in your UI.
  • state: "CLOSED", stateReason: "CLOSED_BY_PLATFORM" — close confirmed; stop showing the card.

Card-transaction lifecycle

The data payload is the whole post-change CardTransaction resource, the same shape GET /transactions returns for a CARD row, so you can upsert it by data.id without a follow-up read. Example — authorization approved:
Later deliveries for the same data.id carry the updated resource: settledAmount appears once a clearing posts, and status moves to PARTIALLY_SETTLED, SETTLED, DECLINED, or EXCEPTION. A merchant return has no event type of its own — it arrives as a CARD_TRANSACTION.SETTLED delivery for a new data.id with direction: "CREDIT" and originalTransactionId pointing at the purchase, so key your handling on data.id rather than on the event type. See Reconciliation for the underlying event model.

Idempotency & retries

Webhook deliveries are at-least-once. Track processed id values and return 200 on duplicates, or return 409 and let Grid stop retrying. Both shapes are accepted by Grid’s webhook infrastructure.