Skip to main content
Card webhooks cover status changes, digital wallet provisioning, and 3D Secure authentication challenges issued during card transactions. The following events are available:

card.created

Rain sends this webhook whenever you issue a card through the API or Rain creates one internally. This webhook is informational only and does not require a response.
Payload
The body matches card.updated without statusChangeReason and tokenWallets, plus the optional cardCreationSource. For version history, see the card.created webhook reference.

card.updated

Rain sends this webhook when a card status changes or when a user adds their card to a digital wallet. This webhook is informational only and does not require a response.
Payload
Fields marked with a version are present only when your webhook configuration pins that version or later; see Versioning and the card.updated version history. The statusChangeReason field can take these values:

card.notification

Rain sends the notification webhook when there are important status updates or decisions regarding card provisioning, particularly related to digital wallet token provisioning. This webhook is informational only and does not require a response.
Limited availability:Rain currently sends this webhook when:
  • A card provisioning request is declined or encounters an issue
  • A token wallet provisioning decision happens
Payload
The reasonCode field takes one of these values: Rain sends the TOKEN_* lifecycle notifications only for programs with network token reporting enabled; contact Rain to enable them. decisionReason applies to PROVISIONING_DECLINED events. The decisionReason.code field tells you who made the decision and what the cardholder can do about it. Rain may add new codes without a version bump, so treat the field as an open-ended string and handle unrecognized values gracefully. Decisions made by Rain Decisions forwarded from the wallet provider. Apple and Google decline these based on their own risk assessment. Rain cannot override them. Declines surface to the cardholder as a generic “Could Not Add Card” error in the wallet regardless of cause, so match this webhook against support reports to identify the actual reason. See Push Provisioning troubleshooting. For version history, see the card.notification webhook reference.

challenge.requested

Rain sends this webhook when it initiates a 3D Secure challenge for a card transaction. It carries the challenge timing and the transaction context, so you can put the challenge in front of the cardholder. The same event covers both opt-in 3DS paths, and deliveryMethod tells you which flow a challenge belongs to:
Opt-in capability: By default, Rain handles 3D Secure step-up directly and sends no webhook. You receive challenge.requested only if your program is enabled for 3DS Forwarding or Push Notifications. This is independent of whether your program is Rain-Managed or Partner-Managed. See 3D Secure (3DS) for the full Forwarding and OOB flows.
The diagram below traces a Forwarding challenge, where you deliver a one-time password. For the OOB equivalent, see the Push Notifications (OOB) flow.
Webhook Rain sends youYour handler (ack 2xx)Action / API callMerchant / network
👤Cardholder
🏬Merchant / ACS
🌧️Rain
📱Your app
CardholderCheckout with 3DS-enrolled card
Merchant / ACS3DS authentication request
RainGenerate challenge (OTP, TTL)
Webhookchallenge.requested
HandleDeliver OTP (push / in-app)
CardholderEnter OTP
Merchant / ACSValidate
ResultPass or fail; auth proceeds
This event is synchronous with a 60-second timeout: deliver the one-time password to the cardholder and return a 2xx response within that window. If you do not respond in time, the authentication fails and the transaction can be declined. The expiryTime and timeToLive fields define how long the password itself stays valid (300 seconds in the example), which is separate from this response deadline.
Payload
The envelope version field can be absent for some tenants, so treat it as optional when you parse. For the full schema and version history, see the challenge.requested webhook reference.