CARD_TRANSACTION.* family 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.
Event types
All of them carry the standard envelope:
id is unique per delivery and safe to use for idempotency.
CARD.STATE_CHANGE
Thedata payload is the post-change Card resource. Example —
activation after issuance:
state: "ACTIVE"afterPROCESSING— the card is live. To reveal the full card details, request a reveal withPOST /cards/{id}/revealright before rendering its short-livedpanEmbedUrlin 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.FUNDING_SOURCE_CHANGE
Fires whenever aPATCH /cards/{id} call changes the fundingSources
array. The data payload is the full Card resource with the
post-change fundingSources, so a consumer that only cares about the
current set of bindings can replace state wholesale.
The CARD_TRANSACTION.* family
Fires on every state transition of aCardTransaction — the webhook
type names the transaction’s new status, so consumers can route purely
on type without inspecting data.status. The data payload is the
full post-transition CardTransaction, including its lifecycle status
and reconciliation aggregates.
EXCEPTION handling.
Idempotency & retries
Webhook deliveries are at-least-once. Track processedid values and
return 200 on duplicates, or return 409 and let Grid stop
retrying. Both shapes are accepted by Grid’s webhook infrastructure.