Skip to main content
POST
Create a 3D Secure session

Authorizations

x-api-key
string
header
required

Company API key for authentication

Body

application/json
amount
integer
required

Transaction amount in minor units (cents)

Required range: x >= 1
Example:

10000

currency
string
required

ISO 4217 currency code

Required string length: 3
Example:

"BRL"

card
object
required

Card to authenticate. Provide either card_id (a card stored via POST /v1/cards) or the inline pair number + expiry — never both.

merchant
object

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.

payer_email
string<email>

Cardholder email for richer 3DS authentication

payer_name
string

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.

Example:

"João da Silva"

payer_document
string

Cardholder document (CPF, etc.)

Example:

"123.456.789-00"

billing_address
object

Response

3DS session created successfully

id
string<uuid>

Internal 3DS session ID (use as three_d_secure_session_id when creating a transaction)

Example:

"550e8400-e29b-41d4-a716-446655440000"

tds_session_id
string

Provider session ID (use with the client-side SDK for challenge flows)

Example:

"tds_visa_e7c2yfa3867c"

card_id
string<uuid> | null

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.

Example:

"123e4567-e89b-12d3-a456-426614174000"

auth_status
enum<string>

Current authentication status:

  • ACTION_REQUIRED: Cardholder must complete 3DS challenge
  • AUTHENTICATED: Authentication successful (frictionless or completed challenge)
  • FAILED: Authentication failed
Available options:
ACTION_REQUIRED,
AUTHENTICATED,
FAILED
Example:

"AUTHENTICATED"

consumption_status
enum<string>

Whether this session has been used for a transaction:

  • NOT_CONSUMED: Available for use
  • PROCESSING: Currently being used (atomic claim)
  • CONSUMED: Already used for a transaction
Available options:
NOT_CONSUMED,
PROCESSING,
CONSUMED
Example:

"NOT_CONSUMED"

amount
integer

Amount in minor units (cents)

Example:

10000

currency
string

ISO 4217 currency code

Example:

"BRL"

failure_reason
string | null

Reason for authentication failure (only present when auth_status is FAILED)

Example:

null

liability_shift
boolean | null

Whether liability has shifted to the issuer

Example:

true

authentication_flow
string | null

3DS authentication flow type (frictionless, challenge, attempt)

Example:

"frictionless"

expires_at
string<date-time>

Session expiration time

Example:

"2026-02-06T20:35:00.000Z"

created_at
string<date-time>
Example:

"2026-02-06T19:35:00.000Z"

updated_at
string<date-time>
Example:

"2026-02-06T19:35:00.000Z"