Skip to main content
3D Secure adds an additional authentication step for card payments, reducing fraud and shifting liability from the merchant to the card issuer. Axra handles 3DS transparently — your integration is the same regardless of the card network or issuing bank.

How 3DS Works

3DS introduces a challenge step where the cardholder’s bank verifies their identity (via SMS code, biometric, or app confirmation) before the payment is authorized.

Integration Flow

Server-to-Server (S2S) 3DS Flow

Checkout Session 3DS Flow

For checkout sessions, 3DS is handled entirely within the Axra-hosted checkout page. The customer never leaves the checkout experience.

Implementation Guide

Step 1: Initiate the Charge

Include a returnUrl in your charge request. This is where the customer will be redirected after completing the 3DS challenge.

Step 2: Check for 3DS Requirement

Inspect the response. If status is requires_action, the customer must complete a 3DS challenge.
The requiresAction object contains:

Step 3: Redirect the Customer

Redirect the customer’s browser to the redirectUrl:

Step 4: Handle the Return

After the customer completes (or cancels) the 3DS challenge, they are redirected to your returnUrl. Confirm the payment:

Step 5: Handle the Result


When is 3DS Required?

3DS may be triggered by:
  1. Card issuer rules: Some issuers require 3DS for all online transactions
  2. SCA regulation (PSD2): Required for European card payments over certain thresholds
  3. Risk scoring: Axra’s risk engine may trigger 3DS for suspicious transactions
  4. Amount thresholds: Some regions require 3DS above certain amounts
Not all transactions will require 3DS. When 3DS is not needed, the charge completes immediately with status: "succeeded".

Error Handling

3DS Failures

Common Mistakes

  1. Missing returnUrl: Without a return URL, the customer has nowhere to go after 3DS. Always include it for S2S charges.
  2. Not checking requires_action: If you ignore this status, the payment stays pending forever.
  3. Confirming without 3DS completion: Calling confirm-3ds before the customer completes the challenge will fail.
  4. Hardcoding transactionId: Always use the transactionId from the charge response — it is unique per transaction.

Testing 3DS

Test Cards

Testing Flow

  1. Use a sandbox/test API key
  2. Charge with a 3DS test card
  3. Follow the redirectUrl — in test mode the challenge auto-completes
  4. Confirm the payment
  5. Verify the payment.completed webhook fires

Liability Shift

When 3DS authentication succeeds:
  • Fraud liability shifts from the merchant to the card issuer
  • If a fraudulent chargeback occurs, the merchant is protected
  • Dispute fees may be waived for 3DS-authenticated transactions
This is a significant benefit: 3DS-authenticated payments have a much lower dispute rate. Where possible, we recommend enabling 3DS for all transactions.