Airwallex logo

White-label notification delegation mode

How to use the delegation model for white-label issuing notifications, including webhook structure, notification types, and data payloads.

Copy for LLMView as Markdown

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:

  1. Receiving the webhook — subscribing to and receiving the Airwallex webhook events that signal a notification is required.
  2. Generating the notification — creating the notification content, including branding, copy, and any required data (for example, a one-time passcode).
  3. 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.

NotificationWebhook nameDelivery methodTrigger
Card createdissuing.card_notification.createdEmailA card is created
Physical card activatedissuing.card_notification.physical_activatedEmailA physical card is activated
3DS OTPissuing.3ds_notification.stepup_otpEmail or SMSA transaction requiring 3DS verification is initiated; the cardholder selects the delivery method
Digital wallet availableissuing.digital_wallet_notification.wallet_availableEmailA card is created that can be added to a digital wallet
Digital wallet activatedissuing.digital_wallet_notification.token_activatedEmailA card is added to a digital wallet
Digital wallet abandoned provisioningissuing.digital_wallet_notification.abandoned_provisioningEmailWallet provisioning began but was not completed; sent 1 and 7 days after the incomplete attempt
Digital wallet payment reminderissuing.digital_wallet_notification.payment_reminderEmailA digital wallet token has not been used after provisioning; sent 7 and 14 days after provisioning
Digital wallet token provisioning OTPissuing.digital_wallet_notification.token_provisioning_otpEmail or SMSOTP 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.

JSON
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}
FieldDescription
account_idThe Airwallex account ID associated with the card related to this event
created_atTimestamp of when the webhook was created
dataNotification-specific payload; see Data payloads
idUnique identifier for the webhook
nameThe webhook name for the notification type; see Notification types
source_idUsed by Airwallex internally; no action required.
versionUsed 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

JSON
1{
2 "card_id": "599196f6-8d5f-4daf-bfad-083b5e052e85"
3}
FieldDescription
card_idThe 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:

JSON
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):

JSON
1{
2 "contact_method": "SMS",
3 "contact_method_details": {
4 "dial_code": "1",
5 "phone_number": "0123456789"
6 }
7}
FieldDescription
card_idThe Airwallex card ID used in the 3DS transaction
contact_methodThe cardholder's selected delivery method: EMAIL or SMS
contact_method_details.emailThe email address selected (email delivery only)
contact_method_details.dial_codeThe international dial code of the phone number (SMS delivery only)
contact_method_details.phone_numberThe phone number selected (SMS delivery only)
expiry_timeThe OTP expiry timestamp; set to 10 minutes after the 3DS process was initiated
masked_card_numberThe masked card number used in the 3DS transaction
transaction_amountThe transaction amount
transaction_currencyThe transaction currency
verification_codeThe OTP the cardholder must enter to authorize the transaction

Digital wallet available

Applies to: issuing.digital_wallet_notification.wallet_available

JSON
1{
2 "card_id": "599196f6-8d5f-4daf-bfad-083b5e052e85"
3}
FieldDescription
card_idThe 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

JSON
1{
2 "card_id": "599196f6-8d5f-4daf-bfad-083b5e052e85",
3 "token_reference_id": "DNITHE301616178439057312"
4}
FieldDescription
card_idThe Airwallex card ID related to this event
token_reference_idUnique 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:

JSON
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):

JSON
1{
2 "contact_method": "SMS",
3 "contact_method_details": {
4 "dial_code": "1",
5 "phone_number": "0123456789"
6 }
7}
FieldDescription
card_idThe Airwallex card ID used in the provisioning attempt
contact_methodThe cardholder's selected delivery method: EMAIL or SMS
contact_method_details.emailThe email address selected (email delivery only)
contact_method_details.dial_codeThe international dial code of the phone number (SMS delivery only)
contact_method_details.phone_numberThe phone number selected (SMS delivery only)
expiry_timeThe OTP expiry timestamp; set to 30 minutes after the provisioning attempt was initiated
token_reference_idUnique identifier for the digital wallet token within the card network
verification_codeThe OTP the cardholder must enter to complete the provisioning

See also

Was this page helpful?