Issuing and Using Cards

Issue payment cards, handle transactions, and manage 3DS authentication.

Before You Start

Read the following guides before proceeding:

GuideWhy
Getting StartedPlatform overview and setup
Api BasicsRequired headers and request configuration
AuthenticationHow to obtain access tokens
OnboardingUser and wallet registration
KYCKYC verification requirements

Wirex BaaS enables card issuance for users, allowing them to spend their crypto balance at any merchant that accepts Visa. Cards are linked to user wallets and automatically convert wrapped tokens to fiat at the point of sale. Both virtual and physical card formats are available.

Card management includes activation, PIN retrieval, freezing/unfreezing, and closure. Each card has configurable spending limits (per-transaction, daily, monthly, lifetime) that can be adjusted via API. Transaction activity is reported through webhooks, providing real-time visibility into card usage.

For e-commerce transactions, 3D Secure (3DS) authentication protects against fraud. When a merchant requests 3DS verification, a webhook is delivered with transaction details. Your application must present the confirmation to the user and submit their response within the timeout window.

Card Issuance Flow (Simplified)

Detailed documentation available in the subguides.

sequenceDiagram
    participant User
    participant App as Your App
    participant BaaS as Wirex BaaS

    Note over User,BaaS: Card Request
    User->>App: Request card
    App->>BaaS: POST /api/v2/cards
    BaaS-->>App: card_id
    BaaS->>App: POST /v2/webhooks/cards (status: Active)

    Note over User,BaaS: Card Details
    App->>BaaS: GET /api/v2/cards/{id}/pan
    BaaS-->>App: card_number, cvv
    App-->>User: Display card
StepActionDescription
1POST /api/v2/cardsRequest new card issuance
2WebhookCard status notification
3GET /api/v2/cards/{id}/panRetrieve sensitive card details

Card Transaction Flow (Simplified)

sequenceDiagram
    participant User
    participant Merchant
    participant App as Your App
    participant BaaS as Wirex BaaS

    Note over User,BaaS: Card Payment
    User->>Merchant: Pay with card
    Merchant->>BaaS: Authorization
    Note right of BaaS: Hold balance
    BaaS->>App: POST /v2/webhooks/activities<br/>(type: CardTransaction, status: Pending)

    Note over Merchant,BaaS: Settlement
    Merchant->>BaaS: Clear transaction
    Note right of BaaS: Debit balance
    BaaS->>App: POST /v2/webhooks/activities<br/>(status: Completed)
    App-->>User: Transaction done
StepActionDescription
1AuthorizationMerchant requests payment authorization
2HoldFunds held on user balance
3Webhook (Pending)Authorization notification
4SettlementMerchant clears the transaction
5Webhook (Completed)Final transaction notification

3DS Authentication Flow (Simplified)

sequenceDiagram
    participant User
    participant App as Your App
    participant BaaS as Wirex BaaS
    participant Merchant

    Note over User,Merchant: 3DS Challenge
    User->>Merchant: Online purchase
    Merchant->>BaaS: 3DS auth request
    BaaS->>App: POST /v2/webhooks/3ds (transaction details)
    App-->>User: Confirm payment?
    User->>App: Yes / No
    App->>BaaS: POST /api/v1/cards/3ds/confirm
    BaaS->>Merchant: 3DS response
StepActionDescription
1Webhook3DS challenge received
2User promptDisplay transaction for confirmation
3POST /api/v1/cards/3ds/confirmSubmit user decision