Card Events
1. Purpose
This webhook allows third-party partners to receive real-time card status updates from VaultsPay. Partners register a single callback URL, and VaultsPay sends a POST request to that URL whenever an important card status change occurs.
The payload is intentionally lean, containing only the essential information required for partners to update their systems.
2. How Integration Works
- Partner registers a webhook URL and optional secret in the SaaS platform.
- VaultsPay stores the subscription in the webhook system.
- When a card status changes, the event is produced by internal services.
- The webhook dispatcher sends the event to the partner’s URL.
3. Webhook Payload
Example webhook request sent to partners:
{
"id": "01hvjr8fz6mbw6f9r9v3e5b5yw",
"type": "card.status.active",
"occurred_at": "2026-03-13T09:20:12Z",
"status": {
"previous": {
"code": "BLOCK",
"label": "DECLINE_ALL_TXNS"
},
"current": {
"code": "ACTIVE",
"label": "FULLY_OPERATIONAL"
},
"reason": "Card was unblocked by the admin"
},
"card": {
"token": 987654321,
"last_four_digits": "3321",
"tier": "VaultsPay Debit Card Tier",
"network": "MC",
"type": "PHYSICAL"
}
}4. Key Fields
Envelope
| Field | Description |
|---|---|
| id | Unique webhook event identifier. |
| type | Card status event type. |
| occurred_at | Timestamp of the status change. |
Status Change
| Field | Description |
|---|---|
| status.previous.code | Previous platform status code. |
| status.previous.label | Previous network status label. |
| status.current.code | New platform status code. |
| status.current.label | New network status label. |
| status.reason | Reason for the status change. |
Card Information
| Field | Description |
|---|---|
| card.token | Card network token. |
| card.last_four_digits | Last 4 digits of the card. |
| card.network | Card network. |
| card.type | PHYSICAL or VIRTUAL. |
This structure allows partners to track the status transition clearly while keeping the payload minimal.
5. Card Status Events Sent to Partners
VaultsPay sends webhooks only for important lifecycle states.
| Event | Description |
|---|---|
| card.status.created | Card created in the platform. |
| card.status.issued.third_party | Card issued or provisioned by the third party. |
| card.status.active | Card activated and ready for transactions. |
| card.status.freeze | Card temporarily frozen. |
| card.status.unfreeze | Frozen card restored. |
| card.status.block | Card blocked or restricted. |
| card.status.reported_lost | Card reported lost. |
| card.status.reported_stolen | Card reported stolen. |
| card.status.reported_damaged | Card reported damaged. |
| card.status.expired | Card expired. |
| card.status.conversion_requested | Card conversion from virtual to physical is requested. |
6. Enumerations
6.1 Status Codes (status.previous.code, status.current.code)
Platform-level card states:
| Code | Description |
|---|---|
| ACTIVE | Card is fully operational. |
| FREEZE | Card is temporarily frozen. |
| BLOCK | Card is blocked. |
| STOLEN | Card reported stolen. |
| DAMAGED | Card reported damaged. |
| LOST | Card reported lost. |
| EXPIRED | Card expired. |
| ISSUANCE_REQUESTED | Card issuance requested. |
| ISSUANCE_REQUEST_DECLINED | Issuance request declined. |
| ISSUANCE_IN_PROGRESS | Card issuance in progress. |
| PENDING_VERIFICATION | Awaiting verification. |
| REPORTED | Generic reported state. |
| DESTROYED | Card permanently destroyed. |
| CARD_CONVERSION_REQUESTED | Conversion requested from virtual to physical card. |
| REISSUE_REQUESTED | Card reissue requested — renew or replacement request is in place. |
6.2 Status Labels (status.previous.label, status.current.label)
Network-level behavior:
| Label | Description |
|---|---|
| FULLY_OPERATIONAL | Card can perform transactions. |
| DECLINE_ALL_TXNS | All transactions will be declined. |
6.3 Code → Label Mapping Rule
This mapping is deterministic and guaranteed:
| Status Code | Label |
|---|---|
| ACTIVE | FULLY_OPERATIONAL |
| ALL OTHER VALUES | DECLINE_ALL_TXNS |
This applies to both status.previous and status.current.
6.4 Mapping Between type and Status Transitions
| Event Type | Typical current.code | Resulting current.label |
|---|---|---|
| card.status.created | ISSUANCE_REQUESTED | DECLINE_ALL_TXNS |
| card.status.issued.third_party | ISSUANCE_IN_PROGRESS | DECLINE_ALL_TXNS |
| card.status.active | ACTIVE | FULLY_OPERATIONAL |
| card.status.freeze | FREEZE | DECLINE_ALL_TXNS |
| card.status.unfreeze | ACTIVE | FULLY_OPERATIONAL |
| card.status.block | BLOCK | DECLINE_ALL_TXNS |
| card.status.reported_lost | LOST | DECLINE_ALL_TXNS |
| card.status.reported_stolen | STOLEN | DECLINE_ALL_TXNS |
| card.status.expired | EXPIRED | DECLINE_ALL_TXNS |
| card.status.conversion_requested | CARD_CONVERSION_REQUESTED | DECLINE_ALL_TXNS |
| card.status.reported_damaged | DAMAGED | DECLINE_ALL_TXNS |
6.5 Card Type (card.type)
| Value | Description |
|---|---|
| PHYSICAL | Physical card. |
| VIRTUAL | Virtual card. |
6.6 Card Network (card.network)
| Value | Description |
|---|---|
| MC | Mastercard. |
| VISA | Visa. |
| MADA | Mada (if applicable). |