curl --request POST \
--url https://sandbox-api.polygon.technology/v0.11/quotes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"customerId": "cst_vfa0nxw6zvyws9g237jrxn4y7k",
"source": {
"type": "walletOms",
"details": {
"id": "wlt_5h4jzzpr9xre3bamd9ca7qyghn",
"asset": "usdc",
"network": "polygon"
},
"amount": "100.00"
},
"destination": {
"type": "bankUs",
"details": {
"id": "ext_fky491gakzj0dd46qb6whsr2vq",
"asset": "usd",
"network": "ach",
"accountHolder": "customer"
}
},
"sponsorGas": true,
"metadata": {
"orderId": "order_12345"
}
}
'import requests
url = "https://sandbox-api.polygon.technology/v0.11/quotes"
payload = {
"customerId": "cst_vfa0nxw6zvyws9g237jrxn4y7k",
"source": {
"type": "walletOms",
"details": {
"id": "wlt_5h4jzzpr9xre3bamd9ca7qyghn",
"asset": "usdc",
"network": "polygon"
},
"amount": "100.00"
},
"destination": {
"type": "bankUs",
"details": {
"id": "ext_fky491gakzj0dd46qb6whsr2vq",
"asset": "usd",
"network": "ach",
"accountHolder": "customer"
}
},
"sponsorGas": True,
"metadata": { "orderId": "order_12345" }
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
customerId: 'cst_vfa0nxw6zvyws9g237jrxn4y7k',
source: {
type: 'walletOms',
details: {id: 'wlt_5h4jzzpr9xre3bamd9ca7qyghn', asset: 'usdc', network: 'polygon'},
amount: '100.00'
},
destination: {
type: 'bankUs',
details: {
id: 'ext_fky491gakzj0dd46qb6whsr2vq',
asset: 'usd',
network: 'ach',
accountHolder: 'customer'
}
},
sponsorGas: true,
metadata: {orderId: 'order_12345'}
})
};
fetch('https://sandbox-api.polygon.technology/v0.11/quotes', 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://sandbox-api.polygon.technology/v0.11/quotes",
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([
'customerId' => 'cst_vfa0nxw6zvyws9g237jrxn4y7k',
'source' => [
'type' => 'walletOms',
'details' => [
'id' => 'wlt_5h4jzzpr9xre3bamd9ca7qyghn',
'asset' => 'usdc',
'network' => 'polygon'
],
'amount' => '100.00'
],
'destination' => [
'type' => 'bankUs',
'details' => [
'id' => 'ext_fky491gakzj0dd46qb6whsr2vq',
'asset' => 'usd',
'network' => 'ach',
'accountHolder' => 'customer'
]
],
'sponsorGas' => true,
'metadata' => [
'orderId' => 'order_12345'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>"
],
]);
$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://sandbox-api.polygon.technology/v0.11/quotes"
payload := strings.NewReader("{\n \"customerId\": \"cst_vfa0nxw6zvyws9g237jrxn4y7k\",\n \"source\": {\n \"type\": \"walletOms\",\n \"details\": {\n \"id\": \"wlt_5h4jzzpr9xre3bamd9ca7qyghn\",\n \"asset\": \"usdc\",\n \"network\": \"polygon\"\n },\n \"amount\": \"100.00\"\n },\n \"destination\": {\n \"type\": \"bankUs\",\n \"details\": {\n \"id\": \"ext_fky491gakzj0dd46qb6whsr2vq\",\n \"asset\": \"usd\",\n \"network\": \"ach\",\n \"accountHolder\": \"customer\"\n }\n },\n \"sponsorGas\": true,\n \"metadata\": {\n \"orderId\": \"order_12345\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Authorization", "Bearer <token>")
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://sandbox-api.polygon.technology/v0.11/quotes")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"cst_vfa0nxw6zvyws9g237jrxn4y7k\",\n \"source\": {\n \"type\": \"walletOms\",\n \"details\": {\n \"id\": \"wlt_5h4jzzpr9xre3bamd9ca7qyghn\",\n \"asset\": \"usdc\",\n \"network\": \"polygon\"\n },\n \"amount\": \"100.00\"\n },\n \"destination\": {\n \"type\": \"bankUs\",\n \"details\": {\n \"id\": \"ext_fky491gakzj0dd46qb6whsr2vq\",\n \"asset\": \"usd\",\n \"network\": \"ach\",\n \"accountHolder\": \"customer\"\n }\n },\n \"sponsorGas\": true,\n \"metadata\": {\n \"orderId\": \"order_12345\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.polygon.technology/v0.11/quotes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customerId\": \"cst_vfa0nxw6zvyws9g237jrxn4y7k\",\n \"source\": {\n \"type\": \"walletOms\",\n \"details\": {\n \"id\": \"wlt_5h4jzzpr9xre3bamd9ca7qyghn\",\n \"asset\": \"usdc\",\n \"network\": \"polygon\"\n },\n \"amount\": \"100.00\"\n },\n \"destination\": {\n \"type\": \"bankUs\",\n \"details\": {\n \"id\": \"ext_fky491gakzj0dd46qb6whsr2vq\",\n \"asset\": \"usd\",\n \"network\": \"ach\",\n \"accountHolder\": \"customer\"\n }\n },\n \"sponsorGas\": true,\n \"metadata\": {\n \"orderId\": \"order_12345\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "qt_0gq9aesz4wb5etdv88z1j61qcm",
"object": "quote",
"status": "open",
"sourceToDestination": "cryptoToFiatAccount",
"customerId": "cst_vfa0nxw6zvyws9g237jrxn4y7k",
"source": {
"party": {
"relationship": "customer",
"customerId": "cst_vfa0nxw6zvyws9g237jrxn4y7k",
"entityType": "individual"
},
"type": "walletOms",
"category": "crypto",
"details": {
"id": "wlt_5h4jzzpr9xre3bamd9ca7qyghn",
"asset": "usdc",
"network": "polygon",
"blockchainAddress": "0x7B3A9F2C4D1eA8bf6390cE5D2b7fA104c8e3D9B1",
"custodyType": "custodial"
}
},
"destination": {
"party": {
"relationship": "externalRegistered",
"counterpartyId": "ctp_yp5z8m7n22svc0vh6edqgcfdat",
"entityType": "individual",
"name": "Alice Smith",
"address": {
"line1": "500 Market St",
"city": "San Francisco",
"state": "CA",
"country": "US",
"zipCode": "94105"
}
},
"type": "bankUs",
"category": "fiatAccount",
"details": {
"id": "ext_fky491gakzj0dd46qb6whsr2vq",
"asset": "usd",
"network": "ach",
"accountNumberLast4": "1234",
"routingNumber": "021000021",
"bankName": "Chase",
"accountType": "checking"
},
"payoutOrigin": {
"type": "bank",
"details": {
"accountHolder": "customer",
"accountHolderName": "Jane Smith"
}
}
},
"pricing": {
"source": {
"asset": "usdc",
"amountGross": "100.00",
"amountNet": "100.00",
"feesDeducted": {
"total": "0.00",
"developer": "0.00",
"oms": "0.00",
"gas": "0.00"
}
},
"destination": {
"asset": "usd",
"amountGross": "100.00",
"amountNet": "100.00",
"feesDeducted": {
"total": "0.00",
"developer": "0.00",
"oms": "0.00",
"gas": "0.00"
}
},
"pair": "usdc/usd",
"exchangeRate": "1.0000",
"effectiveRate": "1.0000",
"fixedAmountSide": "source",
"sponsorGas": true,
"sponsorGasCost": "0.00"
},
"expiresAt": "2026-03-14T19:15:00Z",
"createdAt": "2026-03-14T19:00:00Z"
}Create a payment quote
Creates a payment quote with a locked exchange rate and fee breakdown for a prospective transfer. Quotes expire after a short window; reference the returned quote ID when executing the transaction. Pass an Idempotency-Key header to safely retry.
A disallowed source→destination instrument pair is rejected with
422 unsupportedInstrumentCombination before any quote is created; the
error body carries a details object of
{ source, destination, supportedDestinations }. (Not modeled as a typed
error arm here so the other 422 codes on this operation keep their shape.)
curl --request POST \
--url https://sandbox-api.polygon.technology/v0.11/quotes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"customerId": "cst_vfa0nxw6zvyws9g237jrxn4y7k",
"source": {
"type": "walletOms",
"details": {
"id": "wlt_5h4jzzpr9xre3bamd9ca7qyghn",
"asset": "usdc",
"network": "polygon"
},
"amount": "100.00"
},
"destination": {
"type": "bankUs",
"details": {
"id": "ext_fky491gakzj0dd46qb6whsr2vq",
"asset": "usd",
"network": "ach",
"accountHolder": "customer"
}
},
"sponsorGas": true,
"metadata": {
"orderId": "order_12345"
}
}
'import requests
url = "https://sandbox-api.polygon.technology/v0.11/quotes"
payload = {
"customerId": "cst_vfa0nxw6zvyws9g237jrxn4y7k",
"source": {
"type": "walletOms",
"details": {
"id": "wlt_5h4jzzpr9xre3bamd9ca7qyghn",
"asset": "usdc",
"network": "polygon"
},
"amount": "100.00"
},
"destination": {
"type": "bankUs",
"details": {
"id": "ext_fky491gakzj0dd46qb6whsr2vq",
"asset": "usd",
"network": "ach",
"accountHolder": "customer"
}
},
"sponsorGas": True,
"metadata": { "orderId": "order_12345" }
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
customerId: 'cst_vfa0nxw6zvyws9g237jrxn4y7k',
source: {
type: 'walletOms',
details: {id: 'wlt_5h4jzzpr9xre3bamd9ca7qyghn', asset: 'usdc', network: 'polygon'},
amount: '100.00'
},
destination: {
type: 'bankUs',
details: {
id: 'ext_fky491gakzj0dd46qb6whsr2vq',
asset: 'usd',
network: 'ach',
accountHolder: 'customer'
}
},
sponsorGas: true,
metadata: {orderId: 'order_12345'}
})
};
fetch('https://sandbox-api.polygon.technology/v0.11/quotes', 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://sandbox-api.polygon.technology/v0.11/quotes",
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([
'customerId' => 'cst_vfa0nxw6zvyws9g237jrxn4y7k',
'source' => [
'type' => 'walletOms',
'details' => [
'id' => 'wlt_5h4jzzpr9xre3bamd9ca7qyghn',
'asset' => 'usdc',
'network' => 'polygon'
],
'amount' => '100.00'
],
'destination' => [
'type' => 'bankUs',
'details' => [
'id' => 'ext_fky491gakzj0dd46qb6whsr2vq',
'asset' => 'usd',
'network' => 'ach',
'accountHolder' => 'customer'
]
],
'sponsorGas' => true,
'metadata' => [
'orderId' => 'order_12345'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>"
],
]);
$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://sandbox-api.polygon.technology/v0.11/quotes"
payload := strings.NewReader("{\n \"customerId\": \"cst_vfa0nxw6zvyws9g237jrxn4y7k\",\n \"source\": {\n \"type\": \"walletOms\",\n \"details\": {\n \"id\": \"wlt_5h4jzzpr9xre3bamd9ca7qyghn\",\n \"asset\": \"usdc\",\n \"network\": \"polygon\"\n },\n \"amount\": \"100.00\"\n },\n \"destination\": {\n \"type\": \"bankUs\",\n \"details\": {\n \"id\": \"ext_fky491gakzj0dd46qb6whsr2vq\",\n \"asset\": \"usd\",\n \"network\": \"ach\",\n \"accountHolder\": \"customer\"\n }\n },\n \"sponsorGas\": true,\n \"metadata\": {\n \"orderId\": \"order_12345\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Authorization", "Bearer <token>")
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://sandbox-api.polygon.technology/v0.11/quotes")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"cst_vfa0nxw6zvyws9g237jrxn4y7k\",\n \"source\": {\n \"type\": \"walletOms\",\n \"details\": {\n \"id\": \"wlt_5h4jzzpr9xre3bamd9ca7qyghn\",\n \"asset\": \"usdc\",\n \"network\": \"polygon\"\n },\n \"amount\": \"100.00\"\n },\n \"destination\": {\n \"type\": \"bankUs\",\n \"details\": {\n \"id\": \"ext_fky491gakzj0dd46qb6whsr2vq\",\n \"asset\": \"usd\",\n \"network\": \"ach\",\n \"accountHolder\": \"customer\"\n }\n },\n \"sponsorGas\": true,\n \"metadata\": {\n \"orderId\": \"order_12345\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.polygon.technology/v0.11/quotes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customerId\": \"cst_vfa0nxw6zvyws9g237jrxn4y7k\",\n \"source\": {\n \"type\": \"walletOms\",\n \"details\": {\n \"id\": \"wlt_5h4jzzpr9xre3bamd9ca7qyghn\",\n \"asset\": \"usdc\",\n \"network\": \"polygon\"\n },\n \"amount\": \"100.00\"\n },\n \"destination\": {\n \"type\": \"bankUs\",\n \"details\": {\n \"id\": \"ext_fky491gakzj0dd46qb6whsr2vq\",\n \"asset\": \"usd\",\n \"network\": \"ach\",\n \"accountHolder\": \"customer\"\n }\n },\n \"sponsorGas\": true,\n \"metadata\": {\n \"orderId\": \"order_12345\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "qt_0gq9aesz4wb5etdv88z1j61qcm",
"object": "quote",
"status": "open",
"sourceToDestination": "cryptoToFiatAccount",
"customerId": "cst_vfa0nxw6zvyws9g237jrxn4y7k",
"source": {
"party": {
"relationship": "customer",
"customerId": "cst_vfa0nxw6zvyws9g237jrxn4y7k",
"entityType": "individual"
},
"type": "walletOms",
"category": "crypto",
"details": {
"id": "wlt_5h4jzzpr9xre3bamd9ca7qyghn",
"asset": "usdc",
"network": "polygon",
"blockchainAddress": "0x7B3A9F2C4D1eA8bf6390cE5D2b7fA104c8e3D9B1",
"custodyType": "custodial"
}
},
"destination": {
"party": {
"relationship": "externalRegistered",
"counterpartyId": "ctp_yp5z8m7n22svc0vh6edqgcfdat",
"entityType": "individual",
"name": "Alice Smith",
"address": {
"line1": "500 Market St",
"city": "San Francisco",
"state": "CA",
"country": "US",
"zipCode": "94105"
}
},
"type": "bankUs",
"category": "fiatAccount",
"details": {
"id": "ext_fky491gakzj0dd46qb6whsr2vq",
"asset": "usd",
"network": "ach",
"accountNumberLast4": "1234",
"routingNumber": "021000021",
"bankName": "Chase",
"accountType": "checking"
},
"payoutOrigin": {
"type": "bank",
"details": {
"accountHolder": "customer",
"accountHolderName": "Jane Smith"
}
}
},
"pricing": {
"source": {
"asset": "usdc",
"amountGross": "100.00",
"amountNet": "100.00",
"feesDeducted": {
"total": "0.00",
"developer": "0.00",
"oms": "0.00",
"gas": "0.00"
}
},
"destination": {
"asset": "usd",
"amountGross": "100.00",
"amountNet": "100.00",
"feesDeducted": {
"total": "0.00",
"developer": "0.00",
"oms": "0.00",
"gas": "0.00"
}
},
"pair": "usdc/usd",
"exchangeRate": "1.0000",
"effectiveRate": "1.0000",
"fixedAmountSide": "source",
"sponsorGas": true,
"sponsorGasCost": "0.00"
},
"expiresAt": "2026-03-14T19:15:00Z",
"createdAt": "2026-03-14T19:00:00Z"
}Authorizations
Token from POST /auth/token
Headers
Required on POST and PUT requests. Use a unique value per logical mutation attempt, for example a UUID.
Body
Request body for creating a quote. Pick a type on each side and set the
amount on exactly one side; OMS calculates the other.
The customer this quote is for (cst_ prefix).
What funds the transaction. Pick a type: an OMS crypto wallet (walletOms)
or a registered card (card, pull-from-card).
- OMS wallet
- Fiat wallet
- Card
Hide child attributes
Hide child attributes
Type discriminator.
walletOms Wire-safe decimal string for financial float values (USD amounts, percentages).
The instrument that receives the funds. Pick a type: a wallet (walletOms /
walletExternal), a bank account (bankUs / bankIban / bankCanada), a card, or cash.
- OMS wallet
- External wallet
- US bank account
- IBAN bank account
- Canadian bank account
- Card
- Cash
Hide child attributes
Hide child attributes
Type discriminator.
walletOms Wire-safe decimal string for financial float values (USD amounts, percentages).
When true, OMS absorbs the on-chain gas cost for the destination delivery. Only
true is currently supported. Ignored for non-crypto destinations (no on-chain leg).
Card rail only: INTERNAL (Coinme custodies the crypto) or EXTERNAL (on-chain wallet). Defaults: card buy -> external, card sell -> internal. Ignored for non-card rails.
internal, external Response
The request has succeeded and a new resource has been created as a result.
A price quote for moving money between two instruments. It locks an exchange rate and the amounts for a short window; execute it by creating a transaction that references this quote's id.
Quote ID (qt_ prefix).
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$Resource type discriminator. Always "quote".
quote Current status of the quote.
open, accepted, expired The OMS customer that owns this record (cst_ prefix).
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$The funding side, echoed from the request with resolved instrument detail.
- OMS wallet
- External wallet
- Fiat wallet
- US bank account
- IBAN bank account
- Canadian bank account
- Card
- Cash
Hide child attributes
Hide child attributes
Type discriminator.
walletOms High-level grouping: fiatAccount for bank or card accounts, crypto for wallets.
crypto WalletOms instrument details: an OMS-custodied crypto wallet.
Hide child attributes
Hide child attributes
Internal OMS wallet (wlt_ prefix; legacy acc_ also accepted on input).
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$Canonical asset identifier.
Network identifier.
On-chain address.
How the wallet is held: custodial or embedded.
custodial, embedded On-chain transaction hash.
Structured identity of who is on this side.
- Customer
- Another customer
- Registered external account
- Unregistered external account
Hide child attributes
Hide child attributes
Relationship discriminator.
customer The OMS customer that owns this record (cst_ prefix).
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$individual, business The receiving side, echoed from the request with resolved instrument detail.
- OMS wallet
- External wallet
- Fiat wallet
- US bank account
- IBAN bank account
- Canadian bank account
- Card
- Cash
Hide child attributes
Hide child attributes
Type discriminator.
walletOms High-level grouping: fiatAccount for bank or card accounts, crypto for wallets.
crypto WalletOms instrument details: an OMS-custodied crypto wallet.
Hide child attributes
Hide child attributes
Internal OMS wallet (wlt_ prefix; legacy acc_ also accepted on input).
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$Canonical asset identifier.
Network identifier.
On-chain address.
How the wallet is held: custodial or embedded.
custodial, embedded On-chain transaction hash.
BPN extension: resolved on-chain asset identity (protocol/chainId/tokenId).
Structured identity of who is on this side.
- Customer
- Another customer
- Registered external account
- Unregistered external account
Hide child attributes
Hide child attributes
Relationship discriminator.
customer The OMS customer that owns this record (cst_ prefix).
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$individual, business Payout originates from a bank account. v0.10 wraps the fields in a details
envelope (matches the precursor shape). accountNumber/routingNumber are
full sending-account detail rendered on the Transaction only, null on
Quote/Deposit Address (choice-only).
- Bank
- Blockchain
Hide child attributes
Hide child attributes
Type discriminator.
bank Bank payout-origin detail. accountHolder(+Name) is the chosen sender
identity (echoed on Quote/DA too); accountNumber/routingNumber are the
full sending-account coordinates (Transaction only, else null); virtualAccountId
is the VA the funds were pulled from.
Hide child attributes
Hide child attributes
Who holds the payout bank account (OMS closed enum). customer is the only
valid value.
customer Name of the sending account holder.
Bank account number.
US ABA routing number.
Virtual Account ID (va_ prefix).
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$Consolidated economics.
Hide child attributes
Hide child attributes
Economics for the source side, denominated in the source asset.
Hide child attributes
Hide child attributes
Currency these amounts are in. Same as the side's instrument asset, repeated here so pricing is self-contained.
Amount on this side before fees are applied.
Amount after fees: what is actually pulled from a source, or delivered to a destination.
Itemized fees deducted on this side.
Hide child attributes
Hide child attributes
Per-side aggregated developer fee total in this side's asset. Always "0" in alpha - alpha invariant, mirrors the gas line.
Economics for the destination side, denominated in the destination asset.
Hide child attributes
Hide child attributes
Currency these amounts are in. Same as the side's instrument asset, repeated here so pricing is self-contained.
Amount on this side before fees are applied.
Amount after fees: what is actually pulled from a source, or delivered to a destination.
Itemized fees deducted on this side.
Hide child attributes
Hide child attributes
Per-side aggregated developer fee total in this side's asset. Always "0" in alpha - alpha invariant, mirrors the gas line.
Asset pair, e.g. "usdc/usd".
Mid-market rate between source and destination assets. Identity: source.amountNet × exchangeRate = destination.amountGross.
All-in rate including all fees. Identity: source.amountGross × effectiveRate = destination.amountNet.
The side you set amount on when creating the quote. OMS calculated the other side.
source, destination When true, OMS absorbs the destination gas cost. Currently always true.
Gas absorbed by the developer when sponsorGas is true. Currently always 0.00.
Corridor composite derived from the two sides.
cryptoToCrypto, cryptoToCash, cryptoToFiatAccount, cashToCrypto, fiatAccountToCrypto, fiatAccountToFiatAccount When the locked pricing expires.
When the quote was created.
Was this page helpful?