Search...
Log inGet started
Airwallex logo
Home
Core API
Payments
Transactional FX
Payouts
Issuing
Back to home
OverviewChoose your payments solutionGet started with payments
Supported currencies
Online payments
Online payments overviewPayment Method Onboarding RequirementGet started with online paymentsHosted Payment Page
Drop-in Element
Embedded Elements
Mobile SDK
Plugins
Native API
Guest user checkoutRegistered user checkout
Place a hold on a payment methodCancellationsRefunds3D Secure authentication
Network TokenizationDevice fingerprintingMulti-currency pricingError response codes
Automatic Currency Conversion
Invoice integrations

Registered user checkout

When capturing a Stored Credential for the first time

Card and Direct Debit

  1. Create customer API if it is a new customer
  2. Create payment consent API with the customer ID from Step 1, and save consent ID for subsequent transactions.
  3. (Optional) Create payment intent API for the order with the customer ID. This step is only needed for shopper wishes to pay for the first order in the payment method binding process.
  4. Verify payment consent API through a transaction authorization or verification with payment method provided. You have 2 options for verifying the payment consent

    • Option 1 (Verification only):For cards, you can submit zero or supplementary amounts for the verification process. This will automatically create payment intent, which will be CANCELLED after verification is completed. For Direct debit, Airwallex will send out verification email to the shopper automatically to complete verification process.
    • Option 2 (Verification by completing first payment): You can use the payment intent created in Step 3 to do verification by Confirm payment intent API with payment_consent_id. This will result in payment intent to be SUCCEEDED when verification is completed.

    Successfully verifying a payment consent will result in the status of payment consent changed to VERIFIED. If payment consent is not verified, the status will stay as REQUIRES_PAYMENT_METHOD or REQUIRES_CUSTOMER_ACTION, and next_action will appear in the response.

    In case full 3DS authentication is mandatory (for card transactions in EU region) or triggered by fraud detection during a card verification, you can continue the verification by finishing the payment using payment_intents/confirm_continue API.

E-wallet (eg. Kakaopay)

  1. Create customer APIif it is a new customer.
  2. Create payment consent API with the customer you created in Step 1 and save Consent ID for subsequent transactions.
  3. Verify payment consent API through the authorization process. Provide details in payment_method including flow and os_type for the E-wallet your customer selected. Verifying a payment consent will result in the status of payment consent changed to VERIFIED. If payment consent is not verified, the status will stay as REQUIRES_PAYMENT_METHOD or REQUIRES_CUSTOMER_ACTION, and next_action will appear in the response. For E-wallet, you need to render the redirect page to the customer in order to complete the authorization. Once finished, you will receive a webhook notification of payment_consent.verified.

When initiating a subsequent transaction using a stored credential

A. For subsequent Subscription and Autodebit (MIT) transactions

  1. Create payment intent API with the corresponding customer ID
  2. Confirm payment intent APIwith payment_consent_id to request payment with reference to stored payment consent

B. For subsequent Oneclick (CIT) transactions:

  1. Create payment intent API with the corresponding customer ID
  2. Query payment consent API with the corresponding customer ID to render the list of customer’s payment consents they previously verified
  3. Confirm payment intent APIwith payment_consent_id to request payment with reference to stored Payment consent. If the subsequent payment is for card payment, 3DS might be triggered in the process

Error Cases

Error CodeScenario
resource_not_foundcreate a payment consent with non-existing customer_id, non-existing payment_consent_id, or payment consent with DISABLED/REQUIRES_PAYMENT_METHOD or REQUIRES_CUSTOMER_ACTION statuses
invalid_status_for_operationconfirm a payment consent with DISABLED/REQUIRES_PAYMENT_METHOD or REQUIRES_CUSTOMER_ACTION statuses
validation_errorconfirm a payment intent with payment consent without providing cvc
currency_not_supportedconfirm a payment intent with payment consent whose currency is different from the intent currency
On this page