Overview#
1. USER_CREATE_RESULT#
| Field | Description |
|---|
| user_id | User unique ID |
| status | User status |
| message | Reason of rejection (Optional) |
2. CARD_APPLY_RESULT#
| Field | Description |
|---|
| template_id | Card template ID |
| user_id | User unique ID |
| card_id | Card unique ID |
| status | Application status |
| occur_time | Trigger time (milliseconds) |
3. CARD_ACTIVATE_RESULT#
| Field | Description |
|---|
| card_id | Card unique ID |
| card_number | Card number |
| status | Activation status |
| occur_time | Trigger time (milliseconds) |
4. CARD_ASSIGN_RESULT#
Decrypted JSON String (Success)Decrypted JSON String (Failed)| Field | Description |
|---|
| card_id | Card unique ID (only present for successful assigns) |
| user_id | User unique ID |
| status | Assignment status (SUCCESS/FAILED) |
| error_reason | Error description (only present for failed assigns) |
| occur_time | Trigger time (milliseconds) |
This webhook is triggered after assigning a physical (plastic) card to a user. The assignment process is asynchronous - after calling the /card/assign endpoint, you must wait for this webhook to confirm whether the assignment succeeded or failed before proceeding with card activation.
5. CARD_STATUS_CHANGE#
| Field | Description |
|---|
| card_id | Card unique ID |
| status | Operation status |
| card_status | New card status (LOCKED/ACTIVE) |
| occur_time | Trigger time (milliseconds) |
6. CARD_RECHARGE_RESULT#
| Field | Description |
|---|
| template_id | Card template ID |
| user_id | User unique ID |
| card_id | Card unique ID |
| transaction_id | Transaction unique ID |
| receive_amount | Recharge amount |
| status | Transaction status |
| currency | Currency code |
| description | Transaction description |
| occur_time | Trigger time (milliseconds) |
7. CARD_CLOSE_RESULT#
| Field | Description |
|---|
| card_id | Card unique ID |
| transaction_id | Transaction unique ID |
| refund_amount | Refunded amount |
| status | Transaction status |
| description | Transaction description |
| occur_time | Trigger time (milliseconds) |
8. TRANSACTION_CREATED#
Decrypted JSON String (Success)Decrypted JSON String (Failed)| Field | Description |
|---|
| card_id | Card unique ID |
| transaction_id | Transaction unique ID |
| type | Transaction type (AUTHORIZATION, PURCHASE, etc.) |
| status | Transaction status (SUCCESS, FAILED, etc.) |
| billing_currency | Billing currency |
| billing_amount | Billing amount |
| billing_transaction_fee | Transaction fee |
| transaction_currency | Transaction currency |
| transaction_amount | Transaction amount |
| merchant | Merchant information object |
| merchant.name | Merchant name |
| merchant.country | Merchant country code (e.g., "US", "JP", "ES") - Optional |
| merchant.mcc | Merchant Category Code (e.g., "5814", "5999") - Optional |
| merchant.description | Merchant business description - Optional |
| description | Transaction description |
| occur_time | Trigger time (milliseconds) |
| failure_reason | Failure reason (Only present for failed transactions) |
9. CARD_CORRECTION#
| Field | Description |
|---|
| card_id | Card unique ID |
| correction_id | Correction transaction ID |
| type | Correction type |
| status | Correction status |
| currency | Currency code |
| amount | Correction amount |
| response_code | Response code |
| response_message | Response message |
| occur_time | Trigger time (milliseconds) |
| original_transaction_id | Original transaction ID (optional) |
10. CARD_3DS#
| Field | Description |
|---|
| card_id | Card unique ID |
| securement_id | 3DS securement ID for confirmation |
| amount | Transaction amount requiring 3DS authentication |
| currency | Transaction currency |
| confirm | 3DS confirmation status (PENDING/ACCEPTED/DECLINED) |
| method | 3DS authentication method (OTP/OOB/URL) |
| status | 3DS process status (PENDING/SUCCESS/FAILED) |
| merchant_name | Merchant name |
| merchant_country | Merchant country code |
| value | 6-digit OTP code (present when method is "OTP") |
| occur_time | Trigger time (milliseconds) |
When receiving a CARD_3DS webhook, the required action depends on the authentication method:For OTP Method#
When method is "OTP", the value field contains a 6-digit one-time code that should be displayed to the user. The user needs to enter this code on the merchant's website to complete the authentication.For OOB Method#
When method is "OOB", clients should use the /cards/confirm_3ds endpoint to either accept or decline the 3DS authentication:
11. CARD_VERIFICATION#
| Field | Description |
|---|
| card_id | Card unique ID |
| verification_id | Verification unique ID |
| method | Verification method (currently only "OTP" supported) |
| otp_value | 6-digit OTP code for verification |
| status | Verification process status (PENDING/SUCCESS/FAILED) |
| confirm | Verification confirmation status (PENDING/ACCEPTED/DECLINED) |
| occur_time | Trigger time (milliseconds) |
This webhook is triggered when a Google Pay binding requires verification via OTP. Currently only applicable to specific card templates: 9, 10When receiving a CARD_VERIFICATION webhook:1.
Display the otp_value to the user
2.
Instruct the user to enter this OTP code on the Google Pay verification page
3.
The verification process will complete automatically once the user enters the correct OTP
The webhook provides all necessary information for the merchant to guide their users through the Google Pay binding verification process.Modified at 2025-12-05 12:37:24