curl --request POST \
--url https://payment-gw.production-mainnet.atum.xyz/v1/payments/quote-requests \
--header 'Content-Type: application/json' \
--data '
{
"version": "1.0",
"request_id": "qr-2026-04-29-001",
"source": {
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
},
"destination": [
{
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
}
],
"fulfillment_amount": "100000000",
"quote_deadline": "2026-04-29T12:00:03Z",
"fulfillment_deadline": "2026-04-29T12:30:00Z",
"max_source_amount": "101000000",
"settler_auth_required": {},
"quote_selector": "0x742D35cC6634c0532925a3b844Bc9e7595F41360",
"escrow_contract_address": "0x742D35cC6634c0532925a3b844Bc9e7595F41360",
"fulfillment_proxy": "0x892BB2e4F6b14a2B5b82Ba8d33E5925D42D4431F",
"settler_requirements": {
"whitelist": [
"did:pkh:eip155:1:0x742D35cC6634c0532925a3b844Bc9e7595F41360"
],
"blacklist": [
"did:pkh:eip155:1:0x892bb2E4F6b14a2B5b82bA8D33e5925d42d4432f"
]
},
"@context": [
"<string>"
],
"verifiableCredential": [
{
"@context": [
"https://www.w3.org/2018/credentials/v1"
],
"id": "<string>",
"type": [
"VerifiableCredential",
"KYCVerifiedCredential"
],
"issuer": "<string>",
"issuanceDate": "2023-11-07T05:31:56Z",
"credentialSubject": {},
"proof": {},
"expirationDate": "2023-11-07T05:31:56Z",
"credentialStatus": {}
}
]
}
'import requests
url = "https://payment-gw.production-mainnet.atum.xyz/v1/payments/quote-requests"
payload = {
"version": "1.0",
"request_id": "qr-2026-04-29-001",
"source": {
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
},
"destination": [
{
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
}
],
"fulfillment_amount": "100000000",
"quote_deadline": "2026-04-29T12:00:03Z",
"fulfillment_deadline": "2026-04-29T12:30:00Z",
"max_source_amount": "101000000",
"settler_auth_required": {},
"quote_selector": "0x742D35cC6634c0532925a3b844Bc9e7595F41360",
"escrow_contract_address": "0x742D35cC6634c0532925a3b844Bc9e7595F41360",
"fulfillment_proxy": "0x892BB2e4F6b14a2B5b82Ba8d33E5925D42D4431F",
"settler_requirements": {
"whitelist": ["did:pkh:eip155:1:0x742D35cC6634c0532925a3b844Bc9e7595F41360"],
"blacklist": ["did:pkh:eip155:1:0x892bb2E4F6b14a2B5b82bA8D33e5925d42d4432f"]
},
"@context": ["<string>"],
"verifiableCredential": [
{
"@context": ["https://www.w3.org/2018/credentials/v1"],
"id": "<string>",
"type": ["VerifiableCredential", "KYCVerifiedCredential"],
"issuer": "<string>",
"issuanceDate": "2023-11-07T05:31:56Z",
"credentialSubject": {},
"proof": {},
"expirationDate": "2023-11-07T05:31:56Z",
"credentialStatus": {}
}
]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
version: '1.0',
request_id: 'qr-2026-04-29-001',
source: {
asset_identifier: 'eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
account: '0x742D35cC6634c0532925a3b844Bc9e7595F41360'
},
destination: [
{
asset_identifier: 'eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
account: '0x742D35cC6634c0532925a3b844Bc9e7595F41360'
}
],
fulfillment_amount: '100000000',
quote_deadline: '2026-04-29T12:00:03Z',
fulfillment_deadline: '2026-04-29T12:30:00Z',
max_source_amount: '101000000',
settler_auth_required: {},
quote_selector: '0x742D35cC6634c0532925a3b844Bc9e7595F41360',
escrow_contract_address: '0x742D35cC6634c0532925a3b844Bc9e7595F41360',
fulfillment_proxy: '0x892BB2e4F6b14a2B5b82Ba8d33E5925D42D4431F',
settler_requirements: {
whitelist: ['did:pkh:eip155:1:0x742D35cC6634c0532925a3b844Bc9e7595F41360'],
blacklist: ['did:pkh:eip155:1:0x892bb2E4F6b14a2B5b82bA8D33e5925d42d4432f']
},
'@context': ['<string>'],
verifiableCredential: [
{
'@context': ['https://www.w3.org/2018/credentials/v1'],
id: '<string>',
type: ['VerifiableCredential', 'KYCVerifiedCredential'],
issuer: '<string>',
issuanceDate: '2023-11-07T05:31:56Z',
credentialSubject: {},
proof: {},
expirationDate: '2023-11-07T05:31:56Z',
credentialStatus: {}
}
]
})
};
fetch('https://payment-gw.production-mainnet.atum.xyz/v1/payments/quote-requests', 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://payment-gw.production-mainnet.atum.xyz/v1/payments/quote-requests",
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([
'version' => '1.0',
'request_id' => 'qr-2026-04-29-001',
'source' => [
'asset_identifier' => 'eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
'account' => '0x742D35cC6634c0532925a3b844Bc9e7595F41360'
],
'destination' => [
[
'asset_identifier' => 'eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
'account' => '0x742D35cC6634c0532925a3b844Bc9e7595F41360'
]
],
'fulfillment_amount' => '100000000',
'quote_deadline' => '2026-04-29T12:00:03Z',
'fulfillment_deadline' => '2026-04-29T12:30:00Z',
'max_source_amount' => '101000000',
'settler_auth_required' => [
],
'quote_selector' => '0x742D35cC6634c0532925a3b844Bc9e7595F41360',
'escrow_contract_address' => '0x742D35cC6634c0532925a3b844Bc9e7595F41360',
'fulfillment_proxy' => '0x892BB2e4F6b14a2B5b82Ba8d33E5925D42D4431F',
'settler_requirements' => [
'whitelist' => [
'did:pkh:eip155:1:0x742D35cC6634c0532925a3b844Bc9e7595F41360'
],
'blacklist' => [
'did:pkh:eip155:1:0x892bb2E4F6b14a2B5b82bA8D33e5925d42d4432f'
]
],
'@context' => [
'<string>'
],
'verifiableCredential' => [
[
'@context' => [
'https://www.w3.org/2018/credentials/v1'
],
'id' => '<string>',
'type' => [
'VerifiableCredential',
'KYCVerifiedCredential'
],
'issuer' => '<string>',
'issuanceDate' => '2023-11-07T05:31:56Z',
'credentialSubject' => [
],
'proof' => [
],
'expirationDate' => '2023-11-07T05:31:56Z',
'credentialStatus' => [
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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://payment-gw.production-mainnet.atum.xyz/v1/payments/quote-requests"
payload := strings.NewReader("{\n \"version\": \"1.0\",\n \"request_id\": \"qr-2026-04-29-001\",\n \"source\": {\n \"asset_identifier\": \"eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"account\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n },\n \"destination\": [\n {\n \"asset_identifier\": \"eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"account\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n }\n ],\n \"fulfillment_amount\": \"100000000\",\n \"quote_deadline\": \"2026-04-29T12:00:03Z\",\n \"fulfillment_deadline\": \"2026-04-29T12:30:00Z\",\n \"max_source_amount\": \"101000000\",\n \"settler_auth_required\": {},\n \"quote_selector\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\",\n \"escrow_contract_address\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\",\n \"fulfillment_proxy\": \"0x892BB2e4F6b14a2B5b82Ba8d33E5925D42D4431F\",\n \"settler_requirements\": {\n \"whitelist\": [\n \"did:pkh:eip155:1:0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n ],\n \"blacklist\": [\n \"did:pkh:eip155:1:0x892bb2E4F6b14a2B5b82bA8D33e5925d42d4432f\"\n ]\n },\n \"@context\": [\n \"<string>\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"<string>\",\n \"type\": [\n \"VerifiableCredential\",\n \"KYCVerifiedCredential\"\n ],\n \"issuer\": \"<string>\",\n \"issuanceDate\": \"2023-11-07T05:31:56Z\",\n \"credentialSubject\": {},\n \"proof\": {},\n \"expirationDate\": \"2023-11-07T05:31:56Z\",\n \"credentialStatus\": {}\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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://payment-gw.production-mainnet.atum.xyz/v1/payments/quote-requests")
.header("Content-Type", "application/json")
.body("{\n \"version\": \"1.0\",\n \"request_id\": \"qr-2026-04-29-001\",\n \"source\": {\n \"asset_identifier\": \"eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"account\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n },\n \"destination\": [\n {\n \"asset_identifier\": \"eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"account\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n }\n ],\n \"fulfillment_amount\": \"100000000\",\n \"quote_deadline\": \"2026-04-29T12:00:03Z\",\n \"fulfillment_deadline\": \"2026-04-29T12:30:00Z\",\n \"max_source_amount\": \"101000000\",\n \"settler_auth_required\": {},\n \"quote_selector\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\",\n \"escrow_contract_address\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\",\n \"fulfillment_proxy\": \"0x892BB2e4F6b14a2B5b82Ba8d33E5925D42D4431F\",\n \"settler_requirements\": {\n \"whitelist\": [\n \"did:pkh:eip155:1:0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n ],\n \"blacklist\": [\n \"did:pkh:eip155:1:0x892bb2E4F6b14a2B5b82bA8D33e5925d42d4432f\"\n ]\n },\n \"@context\": [\n \"<string>\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"<string>\",\n \"type\": [\n \"VerifiableCredential\",\n \"KYCVerifiedCredential\"\n ],\n \"issuer\": \"<string>\",\n \"issuanceDate\": \"2023-11-07T05:31:56Z\",\n \"credentialSubject\": {},\n \"proof\": {},\n \"expirationDate\": \"2023-11-07T05:31:56Z\",\n \"credentialStatus\": {}\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://payment-gw.production-mainnet.atum.xyz/v1/payments/quote-requests")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"version\": \"1.0\",\n \"request_id\": \"qr-2026-04-29-001\",\n \"source\": {\n \"asset_identifier\": \"eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"account\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n },\n \"destination\": [\n {\n \"asset_identifier\": \"eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"account\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n }\n ],\n \"fulfillment_amount\": \"100000000\",\n \"quote_deadline\": \"2026-04-29T12:00:03Z\",\n \"fulfillment_deadline\": \"2026-04-29T12:30:00Z\",\n \"max_source_amount\": \"101000000\",\n \"settler_auth_required\": {},\n \"quote_selector\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\",\n \"escrow_contract_address\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\",\n \"fulfillment_proxy\": \"0x892BB2e4F6b14a2B5b82Ba8d33E5925D42D4431F\",\n \"settler_requirements\": {\n \"whitelist\": [\n \"did:pkh:eip155:1:0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n ],\n \"blacklist\": [\n \"did:pkh:eip155:1:0x892bb2E4F6b14a2B5b82bA8D33e5925d42d4432f\"\n ]\n },\n \"@context\": [\n \"<string>\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"<string>\",\n \"type\": [\n \"VerifiableCredential\",\n \"KYCVerifiedCredential\"\n ],\n \"issuer\": \"<string>\",\n \"issuanceDate\": \"2023-11-07T05:31:56Z\",\n \"credentialSubject\": {},\n \"proof\": {},\n \"expirationDate\": \"2023-11-07T05:31:56Z\",\n \"credentialStatus\": {}\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"quote_request_id": "qr_a1b2c3d4-5678-90ef-1234-567890abcdef",
"status": "ready",
"idempotent_replay": true,
"source": {
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
},
"destination": [
{
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
}
],
"fulfillment_amount": "100000000",
"max_source_amount": "101000000",
"fulfillment_deadline": "2026-04-29T12:30:00Z",
"quote_deadline": "2026-04-29T12:00:03Z",
"quotes": [
{
"quote_id": "0x4e7f...c2a1",
"fulfillment_quote": {}
}
],
"requested_count": 8,
"decline_summary": [
{
"reason": "INSUFFICIENT_LIQUIDITY",
"count": 4,
"retry_classification": "RETRY_AFTER_DELAY",
"docs_url": "https://docs.atum.xyz/decline-reasons#insufficient-liquidity"
}
]
}{
"quote_request_id": "qr_a1b2c3d4-5678-90ef-1234-567890abcdef",
"status": "collecting",
"idempotent_replay": true,
"source": {
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
},
"destination": [
{
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
}
],
"fulfillment_amount": "100000000",
"max_source_amount": "101000000",
"fulfillment_deadline": "2026-04-29T12:30:00Z",
"quote_deadline": "2026-04-29T12:00:03Z"
}{
"code": "INVALID_SOURCE_ASSET",
"message": "The source asset identifier is not a valid CAIP-19 asset.",
"request_id": "req_123456789",
"payment_id": "0xc7108e200d11580e7e75185991084b42a535af588ba8267cd0d1e7df089e5c9c",
"docs_url": "<string>",
"domain": "PAYMENT_GATEWAY",
"retry_classification": "RECONCILE_THEN_DECIDE",
"request_id_reusable": false
}{
"code": "INVALID_SOURCE_ASSET",
"message": "The source asset identifier is not a valid CAIP-19 asset.",
"request_id": "req_123456789",
"payment_id": "0xc7108e200d11580e7e75185991084b42a535af588ba8267cd0d1e7df089e5c9c",
"docs_url": "<string>",
"domain": "PAYMENT_GATEWAY",
"retry_classification": "RECONCILE_THEN_DECIDE",
"request_id_reusable": false
}{
"code": "INVALID_SOURCE_ASSET",
"message": "The source asset identifier is not a valid CAIP-19 asset.",
"request_id": "req_123456789",
"payment_id": "0xc7108e200d11580e7e75185991084b42a535af588ba8267cd0d1e7df089e5c9c",
"docs_url": "<string>",
"domain": "PAYMENT_GATEWAY",
"retry_classification": "RECONCILE_THEN_DECIDE",
"request_id_reusable": false
}{
"code": "INVALID_SOURCE_ASSET",
"message": "The source asset identifier is not a valid CAIP-19 asset.",
"request_id": "req_123456789",
"payment_id": "0xc7108e200d11580e7e75185991084b42a535af588ba8267cd0d1e7df089e5c9c",
"docs_url": "<string>",
"domain": "PAYMENT_GATEWAY",
"retry_classification": "RECONCILE_THEN_DECIDE",
"request_id_reusable": false
}Create a quote-request
Open a quote-request batch and collect price quotes for a corridor, without committing to a payment.
curl --request POST \
--url https://payment-gw.production-mainnet.atum.xyz/v1/payments/quote-requests \
--header 'Content-Type: application/json' \
--data '
{
"version": "1.0",
"request_id": "qr-2026-04-29-001",
"source": {
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
},
"destination": [
{
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
}
],
"fulfillment_amount": "100000000",
"quote_deadline": "2026-04-29T12:00:03Z",
"fulfillment_deadline": "2026-04-29T12:30:00Z",
"max_source_amount": "101000000",
"settler_auth_required": {},
"quote_selector": "0x742D35cC6634c0532925a3b844Bc9e7595F41360",
"escrow_contract_address": "0x742D35cC6634c0532925a3b844Bc9e7595F41360",
"fulfillment_proxy": "0x892BB2e4F6b14a2B5b82Ba8d33E5925D42D4431F",
"settler_requirements": {
"whitelist": [
"did:pkh:eip155:1:0x742D35cC6634c0532925a3b844Bc9e7595F41360"
],
"blacklist": [
"did:pkh:eip155:1:0x892bb2E4F6b14a2B5b82bA8D33e5925d42d4432f"
]
},
"@context": [
"<string>"
],
"verifiableCredential": [
{
"@context": [
"https://www.w3.org/2018/credentials/v1"
],
"id": "<string>",
"type": [
"VerifiableCredential",
"KYCVerifiedCredential"
],
"issuer": "<string>",
"issuanceDate": "2023-11-07T05:31:56Z",
"credentialSubject": {},
"proof": {},
"expirationDate": "2023-11-07T05:31:56Z",
"credentialStatus": {}
}
]
}
'import requests
url = "https://payment-gw.production-mainnet.atum.xyz/v1/payments/quote-requests"
payload = {
"version": "1.0",
"request_id": "qr-2026-04-29-001",
"source": {
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
},
"destination": [
{
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
}
],
"fulfillment_amount": "100000000",
"quote_deadline": "2026-04-29T12:00:03Z",
"fulfillment_deadline": "2026-04-29T12:30:00Z",
"max_source_amount": "101000000",
"settler_auth_required": {},
"quote_selector": "0x742D35cC6634c0532925a3b844Bc9e7595F41360",
"escrow_contract_address": "0x742D35cC6634c0532925a3b844Bc9e7595F41360",
"fulfillment_proxy": "0x892BB2e4F6b14a2B5b82Ba8d33E5925D42D4431F",
"settler_requirements": {
"whitelist": ["did:pkh:eip155:1:0x742D35cC6634c0532925a3b844Bc9e7595F41360"],
"blacklist": ["did:pkh:eip155:1:0x892bb2E4F6b14a2B5b82bA8D33e5925d42d4432f"]
},
"@context": ["<string>"],
"verifiableCredential": [
{
"@context": ["https://www.w3.org/2018/credentials/v1"],
"id": "<string>",
"type": ["VerifiableCredential", "KYCVerifiedCredential"],
"issuer": "<string>",
"issuanceDate": "2023-11-07T05:31:56Z",
"credentialSubject": {},
"proof": {},
"expirationDate": "2023-11-07T05:31:56Z",
"credentialStatus": {}
}
]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
version: '1.0',
request_id: 'qr-2026-04-29-001',
source: {
asset_identifier: 'eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
account: '0x742D35cC6634c0532925a3b844Bc9e7595F41360'
},
destination: [
{
asset_identifier: 'eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
account: '0x742D35cC6634c0532925a3b844Bc9e7595F41360'
}
],
fulfillment_amount: '100000000',
quote_deadline: '2026-04-29T12:00:03Z',
fulfillment_deadline: '2026-04-29T12:30:00Z',
max_source_amount: '101000000',
settler_auth_required: {},
quote_selector: '0x742D35cC6634c0532925a3b844Bc9e7595F41360',
escrow_contract_address: '0x742D35cC6634c0532925a3b844Bc9e7595F41360',
fulfillment_proxy: '0x892BB2e4F6b14a2B5b82Ba8d33E5925D42D4431F',
settler_requirements: {
whitelist: ['did:pkh:eip155:1:0x742D35cC6634c0532925a3b844Bc9e7595F41360'],
blacklist: ['did:pkh:eip155:1:0x892bb2E4F6b14a2B5b82bA8D33e5925d42d4432f']
},
'@context': ['<string>'],
verifiableCredential: [
{
'@context': ['https://www.w3.org/2018/credentials/v1'],
id: '<string>',
type: ['VerifiableCredential', 'KYCVerifiedCredential'],
issuer: '<string>',
issuanceDate: '2023-11-07T05:31:56Z',
credentialSubject: {},
proof: {},
expirationDate: '2023-11-07T05:31:56Z',
credentialStatus: {}
}
]
})
};
fetch('https://payment-gw.production-mainnet.atum.xyz/v1/payments/quote-requests', 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://payment-gw.production-mainnet.atum.xyz/v1/payments/quote-requests",
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([
'version' => '1.0',
'request_id' => 'qr-2026-04-29-001',
'source' => [
'asset_identifier' => 'eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
'account' => '0x742D35cC6634c0532925a3b844Bc9e7595F41360'
],
'destination' => [
[
'asset_identifier' => 'eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
'account' => '0x742D35cC6634c0532925a3b844Bc9e7595F41360'
]
],
'fulfillment_amount' => '100000000',
'quote_deadline' => '2026-04-29T12:00:03Z',
'fulfillment_deadline' => '2026-04-29T12:30:00Z',
'max_source_amount' => '101000000',
'settler_auth_required' => [
],
'quote_selector' => '0x742D35cC6634c0532925a3b844Bc9e7595F41360',
'escrow_contract_address' => '0x742D35cC6634c0532925a3b844Bc9e7595F41360',
'fulfillment_proxy' => '0x892BB2e4F6b14a2B5b82Ba8d33E5925D42D4431F',
'settler_requirements' => [
'whitelist' => [
'did:pkh:eip155:1:0x742D35cC6634c0532925a3b844Bc9e7595F41360'
],
'blacklist' => [
'did:pkh:eip155:1:0x892bb2E4F6b14a2B5b82bA8D33e5925d42d4432f'
]
],
'@context' => [
'<string>'
],
'verifiableCredential' => [
[
'@context' => [
'https://www.w3.org/2018/credentials/v1'
],
'id' => '<string>',
'type' => [
'VerifiableCredential',
'KYCVerifiedCredential'
],
'issuer' => '<string>',
'issuanceDate' => '2023-11-07T05:31:56Z',
'credentialSubject' => [
],
'proof' => [
],
'expirationDate' => '2023-11-07T05:31:56Z',
'credentialStatus' => [
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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://payment-gw.production-mainnet.atum.xyz/v1/payments/quote-requests"
payload := strings.NewReader("{\n \"version\": \"1.0\",\n \"request_id\": \"qr-2026-04-29-001\",\n \"source\": {\n \"asset_identifier\": \"eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"account\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n },\n \"destination\": [\n {\n \"asset_identifier\": \"eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"account\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n }\n ],\n \"fulfillment_amount\": \"100000000\",\n \"quote_deadline\": \"2026-04-29T12:00:03Z\",\n \"fulfillment_deadline\": \"2026-04-29T12:30:00Z\",\n \"max_source_amount\": \"101000000\",\n \"settler_auth_required\": {},\n \"quote_selector\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\",\n \"escrow_contract_address\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\",\n \"fulfillment_proxy\": \"0x892BB2e4F6b14a2B5b82Ba8d33E5925D42D4431F\",\n \"settler_requirements\": {\n \"whitelist\": [\n \"did:pkh:eip155:1:0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n ],\n \"blacklist\": [\n \"did:pkh:eip155:1:0x892bb2E4F6b14a2B5b82bA8D33e5925d42d4432f\"\n ]\n },\n \"@context\": [\n \"<string>\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"<string>\",\n \"type\": [\n \"VerifiableCredential\",\n \"KYCVerifiedCredential\"\n ],\n \"issuer\": \"<string>\",\n \"issuanceDate\": \"2023-11-07T05:31:56Z\",\n \"credentialSubject\": {},\n \"proof\": {},\n \"expirationDate\": \"2023-11-07T05:31:56Z\",\n \"credentialStatus\": {}\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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://payment-gw.production-mainnet.atum.xyz/v1/payments/quote-requests")
.header("Content-Type", "application/json")
.body("{\n \"version\": \"1.0\",\n \"request_id\": \"qr-2026-04-29-001\",\n \"source\": {\n \"asset_identifier\": \"eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"account\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n },\n \"destination\": [\n {\n \"asset_identifier\": \"eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"account\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n }\n ],\n \"fulfillment_amount\": \"100000000\",\n \"quote_deadline\": \"2026-04-29T12:00:03Z\",\n \"fulfillment_deadline\": \"2026-04-29T12:30:00Z\",\n \"max_source_amount\": \"101000000\",\n \"settler_auth_required\": {},\n \"quote_selector\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\",\n \"escrow_contract_address\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\",\n \"fulfillment_proxy\": \"0x892BB2e4F6b14a2B5b82Ba8d33E5925D42D4431F\",\n \"settler_requirements\": {\n \"whitelist\": [\n \"did:pkh:eip155:1:0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n ],\n \"blacklist\": [\n \"did:pkh:eip155:1:0x892bb2E4F6b14a2B5b82bA8D33e5925d42d4432f\"\n ]\n },\n \"@context\": [\n \"<string>\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"<string>\",\n \"type\": [\n \"VerifiableCredential\",\n \"KYCVerifiedCredential\"\n ],\n \"issuer\": \"<string>\",\n \"issuanceDate\": \"2023-11-07T05:31:56Z\",\n \"credentialSubject\": {},\n \"proof\": {},\n \"expirationDate\": \"2023-11-07T05:31:56Z\",\n \"credentialStatus\": {}\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://payment-gw.production-mainnet.atum.xyz/v1/payments/quote-requests")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"version\": \"1.0\",\n \"request_id\": \"qr-2026-04-29-001\",\n \"source\": {\n \"asset_identifier\": \"eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"account\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n },\n \"destination\": [\n {\n \"asset_identifier\": \"eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"account\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n }\n ],\n \"fulfillment_amount\": \"100000000\",\n \"quote_deadline\": \"2026-04-29T12:00:03Z\",\n \"fulfillment_deadline\": \"2026-04-29T12:30:00Z\",\n \"max_source_amount\": \"101000000\",\n \"settler_auth_required\": {},\n \"quote_selector\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\",\n \"escrow_contract_address\": \"0x742D35cC6634c0532925a3b844Bc9e7595F41360\",\n \"fulfillment_proxy\": \"0x892BB2e4F6b14a2B5b82Ba8d33E5925D42D4431F\",\n \"settler_requirements\": {\n \"whitelist\": [\n \"did:pkh:eip155:1:0x742D35cC6634c0532925a3b844Bc9e7595F41360\"\n ],\n \"blacklist\": [\n \"did:pkh:eip155:1:0x892bb2E4F6b14a2B5b82bA8D33e5925d42d4432f\"\n ]\n },\n \"@context\": [\n \"<string>\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"<string>\",\n \"type\": [\n \"VerifiableCredential\",\n \"KYCVerifiedCredential\"\n ],\n \"issuer\": \"<string>\",\n \"issuanceDate\": \"2023-11-07T05:31:56Z\",\n \"credentialSubject\": {},\n \"proof\": {},\n \"expirationDate\": \"2023-11-07T05:31:56Z\",\n \"credentialStatus\": {}\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"quote_request_id": "qr_a1b2c3d4-5678-90ef-1234-567890abcdef",
"status": "ready",
"idempotent_replay": true,
"source": {
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
},
"destination": [
{
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
}
],
"fulfillment_amount": "100000000",
"max_source_amount": "101000000",
"fulfillment_deadline": "2026-04-29T12:30:00Z",
"quote_deadline": "2026-04-29T12:00:03Z",
"quotes": [
{
"quote_id": "0x4e7f...c2a1",
"fulfillment_quote": {}
}
],
"requested_count": 8,
"decline_summary": [
{
"reason": "INSUFFICIENT_LIQUIDITY",
"count": 4,
"retry_classification": "RETRY_AFTER_DELAY",
"docs_url": "https://docs.atum.xyz/decline-reasons#insufficient-liquidity"
}
]
}{
"quote_request_id": "qr_a1b2c3d4-5678-90ef-1234-567890abcdef",
"status": "collecting",
"idempotent_replay": true,
"source": {
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
},
"destination": [
{
"asset_identifier": "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"account": "0x742D35cC6634c0532925a3b844Bc9e7595F41360"
}
],
"fulfillment_amount": "100000000",
"max_source_amount": "101000000",
"fulfillment_deadline": "2026-04-29T12:30:00Z",
"quote_deadline": "2026-04-29T12:00:03Z"
}{
"code": "INVALID_SOURCE_ASSET",
"message": "The source asset identifier is not a valid CAIP-19 asset.",
"request_id": "req_123456789",
"payment_id": "0xc7108e200d11580e7e75185991084b42a535af588ba8267cd0d1e7df089e5c9c",
"docs_url": "<string>",
"domain": "PAYMENT_GATEWAY",
"retry_classification": "RECONCILE_THEN_DECIDE",
"request_id_reusable": false
}{
"code": "INVALID_SOURCE_ASSET",
"message": "The source asset identifier is not a valid CAIP-19 asset.",
"request_id": "req_123456789",
"payment_id": "0xc7108e200d11580e7e75185991084b42a535af588ba8267cd0d1e7df089e5c9c",
"docs_url": "<string>",
"domain": "PAYMENT_GATEWAY",
"retry_classification": "RECONCILE_THEN_DECIDE",
"request_id_reusable": false
}{
"code": "INVALID_SOURCE_ASSET",
"message": "The source asset identifier is not a valid CAIP-19 asset.",
"request_id": "req_123456789",
"payment_id": "0xc7108e200d11580e7e75185991084b42a535af588ba8267cd0d1e7df089e5c9c",
"docs_url": "<string>",
"domain": "PAYMENT_GATEWAY",
"retry_classification": "RECONCILE_THEN_DECIDE",
"request_id_reusable": false
}{
"code": "INVALID_SOURCE_ASSET",
"message": "The source asset identifier is not a valid CAIP-19 asset.",
"request_id": "req_123456789",
"payment_id": "0xc7108e200d11580e7e75185991084b42a535af588ba8267cd0d1e7df089e5c9c",
"docs_url": "<string>",
"domain": "PAYMENT_GATEWAY",
"retry_classification": "RECONCILE_THEN_DECIDE",
"request_id_reusable": false
}Query Parameters
Return a handle immediately (false, default) or hold the connection for collected quotes (true).
Body
Request body for opening a quote-request batch. Structurally the existing PaymentRequest
with sender_auth omitted (the spend authorization is deferred to the award call); see
schemas/declarations/PaymentRequest/v1/schema.json.
Semver-shaped declaration version (MAJOR.MINOR), locked to major 1 for v1. Producers emit the canonical value exported by the bindings' Version constant.
^1\.[0-9]+$"1.0"
Client-supplied idempotency key for this quote-request. The same request_id from the same originator returns the same quote_request_id. Independent of the award-call request_id.
"qr-2026-04-29-001"
Represents a cryptocurrency or token in a specific wallet. This tells the system what asset you're sending/receiving and which wallet to use.
Show child attributes
Show child attributes
Array of destination assets for the settlement agent to choose from (at least one required, at most 16). The ceiling bounds the fan-out one request can buy: every consumer iterates this list.
1 - 16 elementsShow child attributes
Show child attributes
The exact amount to be received at the destination (smallest unit, e.g. wei or cents).
"100000000"
Required. End of the collection window. After this point no new quotes are accepted. The gateway injects no default and never mutates the originator-supplied body, so the value is carried through verbatim to the award call. It must be supplied and must be in the future. Must be strictly earlier than fulfillment_deadline.
"2026-04-29T12:00:03Z"
Required. Final deadline for completing the payment. Past it the payment fails and eligible for refund. The gateway injects no default and never mutates the originator-supplied body, so the value is carried through verbatim to the award call. It must be supplied and must be in the future. Must be strictly later than quote_deadline.
"2026-04-29T12:30:00Z"
Optional cap on what the originator is willing to spend from source (smallest unit). Quotes with source_amount above this are filtered. No cap applied if omitted.
"101000000"
Policy requirements for settler authentication. Keys are policy names, values indicate if required.
Show child attributes
Show child attributes
Optional identity verification using cryptographic credentials.
DEPRECATED. Credentials are moving to a holder-signed W3C VerifiablePresentation that travels alongside a request rather than inside it. That envelope is not part of this HTTP contract, so there is nothing here to move them to yet: treat this as a legacy carrier, and do not build a new integration on it.
Show child attributes
Show child attributes
Wallet address or public key of a trusted service that auto-selects the best rate. Leave empty to use the default selector.
"0x742D35cC6634c0532925a3b844Bc9e7595F41360"
Optional third-party service that independently verifies delivery. Leave empty for the default verifier.
Show child attributes
Show child attributes
Optional escrow contract address. Leave empty to use the default.
"0x742D35cC6634c0532925a3b844Bc9e7595F41360"
Optional fulfillment-proxy contract address on the destination chain. Leave empty to use the default.
"0x892BB2e4F6b14a2B5b82Ba8d33E5925D42D4431F"
Optional settler filtering. If whitelist is present, only whitelisted settlers may win. If blacklist is present, blacklisted settlers are excluded. Both can be specified; blacklist takes precedence (a settler in both is rejected).
Show child attributes
Show child attributes
Optional JSON-LD context URLs — present when the originator wraps the request in a W3C Data Integrity envelope so a downstream verifier can recover the signer identity.
W3C Data Integrity proof conforming to the Data Integrity 1.0 specification. Which of jws or proofValue is required depends on the cryptosuite named in type, and that pairing is checked where the proof is verified rather than by this schema, so a document can satisfy the schema and still be refused at verification.
Show child attributes
Show child attributes
Optional document-level W3C Verifiable Credentials (e.g. KnownToAtum about the request producer).
Show child attributes
Show child attributes
Response
Quote-request resolved synchronously. status is ready when quotes were collected,
or collecting when the sync wait cap fired before the quote deadline.
Synchronous response to POST /v1/payments/quote-requests. Self-contained — the corridor fields are echoed at the response root so a drop-recovery client can build the award call without retaining the original request body.
The corridor echoed here describes the batch you actually receive. On an idempotent replay that is the ORIGINAL batch's corridor and window, which may differ from what you just sent in the ways a retry is allowed to differ (the deadlines, and address casing).
Gateway-generated resource ID for the batch, used in subsequent status reads and awards.
"qr_a1b2c3d4-5678-90ef-1234-567890abcdef"
Collection-phase outcome of the create call:
ready— collection complete;quotespopulated. If no settler bid, this is stillreadywith an emptyquotesarray (a successful "no quotes available" result — distinct fromexpired, which only applies to collected quotes that later lapse).collecting— the sync wait cap fired before the quote deadline; poll the status endpoint for quotes. Theawardedandexpiredlifecycle states are observed only via the status endpoint, not here.
collecting, ready "ready"
Whether this response describes a batch that already existed, rather than one opened
by this request. true means the request_id had been used before and you are being
handed the ORIGINAL batch — no second batch was opened and no second broadcast went
out to settlement agents.
Re-attempting a quote-request. Re-submit the same request and you get the same
batch back. You may re-send the original bytes unchanged: quote_deadline bounds the
collection window and is short, so it will usually have expired by the time you
retry, and an expired deadline on a re-submission is not an error — the request is
resolved onto the batch that already exists rather than used to open one.
Re-signing with fresh deadlines is equally fine and returns the same batch.
The window is NOT extended either way: it belongs to the batch, and quote_deadline
in this response is the batch's own. Read status to see whether collection is
still running.
What you must not change under one request_id is the corridor's economics —
accounts, assets, or amounts — which are rejected with 409
IDEMPOTENCY_TERMS_MISMATCH rather than resolved onto the first batch. A genuinely
different corridor needs a new request_id.
Present on every response, false for a newly opened batch. A response without the
field is from a gateway predating it, not a newly opened batch.
Represents a cryptocurrency or token in a specific wallet. This tells the system what asset you're sending/receiving and which wallet to use.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
"100000000"
"101000000"
"2026-04-29T12:30:00Z"
"2026-04-29T12:00:03Z"
Collected quotes. Present when status is ready — an empty array if no settler bid.
Show child attributes
Show child attributes
How many agents the request was broadcast to, so silence is distinguishable from a decline without a second call. Same meaning and same absence rule as on the status endpoint: absent means unknown, never zero.
8
Why the request drew few or no quotes, carried here so that a ready response with an
empty quotes array explains itself rather than requiring a follow-up read.
Same counting rules as the status endpoint: every declining agent counted exactly once
under its most recent reason, empty when nobody declined, absent when the detail could not
be read. Provisional while status is collecting, because agents are still responding.
Show child attributes
Show child attributes