Create
POST/v1/3ds
Initialize a 3DS authentication against the directory server for
the scheme identified from the card BIN. The card's fingerprint is
computed and stored; the same PAN, expiry month and expiry year
must be supplied to authenticate to prove continuity.
On success the returned CardAuth is in status available,
ready for authenticate.
Required permission: 3ds_create.
Request
- application/json
Body
required
1.00 SARis sent as1001.00 KWDis sent as10001 JPYis sent as1
A 36-character UUIDv7 identifier. When used as an idempotency key on write endpoints, the client is responsible for generating a fresh UUID for each logical operation and retaining it across retries.
Possible values: <= 100000000
A non-negative integer representing a monetary value in the smallest
currency unit for the associated currency (minor units).
Examples:
For most order-creating endpoints the minimum is 100
(one full major unit). Endpoints that support zero-value operations
(such as /v1/orders/verify and /v1/orders/:id/extend) allow 0.
Possible values: Value must match regular expression ^[A-Z]{3}$
ISO 4217 three-letter currency code in uppercase.
The currency must match the currency configured for the merchant's scheme-level terminals. Once an order is created, its currency is immutable: every subsequent capture, void, refund and extension is denominated in the same currency.
Possible values: Value must match regular expression ^\d{13,19}$
Primary Account Number (PAN) as a continuous digit string, no
separators. Sent in request bodies only — PAN is never returned in
full in responses; only first_digits and last_digits are echoed.
Possible values: >= 1 and <= 12
Possible values: >= 2000
Four-digit expiry year.
Responses
- 201
- 400
- 401
- 403
- 422
Authentication initialized.
- application/json
- Schema
- Example (from schema)
Schema
1.00 SARis sent as1001.00 KWDis sent as10001 JPYis sent as1Y: Authenticated successfully.N: Not authenticated / denied.U: Authentication could not be performed.A: Attempt performed. Not authenticated but a CAVV was provided.R: Rejected by issuer.
A 36-character UUIDv7 identifier. When used as an idempotency key on write endpoints, the client is responsible for generating a fresh UUID for each logical operation and retaining it across retries.
merchant
object
Brief representation of the merchant that owns the resource.
A 36-character UUIDv7 identifier. When used as an idempotency key on write endpoints, the client is responsible for generating a fresh UUID for each logical operation and retaining it across retries.
Merchant display name (English).
Stable, human-readable merchant identifier assigned by the acquirer. Often used as the merchant's principal reference in scheme reports.
Merchant display name in Arabic, when configured.
Possible values: [draft, available, in_progress, authenticated, failed]
Possible values: [visa, mastercard, mada, amex]
The card scheme (network) associated with the card. mada is detected from the issuing BIN and takes precedence over Visa / Mastercard co-branding for Saudi-issued cards.
Possible values: <= 100000000
A non-negative integer representing a monetary value in the smallest
currency unit for the associated currency (minor units).
Examples:
For most order-creating endpoints the minimum is 100
(one full major unit). Endpoints that support zero-value operations
(such as /v1/orders/verify and /v1/orders/:id/extend) allow 0.
Possible values: Value must match regular expression ^[A-Z]{3}$
ISO 4217 three-letter currency code in uppercase.
The currency must match the currency configured for the merchant's scheme-level terminals. Once an order is created, its currency is immutable: every subsequent capture, void, refund and extension is denominated in the same currency.
Last message reported by the 3DS provider.
Possible values: [system_error, rejected, denied, unavailable, upstream_error, null]
EMVCo protocol error code (e.g. 203, 405) when the ACS rejects the request.
Possible values: [no_preference, no_challenge, preferred, mandated]
True when the authentication completed without a challenge.
challenge
object
Challenge details returned when the ACS requires cardholder interaction.
ACS URL to redirect the cardholder to.
Base64-encoded Challenge Request (CReq) that must be POSTed to
url as the creq form field.
auth
object
Authentication values that must be echoed on the subsequent
authorization request (as source.auth).
CAVV / 3DS server transaction value.
Possible values: [Y, N, U, A, R]
Transaction status from the 3DS authentication response:
Possible values: [00, 01, 02, 05, 06, 07]
Electronic Commerce Indicator returned by the directory server / issuer ACS. Identifies the authentication strength and is required when submitting a 3DS-authenticated transaction.
Possible values: [2.0.0, 2.1.0, 2.2.0, 2.3.0]
EMV 3-D Secure protocol version the authentication was performed under.
A 36-character UUIDv7 identifier. When used as an idempotency key on write endpoints, the client is responsible for generating a fresh UUID for each logical operation and retaining it across retries.
A 36-character UUIDv7 identifier. When used as an idempotency key on write endpoints, the client is responsible for generating a fresh UUID for each logical operation and retaining it across retries.
Possible values: Value must match regular expression ^\d{12}$
Purchase date in YYYYMMDDHHMM format (UTC). Generated by the 3DS
server during authentication. Must be echoed back verbatim when the
authorization is submitted, otherwise authentication values are
rejected by the scheme.
ISO 8601 UTC timestamp with time zone designator.
ISO 8601 UTC timestamp with time zone designator.
{
"id": "0191f5a7-3d99-7f81-b7ec-962a5f5fdd7c",
"merchant": {
"id": "0191f5a7-3d99-7f81-b7ec-962a5f5fdd7c",
"name": "Example Store",
"merchant_id": "MERCHANT001",
"arabic_name": "متجر الأمثلة"
},
"status": "draft",
"scheme": "visa",
"amount": 10000,
"currency": "SAR",
"return_url": "string",
"message": "string",
"failure_reason": "system_error",
"emvco_error_code": "string",
"emvco_error_message": "string",
"challenge_preference": "no_preference",
"frictionless": true,
"statement_descriptor": "string",
"challenge": {
"url": "string",
"creq": "string"
},
"auth": {
"value": "string",
"status": "Y",
"eci": "05",
"version": "2.0.0",
"ds_transaction_id": "0191f5a7-3d99-7f81-b7ec-962a5f5fdd7c",
"acs_transaction_id": "0191f5a7-3d99-7f81-b7ec-962a5f5fdd7c",
"ds_reference_number": "string",
"acs_reference_number": "string",
"tds_purchase_date": "202501151430"
},
"created_at": "2025-01-15T14:30:00Z",
"updated_at": "2025-01-15T14:30:00Z"
}
Business rule violation.
- application/json
- Schema
- Example (from schema)
Schema
{
"message": "This order cannot be captured."
}
Authentication failed.
- application/json
- Schema
- Example (from schema)
Schema
{
"message": "Missing authentication information"
}
The authenticated principal lacks the required permission.
- application/json
- Schema
- Example (from schema)
Schema
{
"message": "Unauthorized"
}
Validation error.
- application/json
- Schema
- Example (from schema)
Schema
Array [
]
errors
object
required
property name*
string[]
string
{
"message": "The given data was invalid.",
"errors": {
"amount": [
"The amount field must be at least 100."
],
"source.number": [
"The number must be a valid credit card."
]
}
}