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_BALANCE_CHANGE#
| Field | Description |
|---|
| card_id | Card unique ID |
| amount | Current total balance amount |
| available | Current available balance |
| before_available | Available balance before the change |
| currency | Balance currency |
| occur_time | Trigger time (milliseconds) |
This webhook is triggered when a card's balance changes. This can happen due to various operations such as transactions, refunds, settlements, or other balance adjustments processed by the card network.The available field represents the current spendable balance
The before_available field shows what the balance was before this change
The difference between before_available and available indicates the amount of change
7. 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) |
8. CARD_WITHDRAW_RESULT#
| Field | Description |
|---|
| template_id | Card template ID |
| user_id | User unique ID |
| card_id | Card unique ID |
| transaction_id | Transaction unique ID |
| withdraw_amount | Withdraw amount |
| status | Transaction status |
| currency | Currency code |
| description | Transaction description |
| occur_time | Trigger time (milliseconds) |
9. CARD_CLOSE_RESULT#
| Field | Description |
|---|
| template_id | Card template ID |
| user_id | User unique ID |
| card_id | Card unique ID |
| transaction_id | Transaction unique ID |
| refund_amount | Refunded amount (card balance) |
| status | Close operation status |
| currency | Currency code |
| description | Transaction description |
| occur_time | Trigger time (milliseconds) |
This webhook is triggered after a card close operation completes. When closing a card:1.
The remaining card balance is withdrawn
2.
The funds are returned to the merchant balance
3.
The card status is changed to CLOSED
This webhook is only sent for HiPay cards
The refund_amount contains the balance that was on the card at the time of closing
If the card had zero balance, refund_amount will be 0 or null
The card becomes permanently unusable after this operation
10. 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) |
11. 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) |
12. 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 | Merchant information object |
| merchant.name | Merchant name |
| merchant.country | Merchant country code (e.g., "US", "JP") - Optional |
| merchant.mcc | Merchant Category Code (e.g., "5411") - Optional |
| merchant.description | Merchant business description - Optional |
| 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:
13. 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.
14. MERCHANT_BALANCE_RECHARGED#
Decrypted JSON String (Success)Decrypted JSON String (Failed)| Field | Description |
|---|
| merchant_id | Merchant unique ID (UUID) |
| order_id | Payment operation order ID |
| amount | Requested recharge amount |
| old_balance | Merchant balance before the operation |
| new_balance | Merchant balance after the operation |
| status | Operation status (SUCCESS/FAILED) |
| error | Error message (only present for failed operations) |
| timestamp | Operation timestamp (ISO 8601 format) |
This webhook is triggered when a merchant balance recharge operation completes via crypto deposit to the reserve. It notifies API merchants about the result of their balance top-up request.Modified at 2026-02-06 12:34:05