Skip to main content
POST
https://api.lite.sa/v1
/
threeds
/
authentications
Create a new 3DS Authentication session
curl --request POST \
  --url https://api.lite.sa/v1/threeds/authentications \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "instrument_id": "baf6a8e2-0c89-46ef-9ca5-faa65b99bcd5",
  "customer": {
    "id": "cust_a1b2c3d4e5f6",
    "email": "donald.duck@duckworld.com",
    "first_name": "Donald",
    "last_name": "Duck",
    "phone_country_code": "+966",
    "phone_number": "555123456"
  },
  "order": {
    "reference": "ORD-123456",
    "items": {
      "products": [
        {
          "id": "prod_123",
          "price": 5000,
          "quantity": 2,
          "name": "T-Shirt",
          "metadata": {
            "color": "Blue",
            "size": "L"
          }
        }
      ],
      "vat": {
        "amount": 750
      },
      "shipping": {
        "amount": 1000
      }
    },
    "shipping_address": {
      "name": "John Doe",
      "email": "john@example.com",
      "street": "123 Main St",
      "city": "Riyadh",
      "state": "Riyadh Region",
      "zip": "12213",
      "country": "SA"
    },
    "billing_address": {
      "name": "John Doe",
      "email": "john@example.com",
      "street": "123 Main St",
      "city": "Riyadh",
      "state": "Riyadh Region",
      "zip": "12213",
      "country": "SA"
    },
    "amount": 10000,
    "currency": "SAR",
    "description": "Order description"
  },
  "return_url": "https://example.com/threeds/callback"
}
'
import requests

url = "https://api.lite.sa/v1/threeds/authentications"

payload = {
"instrument_id": "baf6a8e2-0c89-46ef-9ca5-faa65b99bcd5",
"customer": {
"id": "cust_a1b2c3d4e5f6",
"email": "donald.duck@duckworld.com",
"first_name": "Donald",
"last_name": "Duck",
"phone_country_code": "+966",
"phone_number": "555123456"
},
"order": {
"reference": "ORD-123456",
"items": {
"products": [
{
"id": "prod_123",
"price": 5000,
"quantity": 2,
"name": "T-Shirt",
"metadata": {
"color": "Blue",
"size": "L"
}
}
],
"vat": { "amount": 750 },
"shipping": { "amount": 1000 }
},
"shipping_address": {
"name": "John Doe",
"email": "john@example.com",
"street": "123 Main St",
"city": "Riyadh",
"state": "Riyadh Region",
"zip": "12213",
"country": "SA"
},
"billing_address": {
"name": "John Doe",
"email": "john@example.com",
"street": "123 Main St",
"city": "Riyadh",
"state": "Riyadh Region",
"zip": "12213",
"country": "SA"
},
"amount": 10000,
"currency": "SAR",
"description": "Order description"
},
"return_url": "https://example.com/threeds/callback"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
instrument_id: 'baf6a8e2-0c89-46ef-9ca5-faa65b99bcd5',
customer: {
id: 'cust_a1b2c3d4e5f6',
email: 'donald.duck@duckworld.com',
first_name: 'Donald',
last_name: 'Duck',
phone_country_code: '+966',
phone_number: '555123456'
},
order: {
reference: 'ORD-123456',
items: {
products: [
{
id: 'prod_123',
price: 5000,
quantity: 2,
name: 'T-Shirt',
metadata: {color: 'Blue', size: 'L'}
}
],
vat: {amount: 750},
shipping: {amount: 1000}
},
shipping_address: {
name: 'John Doe',
email: 'john@example.com',
street: '123 Main St',
city: 'Riyadh',
state: 'Riyadh Region',
zip: '12213',
country: 'SA'
},
billing_address: {
name: 'John Doe',
email: 'john@example.com',
street: '123 Main St',
city: 'Riyadh',
state: 'Riyadh Region',
zip: '12213',
country: 'SA'
},
amount: 10000,
currency: 'SAR',
description: 'Order description'
},
return_url: 'https://example.com/threeds/callback'
})
};

fetch('https://api.lite.sa/v1/threeds/authentications', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
instrument_id: 'baf6a8e2-0c89-46ef-9ca5-faa65b99bcd5',
customer: {
id: 'cust_a1b2c3d4e5f6',
email: 'donald.duck@duckworld.com',
first_name: 'Donald',
last_name: 'Duck',
phone_country_code: '+966',
phone_number: '555123456'
},
order: {
reference: 'ORD-123456',
items: {
products: [
{
id: 'prod_123',
price: 5000,
quantity: 2,
name: 'T-Shirt',
metadata: {color: 'Blue', size: 'L'}
}
],
vat: {amount: 750},
shipping: {amount: 1000}
},
shipping_address: {
name: 'John Doe',
email: 'john@example.com',
street: '123 Main St',
city: 'Riyadh',
state: 'Riyadh Region',
zip: '12213',
country: 'SA'
},
billing_address: {
name: 'John Doe',
email: 'john@example.com',
street: '123 Main St',
city: 'Riyadh',
state: 'Riyadh Region',
zip: '12213',
country: 'SA'
},
amount: 10000,
currency: 'SAR',
description: 'Order description'
},
return_url: 'https://example.com/threeds/callback'
})
};

fetch('https://api.lite.sa/v1/threeds/authentications', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.lite.sa/v1/threeds/authentications"

payload := strings.NewReader("{\n \"instrument_id\": \"baf6a8e2-0c89-46ef-9ca5-faa65b99bcd5\",\n \"customer\": {\n \"id\": \"cust_a1b2c3d4e5f6\",\n \"email\": \"donald.duck@duckworld.com\",\n \"first_name\": \"Donald\",\n \"last_name\": \"Duck\",\n \"phone_country_code\": \"+966\",\n \"phone_number\": \"555123456\"\n },\n \"order\": {\n \"reference\": \"ORD-123456\",\n \"items\": {\n \"products\": [\n {\n \"id\": \"prod_123\",\n \"price\": 5000,\n \"quantity\": 2,\n \"name\": \"T-Shirt\",\n \"metadata\": {\n \"color\": \"Blue\",\n \"size\": \"L\"\n }\n }\n ],\n \"vat\": {\n \"amount\": 750\n },\n \"shipping\": {\n \"amount\": 1000\n }\n },\n \"shipping_address\": {\n \"name\": \"John Doe\",\n \"email\": \"john@example.com\",\n \"street\": \"123 Main St\",\n \"city\": \"Riyadh\",\n \"state\": \"Riyadh Region\",\n \"zip\": \"12213\",\n \"country\": \"SA\"\n },\n \"billing_address\": {\n \"name\": \"John Doe\",\n \"email\": \"john@example.com\",\n \"street\": \"123 Main St\",\n \"city\": \"Riyadh\",\n \"state\": \"Riyadh Region\",\n \"zip\": \"12213\",\n \"country\": \"SA\"\n },\n \"amount\": 10000,\n \"currency\": \"SAR\",\n \"description\": \"Order description\"\n },\n \"return_url\": \"https://example.com/threeds/callback\"\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lite.sa/v1/threeds/authentications",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'instrument_id' => 'baf6a8e2-0c89-46ef-9ca5-faa65b99bcd5',
'customer' => [
'id' => 'cust_a1b2c3d4e5f6',
'email' => 'donald.duck@duckworld.com',
'first_name' => 'Donald',
'last_name' => 'Duck',
'phone_country_code' => '+966',
'phone_number' => '555123456'
],
'order' => [
'reference' => 'ORD-123456',
'items' => [
'products' => [
[
'id' => 'prod_123',
'price' => 5000,
'quantity' => 2,
'name' => 'T-Shirt',
'metadata' => [
'color' => 'Blue',
'size' => 'L'
]
]
],
'vat' => [
'amount' => 750
],
'shipping' => [
'amount' => 1000
]
],
'shipping_address' => [
'name' => 'John Doe',
'email' => 'john@example.com',
'street' => '123 Main St',
'city' => 'Riyadh',
'state' => 'Riyadh Region',
'zip' => '12213',
'country' => 'SA'
],
'billing_address' => [
'name' => 'John Doe',
'email' => 'john@example.com',
'street' => '123 Main St',
'city' => 'Riyadh',
'state' => 'Riyadh Region',
'zip' => '12213',
'country' => 'SA'
],
'amount' => 10000,
'currency' => 'SAR',
'description' => 'Order description'
],
'return_url' => 'https://example.com/threeds/callback'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
{
  "id": "baf6a8e2-0c89-46ef-9ca5-faa65b99bcd5",
  "merchant_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "instrument_id": "baf6a8e2-0c89-46ef-9ca5-faa65b99bcd5",
  "status": "AUTHENTICATED",
  "authentication_value": "AAABBJkZUgAAAAAAAAAAAAAAAAA=",
  "eci": "05",
  "xid": "abc123xyz",
  "version": "2.1.0",
  "threeds_server_trans_id": "threeds_a1b2c3d4e5f6",
  "ds_transaction_id": "dstxn_a1b2c3d4e5f6",
  "acs_transaction_id": "acstxn_a1b2c3d4e5f6",
  "acs_reference_number": "ELAVON_ACS_EMULATOR_REF_NUMBER32",
  "ds_reference_number": "ELAVON_3DS_DS_EMULATOR_REF_NUM32",
  "acs_operator_id": "ELAVON_ACS_EMULATOR_OPERATOR_ID1",
  "acs_challenge_mandated": "Y",
  "acs_authentication_type": "01",
  "acs_challenge_cancel_reason": "01",
  "trans_status": "C",
  "trans_status_reason": "01",
  "return_url": "https://example.com/threeds/callback"
}
{
"error": {
"code": "PAYMENT_DETAILS_MISMATCH",
"message": "The request was invalid or malformed",
"timestamp": "2024-12-16T10:30:00.000Z",
"details": {},
"correlationId": "550e8400-e29b-41d4-a716-446655440000"
}
}
{
"error": {
"code": "PAYMENT_DETAILS_MISMATCH",
"message": "The request was invalid or malformed",
"timestamp": "2024-12-16T10:30:00.000Z",
"details": {},
"correlationId": "550e8400-e29b-41d4-a716-446655440000"
}
}

Authorizations

x-api-key
string
header
required

API key for service-to-service or merchant authentication.

Headers

x-correlation-id
string<uuid>

Unique identifier for request tracing. Generated by the client or server if not provided.

Example:

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

x-idempotency-key
string<uuid>

Unique key for idempotent request processing. Duplicate requests with the same key are safely ignored.

Example:

"baf6a8e2-0c89-46ef-9ca5-faa65b99bcd5"

Body

application/json

Create a new 3DS authentication session

instrument_id
string<uuid>
required

Instrument ID

Example:

"baf6a8e2-0c89-46ef-9ca5-faa65b99bcd5"

customer
object
required

Customer details

order
object
required

Order details

return_url
string<uri>
required

Return URL for 3DS challenge completion

Example:

"https://example.com/threeds/callback"

device
object

Device information (required for 3DS and risk assessment)

Response

Authentication session created.

id
string<uuid>
required

Unique 3DS authentication ID

Example:

"baf6a8e2-0c89-46ef-9ca5-faa65b99bcd5"

merchant_id
string<uuid>
required

Merchant ID

Example:

"a1b2c3d4-e5f6-7890-abcd-ef1234567890"

instrument_id
string<uuid>
required

Instrument ID

Example:

"baf6a8e2-0c89-46ef-9ca5-faa65b99bcd5"

status
required

Authentication session has been created and is awaiting processing

Allowed value: "PENDING"
Example:

"AUTHENTICATED"

authentication_value
string

Authentication value (CAVV)

Example:

"AAABBJkZUgAAAAAAAAAAAAAAAAA="

eci
string

Electronic Commerce Indicator

Required string length: 2
Example:

"05"

xid
string

Transaction identifier (XID)

Required string length: 1 - 100
Example:

"abc123xyz"

version
string

3DS protocol version

Pattern: ^\d+\.\d+\.\d+$
Example:

"2.1.0"

threeds_server_trans_id
string

3DS Server transaction ID

Example:

"threeds_a1b2c3d4e5f6"

ds_transaction_id
string

Directory Server transaction ID

Example:

"dstxn_a1b2c3d4e5f6"

acs_transaction_id
string

ACS transaction ID

Example:

"acstxn_a1b2c3d4e5f6"

acs_reference_number
string

ACS reference number

Required string length: 1 - 32
Example:

"ELAVON_ACS_EMULATOR_REF_NUMBER32"

ds_reference_number
string

Directory Server reference number

Required string length: 1 - 32
Example:

"ELAVON_3DS_DS_EMULATOR_REF_NUM32"

acs_operator_id
string

ACS operator ID

Required string length: 1 - 32
Example:

"ELAVON_ACS_EMULATOR_OPERATOR_ID1"

acs_challenge_mandated

Challenge is mandated

Allowed value: "Y"
Example:

"Y"

acs_authentication_type
string

ACS authentication type code

Required string length: 2 - 10
Example:

"01"

acs_challenge_cancel_reason
string

Challenge cancel reason code

Example:

"01"

trans_status
string

Transaction status code

Pattern: ^[A-Z]$
Example:

"C"

trans_status_reason
string

Transaction status reason

Example:

"01"

return_url
string

Return URL for 3DS challenge

Example:

"https://example.com/threeds/callback"