Create a 3D Secure session linked to a merchant
Creates a standalone 3D Secure (3DS) authentication session for a card payment. Requires the merchant.3ds.create permission.
Flow:
- Create a 3DS session with encrypted card data, or with
card.card_idto authenticate a card stored viaPOST /v1/cards - If
auth_statusisACTION_REQUIRED, the cardholder must complete the 3DS challenge using thetds_session_idwith the client-side SDK - If
auth_statusisAUTHENTICATED, the session is ready to be used in a transaction - Pass the session
idasthree_d_secure_session_idwhen creating a card transaction
Expiration: Sessions expire 1 hour after creation.
Single use: A session authenticates one amount and currency and can be spent on one transaction. Recurring charges need a new session each time — a stored card does not change this.
Supported card networks: Visa, Mastercard, and American Express. Cards from
other networks (e.g. Elo, Hipercard, Discover, Diners, JCB) cannot be authenticated
and are rejected with 400 VALIDATION_ERROR.
Authorizations
Company API key for authentication
Path Parameters
Merchant/Company ID
"123e4567-e89b-12d3-a456-426614174000"
Body
Transaction amount in minor units (cents)
x >= 110000
ISO 4217 currency code
3"BRL"
Card to authenticate. Provide either card_id (a card
stored via POST /v1/cards) or the inline pair
number + expiry — never both.
- Option 1
- Option 2
Optional merchant overrides. Only website can be overridden.
All other merchant fields (name, category_code, country) are
always derived from the Company entity. The merchant name shown
to the cardholder during a challenge is the company's legal name
(full_name), shortened to the 40 characters the 3DS
specification allows.
Cardholder email for richer 3DS authentication
Cardholder name. Accented and non-Latin characters are accepted; accents are folded for authentication (e.g. "João" is authenticated as "Joao"), while the name is stored exactly as sent. Names that cannot be folded to unaccented Latin letters may be rejected by the authentication provider. Names containing invalid characters are rejected. Not allowed together with card.card_id: a stored card supplies its own cardholder_name, so set it when storing the card. The other payer fields (payer_email, payer_document, billing_address) are still accepted with a stored card.
"João da Silva"
Cardholder document (CPF, etc.)
"123.456.789-00"
Response
3DS session created successfully
Internal 3DS session ID (use as three_d_secure_session_id when creating a transaction)
"550e8400-e29b-41d4-a716-446655440000"
Provider session ID (use with the client-side SDK for challenge flows)
"tds_visa_e7c2yfa3867c"
The stored card this session authenticated, or null when the card was
sent inline. When both this and the transaction's card_data.card_id are
set, they must match or the transaction is rejected.
"123e4567-e89b-12d3-a456-426614174000"
Current authentication status:
ACTION_REQUIRED: Cardholder must complete 3DS challengeAUTHENTICATED: Authentication successful (frictionless or completed challenge)FAILED: Authentication failed
ACTION_REQUIRED, AUTHENTICATED, FAILED "AUTHENTICATED"
Whether this session has been used for a transaction:
NOT_CONSUMED: Available for usePROCESSING: Currently being used (atomic claim)CONSUMED: Already used for a transaction
NOT_CONSUMED, PROCESSING, CONSUMED "NOT_CONSUMED"
Amount in minor units (cents)
10000
ISO 4217 currency code
"BRL"
Reason for authentication failure (only present when auth_status is FAILED)
null
Whether liability has shifted to the issuer
true
3DS authentication flow type (frictionless, challenge, attempt)
"frictionless"
Session expiration time
"2026-02-06T20:35:00.000Z"
"2026-02-06T19:35:00.000Z"
"2026-02-06T19:35:00.000Z"

