White-label notification delegation mode
How to use the delegation model for white-label issuing notifications, including webhook structure, notification types, and data payloads.
Under the delegation model for white-label issuing notifications, Airwallex sends your platform a webhook each time a cardholder notification is required. Your platform is then responsible for delivering the notification to the cardholder using your own notification infrastructure. Airwallex branding is not present in any notifications your cardholders receive.
This model gives your platform complete control over notification branding and delivery, but requires you to build and operate the full notification delivery flow.
The delegation model is part of the full white-label program. For an overview of both notification models and guidance on choosing between them, see White-label issuing notifications.
How delegation mode works
When an event occurs in the Airwallex issuing platform that requires a cardholder notification, Airwallex sends a webhook to your platform containing the event data. Your platform receives the webhook, generates the notification content, and delivers the notification to the cardholder.
Your platform is responsible for all three stages of the notification flow:
- Receiving the webhook — subscribing to and receiving the Airwallex webhook events that signal a notification is required.
- Generating the notification — creating the notification content, including branding, copy, and any required data (for example, a one-time passcode).
- Delivering the notification — sending the notification to the cardholder via email or SMS using your own infrastructure.
For general documentation on integrating with Airwallex webhooks, see Listen for webhook events.
Notification types
The following issuing events trigger delegation model webhooks.
| Notification | Webhook name | Delivery method | Trigger |
|---|---|---|---|
| Card created | issuing.card_notification.created | A card is created | |
| Physical card activated | issuing.card_notification.physical_activated | A physical card is activated | |
| 3DS OTP | issuing.3ds_notification.stepup_otp | Email or SMS | A transaction requiring 3DS verification is initiated; the cardholder selects the delivery method |
| Digital wallet available | issuing.digital_wallet_notification.wallet_available | A card is created that can be added to a digital wallet | |
| Digital wallet activated | issuing.digital_wallet_notification.token_activated | A card is added to a digital wallet | |
| Digital wallet abandoned provisioning | issuing.digital_wallet_notification.abandoned_provisioning | Wallet provisioning began but was not completed; sent 1 and 7 days after the incomplete attempt | |
| Digital wallet payment reminder | issuing.digital_wallet_notification.payment_reminder | A digital wallet token has not been used after provisioning; sent 7 and 14 days after provisioning | |
| Digital wallet token provisioning OTP | issuing.digital_wallet_notification.token_provisioning_otp | Email or SMS | OTP verification is required to add a card to a digital wallet; the cardholder selects the delivery method |
Webhook structure
Each delegation model webhook has two parts: a top-level header containing event metadata, and a data object containing notification-specific information. The header structure is described below; see Data payloads for the data object.
Header
1{2 "account_id": "acct_TOslkS7-MnyXlQuV8Lb4og",3 "created_at": "2022-01-01T00:00:00+0000",4 "data": {},5 "id": "86b69f91-06f0-3fe8-8faf-4de58954ca8e",6 "name": "issuing.card_notification.created",7 "source_id": "6c2dc266-09ad-4235-b61a-767c7cd6d6ea",8 "version": "2019-09-09"9}
| Field | Description |
|---|---|
account_id | The Airwallex account ID associated with the card related to this event |
created_at | Timestamp of when the webhook was created |
data | Notification-specific payload; see Data payloads |
id | Unique identifier for the webhook |
name | The webhook name for the notification type; see Notification types |
source_id | Used by Airwallex internally; no action required. |
version | Used by Airwallex internally; no action required. |
Data payloads
Each notification type has a unique data payload.
Card created and physical card activated
Applies to: issuing.card_notification.created, issuing.card_notification.physical_activated
1{2 "card_id": "599196f6-8d5f-4daf-bfad-083b5e052e85"3}
| Field | Description |
|---|---|
card_id | The Airwallex card ID related to this event |
3DS OTP
Applies to: issuing.3ds_notification.stepup_otp
The payload varies depending on whether the cardholder selected email or SMS delivery.
Email delivery:
1{2 "card_id": "599196f6-8d5f-4daf-bfad-083b5e052e85",3 "contact_method": "EMAIL",4 "contact_method_details": {5 "email": "[email protected]"6 },7 "expiry_time": "2022-01-01T00:00:00.000+0000",8 "masked_card_number": "8888",9 "transaction_amount": 12.34,10 "transaction_currency": "AUD",11 "verification_code": "123456"12}
SMS delivery (only the contact method fields differ):
1{2 "contact_method": "SMS",3 "contact_method_details": {4 "dial_code": "1",5 "phone_number": "0123456789"6 }7}
| Field | Description |
|---|---|
card_id | The Airwallex card ID used in the 3DS transaction |
contact_method | The cardholder's selected delivery method: EMAIL or SMS |
contact_method_details.email | The email address selected (email delivery only) |
contact_method_details.dial_code | The international dial code of the phone number (SMS delivery only) |
contact_method_details.phone_number | The phone number selected (SMS delivery only) |
expiry_time | The OTP expiry timestamp; set to 10 minutes after the 3DS process was initiated |
masked_card_number | The masked card number used in the 3DS transaction |
transaction_amount | The transaction amount |
transaction_currency | The transaction currency |
verification_code | The OTP the cardholder must enter to authorize the transaction |
Digital wallet available
Applies to: issuing.digital_wallet_notification.wallet_available
1{2 "card_id": "599196f6-8d5f-4daf-bfad-083b5e052e85"3}
| Field | Description |
|---|---|
card_id | The Airwallex card ID related to this event |
Digital wallet activated, abandoned provisioning, and payment reminder
Applies to: issuing.digital_wallet_notification.token_activated, issuing.digital_wallet_notification.abandoned_provisioning, issuing.digital_wallet_notification.payment_reminder
1{2 "card_id": "599196f6-8d5f-4daf-bfad-083b5e052e85",3 "token_reference_id": "DNITHE301616178439057312"4}
| Field | Description |
|---|---|
card_id | The Airwallex card ID related to this event |
token_reference_id | Unique identifier for the digital wallet token within the card network |
Digital wallet token provisioning OTP
Applies to: issuing.digital_wallet_notification.token_provisioning_otp
The payload varies depending on whether the cardholder selected email or SMS delivery.
Email delivery:
1{2 "card_id": "599196f6-8d5f-4daf-bfad-083b5e052e85",3 "contact_method": "EMAIL",4 "contact_method_details": {5 "email": "[email protected]"6 },7 "expiry_time": "2022-01-01T00:00:00.000+0000",8 "token_reference_id": "DNITHE301616178439057312",9 "verification_code": "123456"10}
SMS delivery (only the contact method fields differ):
1{2 "contact_method": "SMS",3 "contact_method_details": {4 "dial_code": "1",5 "phone_number": "0123456789"6 }7}
| Field | Description |
|---|---|
card_id | The Airwallex card ID used in the provisioning attempt |
contact_method | The cardholder's selected delivery method: EMAIL or SMS |
contact_method_details.email | The email address selected (email delivery only) |
contact_method_details.dial_code | The international dial code of the phone number (SMS delivery only) |
contact_method_details.phone_number | The phone number selected (SMS delivery only) |
expiry_time | The OTP expiry timestamp; set to 30 minutes after the provisioning attempt was initiated |
token_reference_id | Unique identifier for the digital wallet token within the card network |
verification_code | The OTP the cardholder must enter to complete the provisioning |
See also
- Concepts:
- How-to: