curl --request POST \
--url https://api.sandbox.primer.io/client-session \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'X-API-VERSION: <x-api-version>' \
--data '
{
"orderId": "order-abc",
"currencyCode": "GBP",
"amount": 1000,
"order": {
"countryCode": "FR,",
"lineItems": [
{
"itemId": "shoe-123",
"description": "Blue Shoe",
"amount": 100,
"quantity": 10
}
]
},
"customerId": "customer-123",
"customer": {
"emailAddress": "john@primer.io"
},
"metadata": {
"productType": "Shoes"
},
"paymentMethod": {
"descriptor": "Purchase: Shoes",
"paymentMethodType": "PAYMENT_CARD",
"vaultOnSuccess": true,
"vaultOn3DS": false,
"options": {
"PAYMENT_CARD": {
"networks": {
"VISA": {
"surcharge": {
"amount": 10
}
}
}
},
"GOOGLE_PAY": {
"surcharge": {
"amount": 20
}
}
},
"authorizationType": "ESTIMATED"
}
}
'import requests
url = "https://api.sandbox.primer.io/client-session"
payload = {
"orderId": "order-abc",
"currencyCode": "GBP",
"amount": 1000,
"order": {
"countryCode": "FR,",
"lineItems": [
{
"itemId": "shoe-123",
"description": "Blue Shoe",
"amount": 100,
"quantity": 10
}
]
},
"customerId": "customer-123",
"customer": { "emailAddress": "john@primer.io" },
"metadata": { "productType": "Shoes" },
"paymentMethod": {
"descriptor": "Purchase: Shoes",
"paymentMethodType": "PAYMENT_CARD",
"vaultOnSuccess": True,
"vaultOn3DS": False,
"options": {
"PAYMENT_CARD": { "networks": { "VISA": { "surcharge": { "amount": 10 } } } },
"GOOGLE_PAY": { "surcharge": { "amount": 20 } }
},
"authorizationType": "ESTIMATED"
}
}
headers = {
"X-API-VERSION": "<x-api-version>",
"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-VERSION': '<x-api-version>',
'X-API-KEY': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
orderId: 'order-abc',
currencyCode: 'GBP',
amount: 1000,
order: {
countryCode: 'FR,',
lineItems: [{itemId: 'shoe-123', description: 'Blue Shoe', amount: 100, quantity: 10}]
},
customerId: 'customer-123',
customer: {emailAddress: 'john@primer.io'},
metadata: {productType: 'Shoes'},
paymentMethod: {
descriptor: 'Purchase: Shoes',
paymentMethodType: 'PAYMENT_CARD',
vaultOnSuccess: true,
vaultOn3DS: false,
options: {
PAYMENT_CARD: {networks: {VISA: {surcharge: {amount: 10}}}},
GOOGLE_PAY: {surcharge: {amount: 20}}
},
authorizationType: 'ESTIMATED'
}
})
};
fetch('https://api.sandbox.primer.io/client-session', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.primer.io/client-session",
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([
'orderId' => 'order-abc',
'currencyCode' => 'GBP',
'amount' => 1000,
'order' => [
'countryCode' => 'FR,',
'lineItems' => [
[
'itemId' => 'shoe-123',
'description' => 'Blue Shoe',
'amount' => 100,
'quantity' => 10
]
]
],
'customerId' => 'customer-123',
'customer' => [
'emailAddress' => 'john@primer.io'
],
'metadata' => [
'productType' => 'Shoes'
],
'paymentMethod' => [
'descriptor' => 'Purchase: Shoes',
'paymentMethodType' => 'PAYMENT_CARD',
'vaultOnSuccess' => true,
'vaultOn3DS' => false,
'options' => [
'PAYMENT_CARD' => [
'networks' => [
'VISA' => [
'surcharge' => [
'amount' => 10
]
]
]
],
'GOOGLE_PAY' => [
'surcharge' => [
'amount' => 20
]
]
],
'authorizationType' => 'ESTIMATED'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>",
"X-API-VERSION: <x-api-version>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.primer.io/client-session"
payload := strings.NewReader("{\n \"orderId\": \"order-abc\",\n \"currencyCode\": \"GBP\",\n \"amount\": 1000,\n \"order\": {\n \"countryCode\": \"FR,\",\n \"lineItems\": [\n {\n \"itemId\": \"shoe-123\",\n \"description\": \"Blue Shoe\",\n \"amount\": 100,\n \"quantity\": 10\n }\n ]\n },\n \"customerId\": \"customer-123\",\n \"customer\": {\n \"emailAddress\": \"john@primer.io\"\n },\n \"metadata\": {\n \"productType\": \"Shoes\"\n },\n \"paymentMethod\": {\n \"descriptor\": \"Purchase: Shoes\",\n \"paymentMethodType\": \"PAYMENT_CARD\",\n \"vaultOnSuccess\": true,\n \"vaultOn3DS\": false,\n \"options\": {\n \"PAYMENT_CARD\": {\n \"networks\": {\n \"VISA\": {\n \"surcharge\": {\n \"amount\": 10\n }\n }\n }\n },\n \"GOOGLE_PAY\": {\n \"surcharge\": {\n \"amount\": 20\n }\n }\n },\n \"authorizationType\": \"ESTIMATED\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-VERSION", "<x-api-version>")
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))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.primer.io/client-session")
.header("X-API-VERSION", "<x-api-version>")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"orderId\": \"order-abc\",\n \"currencyCode\": \"GBP\",\n \"amount\": 1000,\n \"order\": {\n \"countryCode\": \"FR,\",\n \"lineItems\": [\n {\n \"itemId\": \"shoe-123\",\n \"description\": \"Blue Shoe\",\n \"amount\": 100,\n \"quantity\": 10\n }\n ]\n },\n \"customerId\": \"customer-123\",\n \"customer\": {\n \"emailAddress\": \"john@primer.io\"\n },\n \"metadata\": {\n \"productType\": \"Shoes\"\n },\n \"paymentMethod\": {\n \"descriptor\": \"Purchase: Shoes\",\n \"paymentMethodType\": \"PAYMENT_CARD\",\n \"vaultOnSuccess\": true,\n \"vaultOn3DS\": false,\n \"options\": {\n \"PAYMENT_CARD\": {\n \"networks\": {\n \"VISA\": {\n \"surcharge\": {\n \"amount\": 10\n }\n }\n }\n },\n \"GOOGLE_PAY\": {\n \"surcharge\": {\n \"amount\": 20\n }\n }\n },\n \"authorizationType\": \"ESTIMATED\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.primer.io/client-session")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-VERSION"] = '<x-api-version>'
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"orderId\": \"order-abc\",\n \"currencyCode\": \"GBP\",\n \"amount\": 1000,\n \"order\": {\n \"countryCode\": \"FR,\",\n \"lineItems\": [\n {\n \"itemId\": \"shoe-123\",\n \"description\": \"Blue Shoe\",\n \"amount\": 100,\n \"quantity\": 10\n }\n ]\n },\n \"customerId\": \"customer-123\",\n \"customer\": {\n \"emailAddress\": \"john@primer.io\"\n },\n \"metadata\": {\n \"productType\": \"Shoes\"\n },\n \"paymentMethod\": {\n \"descriptor\": \"Purchase: Shoes\",\n \"paymentMethodType\": \"PAYMENT_CARD\",\n \"vaultOnSuccess\": true,\n \"vaultOn3DS\": false,\n \"options\": {\n \"PAYMENT_CARD\": {\n \"networks\": {\n \"VISA\": {\n \"surcharge\": {\n \"amount\": 10\n }\n }\n }\n },\n \"GOOGLE_PAY\": {\n \"surcharge\": {\n \"amount\": 20\n }\n }\n },\n \"authorizationType\": \"ESTIMATED\"\n }\n}"
response = http.request(request)
puts response.read_bodyCreate a client session
Creating a client session generates a client token: a temporary key used to initialize Universal Checkout and authenticate it against your account.
Universal Checkout automatically retrieves all the settings from the client session and the Dashboard to configure the payment methods and the checkout experience.
Note:
When creating a Client Session, please make sure to provide currencyCode, orderId, and at least one of amount or lineItems.
If any of these are not yet available, you can provide them when making the payment request.
POST /client-session does not have required fields as all fields are not always known when a client session is created.
Use PATCH /client-session to update the parameters throughout the checkout session.
Client tokens expire after 24 hours.
curl --request POST \
--url https://api.sandbox.primer.io/client-session \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'X-API-VERSION: <x-api-version>' \
--data '
{
"orderId": "order-abc",
"currencyCode": "GBP",
"amount": 1000,
"order": {
"countryCode": "FR,",
"lineItems": [
{
"itemId": "shoe-123",
"description": "Blue Shoe",
"amount": 100,
"quantity": 10
}
]
},
"customerId": "customer-123",
"customer": {
"emailAddress": "john@primer.io"
},
"metadata": {
"productType": "Shoes"
},
"paymentMethod": {
"descriptor": "Purchase: Shoes",
"paymentMethodType": "PAYMENT_CARD",
"vaultOnSuccess": true,
"vaultOn3DS": false,
"options": {
"PAYMENT_CARD": {
"networks": {
"VISA": {
"surcharge": {
"amount": 10
}
}
}
},
"GOOGLE_PAY": {
"surcharge": {
"amount": 20
}
}
},
"authorizationType": "ESTIMATED"
}
}
'import requests
url = "https://api.sandbox.primer.io/client-session"
payload = {
"orderId": "order-abc",
"currencyCode": "GBP",
"amount": 1000,
"order": {
"countryCode": "FR,",
"lineItems": [
{
"itemId": "shoe-123",
"description": "Blue Shoe",
"amount": 100,
"quantity": 10
}
]
},
"customerId": "customer-123",
"customer": { "emailAddress": "john@primer.io" },
"metadata": { "productType": "Shoes" },
"paymentMethod": {
"descriptor": "Purchase: Shoes",
"paymentMethodType": "PAYMENT_CARD",
"vaultOnSuccess": True,
"vaultOn3DS": False,
"options": {
"PAYMENT_CARD": { "networks": { "VISA": { "surcharge": { "amount": 10 } } } },
"GOOGLE_PAY": { "surcharge": { "amount": 20 } }
},
"authorizationType": "ESTIMATED"
}
}
headers = {
"X-API-VERSION": "<x-api-version>",
"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-VERSION': '<x-api-version>',
'X-API-KEY': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
orderId: 'order-abc',
currencyCode: 'GBP',
amount: 1000,
order: {
countryCode: 'FR,',
lineItems: [{itemId: 'shoe-123', description: 'Blue Shoe', amount: 100, quantity: 10}]
},
customerId: 'customer-123',
customer: {emailAddress: 'john@primer.io'},
metadata: {productType: 'Shoes'},
paymentMethod: {
descriptor: 'Purchase: Shoes',
paymentMethodType: 'PAYMENT_CARD',
vaultOnSuccess: true,
vaultOn3DS: false,
options: {
PAYMENT_CARD: {networks: {VISA: {surcharge: {amount: 10}}}},
GOOGLE_PAY: {surcharge: {amount: 20}}
},
authorizationType: 'ESTIMATED'
}
})
};
fetch('https://api.sandbox.primer.io/client-session', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.primer.io/client-session",
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([
'orderId' => 'order-abc',
'currencyCode' => 'GBP',
'amount' => 1000,
'order' => [
'countryCode' => 'FR,',
'lineItems' => [
[
'itemId' => 'shoe-123',
'description' => 'Blue Shoe',
'amount' => 100,
'quantity' => 10
]
]
],
'customerId' => 'customer-123',
'customer' => [
'emailAddress' => 'john@primer.io'
],
'metadata' => [
'productType' => 'Shoes'
],
'paymentMethod' => [
'descriptor' => 'Purchase: Shoes',
'paymentMethodType' => 'PAYMENT_CARD',
'vaultOnSuccess' => true,
'vaultOn3DS' => false,
'options' => [
'PAYMENT_CARD' => [
'networks' => [
'VISA' => [
'surcharge' => [
'amount' => 10
]
]
]
],
'GOOGLE_PAY' => [
'surcharge' => [
'amount' => 20
]
]
],
'authorizationType' => 'ESTIMATED'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>",
"X-API-VERSION: <x-api-version>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.primer.io/client-session"
payload := strings.NewReader("{\n \"orderId\": \"order-abc\",\n \"currencyCode\": \"GBP\",\n \"amount\": 1000,\n \"order\": {\n \"countryCode\": \"FR,\",\n \"lineItems\": [\n {\n \"itemId\": \"shoe-123\",\n \"description\": \"Blue Shoe\",\n \"amount\": 100,\n \"quantity\": 10\n }\n ]\n },\n \"customerId\": \"customer-123\",\n \"customer\": {\n \"emailAddress\": \"john@primer.io\"\n },\n \"metadata\": {\n \"productType\": \"Shoes\"\n },\n \"paymentMethod\": {\n \"descriptor\": \"Purchase: Shoes\",\n \"paymentMethodType\": \"PAYMENT_CARD\",\n \"vaultOnSuccess\": true,\n \"vaultOn3DS\": false,\n \"options\": {\n \"PAYMENT_CARD\": {\n \"networks\": {\n \"VISA\": {\n \"surcharge\": {\n \"amount\": 10\n }\n }\n }\n },\n \"GOOGLE_PAY\": {\n \"surcharge\": {\n \"amount\": 20\n }\n }\n },\n \"authorizationType\": \"ESTIMATED\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-VERSION", "<x-api-version>")
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))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.primer.io/client-session")
.header("X-API-VERSION", "<x-api-version>")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"orderId\": \"order-abc\",\n \"currencyCode\": \"GBP\",\n \"amount\": 1000,\n \"order\": {\n \"countryCode\": \"FR,\",\n \"lineItems\": [\n {\n \"itemId\": \"shoe-123\",\n \"description\": \"Blue Shoe\",\n \"amount\": 100,\n \"quantity\": 10\n }\n ]\n },\n \"customerId\": \"customer-123\",\n \"customer\": {\n \"emailAddress\": \"john@primer.io\"\n },\n \"metadata\": {\n \"productType\": \"Shoes\"\n },\n \"paymentMethod\": {\n \"descriptor\": \"Purchase: Shoes\",\n \"paymentMethodType\": \"PAYMENT_CARD\",\n \"vaultOnSuccess\": true,\n \"vaultOn3DS\": false,\n \"options\": {\n \"PAYMENT_CARD\": {\n \"networks\": {\n \"VISA\": {\n \"surcharge\": {\n \"amount\": 10\n }\n }\n }\n },\n \"GOOGLE_PAY\": {\n \"surcharge\": {\n \"amount\": 20\n }\n }\n },\n \"authorizationType\": \"ESTIMATED\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.primer.io/client-session")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-VERSION"] = '<x-api-version>'
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"orderId\": \"order-abc\",\n \"currencyCode\": \"GBP\",\n \"amount\": 1000,\n \"order\": {\n \"countryCode\": \"FR,\",\n \"lineItems\": [\n {\n \"itemId\": \"shoe-123\",\n \"description\": \"Blue Shoe\",\n \"amount\": 100,\n \"quantity\": 10\n }\n ]\n },\n \"customerId\": \"customer-123\",\n \"customer\": {\n \"emailAddress\": \"john@primer.io\"\n },\n \"metadata\": {\n \"productType\": \"Shoes\"\n },\n \"paymentMethod\": {\n \"descriptor\": \"Purchase: Shoes\",\n \"paymentMethodType\": \"PAYMENT_CARD\",\n \"vaultOnSuccess\": true,\n \"vaultOn3DS\": false,\n \"options\": {\n \"PAYMENT_CARD\": {\n \"networks\": {\n \"VISA\": {\n \"surcharge\": {\n \"amount\": 10\n }\n }\n }\n },\n \"GOOGLE_PAY\": {\n \"surcharge\": {\n \"amount\": 20\n }\n }\n },\n \"authorizationType\": \"ESTIMATED\"\n }\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
Headers
Specifies the version of the API to use. This must be set to 2.4.
"2.4"
Body
Your reference for the payment.
1 - 255The 3-letter currency code in ISO 4217 format. e.g. use USD for US dollars.
AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BYN, BZD, CAD, CDF, CHE, CHF, CHW, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MKD, MMK, MNT, MOP, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLE, SOS, SRD, SSP, STN, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VED, VES, VND, VUV, WST, XAF, XCD, XCG, XOF, XPF, YER, ZAR, ZMW, ZWG, ZWL The amount you would like to charge the customer, in minor units. e.g. for $7, use 700.
Some currencies, such as Japanese Yen, do not have minor units. In this case you should use the value as it is, without any formatting. For example for ¥100, use 100.
If the amount is provided on this level, it would override any amount calculated from the provided line items, shipping and other amounts.
x >= 0More information associated with the order.
Show child attributes
Show child attributes
A unique identifier for your customer.
Create a client session token with a customerId to enable the client-side SDK to retrieve and manage your customer's saved payment methods. A client session token also enables saving payment methods against this customer id.
1 - 255More information associated with the customer.
Show child attributes
Show child attributes
Additional data to be used throughout the payment lifecycle.
A dictionary of key-value pairs where the values can only be strings or integers.
e.g. {"productId": 1001, "merchantId": "a13bsd62s"}
The size of metadata must not exceed 300 KB (307,200 bytes) when
serialized as JSON. Larger payloads are rejected with a
PaymentMetadataSizeExceeded error.
Enable certain options associated with the payment method.
Show child attributes
Show child attributes
Controls whether payments made with this client session are created automatically or require explicit approval from your backend.
AUTO (default): each payment attempt is authorized as soon as the customer submits the checkout.
MANUAL: each payment attempt is held until your backend approves it with POST /payment-attempts/{id}/approve or aborts it with POST /payment-attempts/{id}/abort.
See the Manual payment approval guide.
Set at creation only: it cannot be changed with PATCH /client-session.
AUTO, MANUAL Response
Successful Response
Client token used to initialize the SDK on all platforms. Its length is not fixed. Treat it as an opaque string and do not rely on a maximum length when storing it.
Expiration date & time of the client token (UTC with no timezoneinfo).
Enable certain options associated with the payment methods.
Show child attributes
Show child attributes
Your reference for the payment.
The 3-letter currency code in ISO 4217 format. e.g. use USD for US dollars.
The amount you would like to charge the customer, in minor units. e.g. for $7, use 700.
Some currencies, such as Japanese Yen, do not have minor units. In this case you should use the value as it is, without any formatting. For example for ¥100, use 100.
If the amount is provided on this level, it would override any amount calculated from the provided line items, shipping and other amounts.
x >= 0More information associated with the order.
Show child attributes
Show child attributes
A unique identifier for your customer.
More information associated with the customer.
Show child attributes
Show child attributes
Additional data to be used throughout the payment lifecycle.
The ordered list of card networks accepted for this client session, as resolved from paymentMethod.orderedAllowedCardNetworks and the default list.
The list of available card networks.
AMEX, DANKORT, DINERS_CLUB, DISCOVER, EFTPOS, ENROUTE, ELO, HIPER, INTERAC, JCB, MAESTRO, MASTERCARD, MIR, PRIVATE_LABEL, UNIONPAY, VISA, CARTES_BANCAIRES, OTHER Warning messages to indicate missing information that are required for payment methods, checkout modules and other features; or when third-party services are unavailable.
Show child attributes
Show child attributes
The approval mode the client session was created with.
AUTO, MANUAL ID of the current payment attempt. Only populated for MANUAL approval mode sessions once the checkout has tokenised a payment method; use it with the Payment Attempts API to approve or abort the attempt.