curl --request POST \
--url https://api.example.com/v1/account/checkout/confirm \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-CSRF-Token: <x-csrf-token>'import requests
url = "https://api.example.com/v1/account/checkout/confirm"
headers = {
"X-CSRF-Token": "<x-csrf-token>",
"Idempotency-Key": "<idempotency-key>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-CSRF-Token': '<x-csrf-token>', 'Idempotency-Key': '<idempotency-key>'}
};
fetch('https://api.example.com/v1/account/checkout/confirm', 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.example.com/v1/account/checkout/confirm",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Idempotency-Key: <idempotency-key>",
"X-CSRF-Token: <x-csrf-token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/account/checkout/confirm"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-CSRF-Token", "<x-csrf-token>")
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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.example.com/v1/account/checkout/confirm")
.header("X-CSRF-Token", "<x-csrf-token>")
.header("Idempotency-Key", "<idempotency-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/account/checkout/confirm")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-CSRF-Token"] = '<x-csrf-token>'
request["Idempotency-Key"] = '<idempotency-key>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"state": "draft",
"operation": "<string>",
"phase": "<string>",
"currency": "<string>",
"subtotalMinor": 123,
"discountMinor": 123,
"walletMinor": 123,
"externalMinor": 123,
"paidMinor": 123,
"refundedMinor": 123,
"plan": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"subscriptionId": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"payment": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"provider": "<string>",
"status": "<string>",
"handoff": "hosted",
"checkoutUrl": "<string>",
"receiptUrl": "<string>"
},
"fulfillment": {
"status": "<string>",
"attempts": 123,
"errorCode": "<string>",
"updatedAt": "2023-11-07T05:31:56Z"
},
"refunds": [
{
"status": "<string>",
"amountMinor": 123,
"currency": "<string>",
"createdAt": "2023-11-07T05:31:56Z"
}
],
"paymentChoices": [
{
"provider": "<string>",
"currency": "<string>",
"recurring": true,
"amountMinor": 123
}
],
"preferredProvider": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"request_id": "<string>"
}Post v1accountcheckoutconfirm
Turns the open checkout into an order. The checkout’s own idempotency key is reused for the order, so a duplicate confirmation resolves to the order already created rather than a second one.
curl --request POST \
--url https://api.example.com/v1/account/checkout/confirm \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-CSRF-Token: <x-csrf-token>'import requests
url = "https://api.example.com/v1/account/checkout/confirm"
headers = {
"X-CSRF-Token": "<x-csrf-token>",
"Idempotency-Key": "<idempotency-key>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-CSRF-Token': '<x-csrf-token>', 'Idempotency-Key': '<idempotency-key>'}
};
fetch('https://api.example.com/v1/account/checkout/confirm', 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.example.com/v1/account/checkout/confirm",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Idempotency-Key: <idempotency-key>",
"X-CSRF-Token: <x-csrf-token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/account/checkout/confirm"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-CSRF-Token", "<x-csrf-token>")
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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.example.com/v1/account/checkout/confirm")
.header("X-CSRF-Token", "<x-csrf-token>")
.header("Idempotency-Key", "<idempotency-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/account/checkout/confirm")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-CSRF-Token"] = '<x-csrf-token>'
request["Idempotency-Key"] = '<idempotency-key>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"state": "draft",
"operation": "<string>",
"phase": "<string>",
"currency": "<string>",
"subtotalMinor": 123,
"discountMinor": 123,
"walletMinor": 123,
"externalMinor": 123,
"paidMinor": 123,
"refundedMinor": 123,
"plan": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"subscriptionId": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"payment": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"provider": "<string>",
"status": "<string>",
"handoff": "hosted",
"checkoutUrl": "<string>",
"receiptUrl": "<string>"
},
"fulfillment": {
"status": "<string>",
"attempts": 123,
"errorCode": "<string>",
"updatedAt": "2023-11-07T05:31:56Z"
},
"refunds": [
{
"status": "<string>",
"amountMinor": 123,
"currency": "<string>",
"createdAt": "2023-11-07T05:31:56Z"
}
],
"paymentChoices": [
{
"provider": "<string>",
"currency": "<string>",
"recurring": true,
"amountMinor": 123
}
],
"preferredProvider": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"request_id": "<string>"
}Headers
Echoes the token from the current session. Required on every unsafe method.
8 - 128Response
Order created
draft, pending, paid, fulfilled, cancelled, expired, partially_refunded, refunded The combined payment and provisioning state the panel renders: what the customer is waiting for, rather than which table changed.
Show child attributes
Show child attributes
Provisioning progress, read from the fulfillment operation rather than carried by the client.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The methods that can settle this order in its currency, each priced at what the order still owes. Present on the detail response while the order is pending and owes something, so the page can offer a method without depending on the URL the checkout redirected to. Telegram Stars appears only for a customer with a Telegram identity.
Show child attributes
Show child attributes
The method the checkout recorded, while that checkout is still attached to the order.