# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
infinite quotes create --source-amount 10000 --source-currency USD --dest-currency USDCCreate a quote.
# With an agent key: use MCP tool get_quote with amount and destinationCurrency.import requests
url = "https://sandbox.api.infinite.dev/v1/quotes"
payload = {
"sourceAmount": {
"currency": "USD",
"rawValue": "100000"
},
"destinationAmount": {
"currency": "USDC",
"rawValue": "100000000"
},
"sourceCurrency": "USD",
"destinationCurrency": "USDC",
"destinationCountry": "US",
"holdQuote": False,
"payinMethod": "base",
"payoutMethod": "fast_sg",
"stablecoinParity": True,
"onBehalfOf": "cus_abc123"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
sourceAmount: {currency: 'USD', rawValue: '100000'},
destinationAmount: {currency: 'USDC', rawValue: '100000000'},
sourceCurrency: 'USD',
destinationCurrency: 'USDC',
destinationCountry: 'US',
holdQuote: false,
payinMethod: 'base',
payoutMethod: 'fast_sg',
stablecoinParity: true,
onBehalfOf: 'cus_abc123'
})
};
fetch('https://sandbox.api.infinite.dev/v1/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.infinite.dev/v1/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([
'sourceAmount' => [
'currency' => 'USD',
'rawValue' => '100000'
],
'destinationAmount' => [
'currency' => 'USDC',
'rawValue' => '100000000'
],
'sourceCurrency' => 'USD',
'destinationCurrency' => 'USDC',
'destinationCountry' => 'US',
'holdQuote' => false,
'payinMethod' => 'base',
'payoutMethod' => 'fast_sg',
'stablecoinParity' => true,
'onBehalfOf' => 'cus_abc123'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://sandbox.api.infinite.dev/v1/quotes"
payload := strings.NewReader("{\n \"sourceAmount\": {\n \"currency\": \"USD\",\n \"rawValue\": \"100000\"\n },\n \"destinationAmount\": {\n \"currency\": \"USDC\",\n \"rawValue\": \"100000000\"\n },\n \"sourceCurrency\": \"USD\",\n \"destinationCurrency\": \"USDC\",\n \"destinationCountry\": \"US\",\n \"holdQuote\": false,\n \"payinMethod\": \"base\",\n \"payoutMethod\": \"fast_sg\",\n \"stablecoinParity\": true,\n \"onBehalfOf\": \"cus_abc123\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.infinite.dev/v1/quotes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sourceAmount\": {\n \"currency\": \"USD\",\n \"rawValue\": \"100000\"\n },\n \"destinationAmount\": {\n \"currency\": \"USDC\",\n \"rawValue\": \"100000000\"\n },\n \"sourceCurrency\": \"USD\",\n \"destinationCurrency\": \"USDC\",\n \"destinationCountry\": \"US\",\n \"holdQuote\": false,\n \"payinMethod\": \"base\",\n \"payoutMethod\": \"fast_sg\",\n \"stablecoinParity\": true,\n \"onBehalfOf\": \"cus_abc123\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/quotes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sourceAmount\": {\n \"currency\": \"USD\",\n \"rawValue\": \"100000\"\n },\n \"destinationAmount\": {\n \"currency\": \"USDC\",\n \"rawValue\": \"100000000\"\n },\n \"sourceCurrency\": \"USD\",\n \"destinationCurrency\": \"USDC\",\n \"destinationCountry\": \"US\",\n \"holdQuote\": false,\n \"payinMethod\": \"base\",\n \"payoutMethod\": \"fast_sg\",\n \"stablecoinParity\": true,\n \"onBehalfOf\": \"cus_abc123\"\n}"
response = http.request(request)
puts response.read_body{
"sourceAmount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"destinationAmount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"exchangeRate": "1.00500",
"infiniteFee": {
"fixed": null,
"variable": null
},
"createdAt": "2026-09-15T10:30:00Z",
"lockable": true,
"id": "quote_abc123",
"developerFee": {
"fixed": null,
"variable": null
},
"sourceRail": "ACH",
"destinationRail": "SWIFT",
"expiresAt": "2026-09-15T10:35:00Z",
"route": {
"supported": true,
"flow": "CRYPTO_TO_SWIFT",
"summary": "USDC → USD",
"totalFeeBps": 2,
"estimate": {
"estimatedReceiveAt": "2026-09-17T10:30:00Z",
"estimatedMinutes": 2880,
"nextCutoff": "2026-09-15T15:00:00Z",
"cutoffTimezone": "Asia/Singapore"
},
"minimumAmount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"legs": [
{
"type": "payout_fiat",
"inputCurrency": "USDC",
"outputCurrency": "USD",
"inputRail": "ETHEREUM",
"outputRail": "SWIFT",
"feeBps": 2,
"settlementType": "T+2"
}
]
}
}Create a quote
Create a quote. Use the Idempotency-Key header to prevent duplicate creation.
# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
infinite quotes create --source-amount 10000 --source-currency USD --dest-currency USDCCreate a quote.
# With an agent key: use MCP tool get_quote with amount and destinationCurrency.import requests
url = "https://sandbox.api.infinite.dev/v1/quotes"
payload = {
"sourceAmount": {
"currency": "USD",
"rawValue": "100000"
},
"destinationAmount": {
"currency": "USDC",
"rawValue": "100000000"
},
"sourceCurrency": "USD",
"destinationCurrency": "USDC",
"destinationCountry": "US",
"holdQuote": False,
"payinMethod": "base",
"payoutMethod": "fast_sg",
"stablecoinParity": True,
"onBehalfOf": "cus_abc123"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
sourceAmount: {currency: 'USD', rawValue: '100000'},
destinationAmount: {currency: 'USDC', rawValue: '100000000'},
sourceCurrency: 'USD',
destinationCurrency: 'USDC',
destinationCountry: 'US',
holdQuote: false,
payinMethod: 'base',
payoutMethod: 'fast_sg',
stablecoinParity: true,
onBehalfOf: 'cus_abc123'
})
};
fetch('https://sandbox.api.infinite.dev/v1/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.infinite.dev/v1/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([
'sourceAmount' => [
'currency' => 'USD',
'rawValue' => '100000'
],
'destinationAmount' => [
'currency' => 'USDC',
'rawValue' => '100000000'
],
'sourceCurrency' => 'USD',
'destinationCurrency' => 'USDC',
'destinationCountry' => 'US',
'holdQuote' => false,
'payinMethod' => 'base',
'payoutMethod' => 'fast_sg',
'stablecoinParity' => true,
'onBehalfOf' => 'cus_abc123'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://sandbox.api.infinite.dev/v1/quotes"
payload := strings.NewReader("{\n \"sourceAmount\": {\n \"currency\": \"USD\",\n \"rawValue\": \"100000\"\n },\n \"destinationAmount\": {\n \"currency\": \"USDC\",\n \"rawValue\": \"100000000\"\n },\n \"sourceCurrency\": \"USD\",\n \"destinationCurrency\": \"USDC\",\n \"destinationCountry\": \"US\",\n \"holdQuote\": false,\n \"payinMethod\": \"base\",\n \"payoutMethod\": \"fast_sg\",\n \"stablecoinParity\": true,\n \"onBehalfOf\": \"cus_abc123\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.infinite.dev/v1/quotes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sourceAmount\": {\n \"currency\": \"USD\",\n \"rawValue\": \"100000\"\n },\n \"destinationAmount\": {\n \"currency\": \"USDC\",\n \"rawValue\": \"100000000\"\n },\n \"sourceCurrency\": \"USD\",\n \"destinationCurrency\": \"USDC\",\n \"destinationCountry\": \"US\",\n \"holdQuote\": false,\n \"payinMethod\": \"base\",\n \"payoutMethod\": \"fast_sg\",\n \"stablecoinParity\": true,\n \"onBehalfOf\": \"cus_abc123\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/quotes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sourceAmount\": {\n \"currency\": \"USD\",\n \"rawValue\": \"100000\"\n },\n \"destinationAmount\": {\n \"currency\": \"USDC\",\n \"rawValue\": \"100000000\"\n },\n \"sourceCurrency\": \"USD\",\n \"destinationCurrency\": \"USDC\",\n \"destinationCountry\": \"US\",\n \"holdQuote\": false,\n \"payinMethod\": \"base\",\n \"payoutMethod\": \"fast_sg\",\n \"stablecoinParity\": true,\n \"onBehalfOf\": \"cus_abc123\"\n}"
response = http.request(request)
puts response.read_body{
"sourceAmount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"destinationAmount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"exchangeRate": "1.00500",
"infiniteFee": {
"fixed": null,
"variable": null
},
"createdAt": "2026-09-15T10:30:00Z",
"lockable": true,
"id": "quote_abc123",
"developerFee": {
"fixed": null,
"variable": null
},
"sourceRail": "ACH",
"destinationRail": "SWIFT",
"expiresAt": "2026-09-15T10:35:00Z",
"route": {
"supported": true,
"flow": "CRYPTO_TO_SWIFT",
"summary": "USDC → USD",
"totalFeeBps": 2,
"estimate": {
"estimatedReceiveAt": "2026-09-17T10:30:00Z",
"estimatedMinutes": 2880,
"nextCutoff": "2026-09-15T15:00:00Z",
"cutoffTimezone": "Asia/Singapore"
},
"minimumAmount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"legs": [
{
"type": "payout_fiat",
"inputCurrency": "USDC",
"outputCurrency": "USD",
"inputRail": "ETHEREUM",
"outputRail": "SWIFT",
"feeBps": 2,
"settlementType": "T+2"
}
]
}
}Authorizations
API Key in Bearer format (e.g., Bearer sk_test_...)
Headers
Idempotency key for preventing duplicate requests
API key
Body
Source amount with currency. Provide either sourceAmount OR destinationAmount, not both.
Show child attributes
Show child attributes
{ "currency": "USD", "rawValue": "100000" }
Destination amount to receive (exact receive mode). Provide either sourceAmount OR destinationAmount, not both.
Show child attributes
Show child attributes
{
"currency": "USDC",
"rawValue": "100000000"
}
Source currency code (required when using destinationAmount for receive-exact mode)
USD, EUR, GBP, CAD, JPY, PHP, AUD, MXN, BRL, AED, ARS, BDT, BHD, BOB, CHF, CLP, CNY, CNH, COP, CRC, CZK, DKK, DOP, EGP, GHS, GTQ, HKD, HNL, HUF, IDR, ILS, INR, JMD, JOD, KES, KRW, KWD, LKR, MYR, NGN, NOK, NZD, PEN, PKR, PLN, PYG, QAR, RON, RSD, RUB, SAR, SEK, SGD, THB, TRY, TWD, TZS, VND, ZAR, USDC, USDT, DAI, ETH, BTC, SOL, TRX, EURC, USDB, PYUSD, USDP, CASH, USDS "USD"
Destination currency code (required when using sourceAmount, derived from destinationAmount when provided)
USD, EUR, GBP, CAD, JPY, PHP, AUD, MXN, BRL, AED, ARS, BDT, BHD, BOB, CHF, CLP, CNY, CNH, COP, CRC, CZK, DKK, DOP, EGP, GHS, GTQ, HKD, HNL, HUF, IDR, ILS, INR, JMD, JOD, KES, KRW, KWD, LKR, MYR, NGN, NOK, NZD, PEN, PKR, PLN, PYG, QAR, RON, RSD, RUB, SAR, SEK, SGD, THB, TRY, TWD, TZS, VND, ZAR, USDC, USDT, DAI, ETH, BTC, SOL, TRX, EURC, USDB, PYUSD, USDP, CASH, USDS "USDC"
Destination country code (ISO 3166-1 alpha-2)
"US"
Whether to hold the quote and create a DB entry
false
Payment rail for source funds. For crypto, specify chain (ethereum, base, polygon, solana, tron). For fiat, specify network (ach, sepa, fast_sg).
ACH, ACH_SAME_DAY, WIRE, FED_NOW, RTP, EREBOR, EREBOR_RAIL, BALANCE, SWIFT, SEPA, SEPA_INSTANT, TIPS, FASTER_PAYMENTS, BACS, CHAPS, ELIXIR, NICS, EFT, INTERAC, NPP, BECS, UPI, IMPS, IMPS_WITH_FIRC, NEFT, RTGS, BI_FAST, ARTAJASA, PIX, TED, TEF, SPEI, COELSA, SINPE, CIPS, CFXPS, CHATS, ZENGIN, KFTC, FAST_SG, MEPS, DUITNOW, PROMPTPAY, INSTAPAY, PESONET, NAPAS, BEFTN, SLIPS, ZAHAV, GHIPSS, NIBSS, PESALINK, RTC_ZA, TZS_RTGS, EGP_ACH, JOD_ACH, NPSS, MADA, QPS, DOP_ACH, GTQ_ACH, HNL_ACH, PEN_ACH, JMD_ACH, USD_ACH_SV, USD_ACH_EC, CLP_TEF, PSE, COP_ACH, BOB_RTGS, PYG_ACH, CERTIS, DKK_TIPS, SENT, NKS, BANKGIROT, HKD_FPS, IBFT, TRY_FAST, ETHEREUM, BASE, POLYGON, SOLANA, TRON, BITCOIN, ARBITRUM "base"
Payment rail for destination funds. For crypto, specify chain (ethereum, base, polygon, solana, tron). For fiat, specify network (ach, sepa, fast_sg).
ACH, ACH_SAME_DAY, WIRE, FED_NOW, RTP, EREBOR, EREBOR_RAIL, BALANCE, SWIFT, SEPA, SEPA_INSTANT, TIPS, FASTER_PAYMENTS, BACS, CHAPS, ELIXIR, NICS, EFT, INTERAC, NPP, BECS, UPI, IMPS, IMPS_WITH_FIRC, NEFT, RTGS, BI_FAST, ARTAJASA, PIX, TED, TEF, SPEI, COELSA, SINPE, CIPS, CFXPS, CHATS, ZENGIN, KFTC, FAST_SG, MEPS, DUITNOW, PROMPTPAY, INSTAPAY, PESONET, NAPAS, BEFTN, SLIPS, ZAHAV, GHIPSS, NIBSS, PESALINK, RTC_ZA, TZS_RTGS, EGP_ACH, JOD_ACH, NPSS, MADA, QPS, DOP_ACH, GTQ_ACH, HNL_ACH, PEN_ACH, JMD_ACH, USD_ACH_SV, USD_ACH_EC, CLP_TEF, PSE, COP_ACH, BOB_RTGS, PYG_ACH, CERTIS, DKK_TIPS, SENT, NKS, BANKGIROT, HKD_FPS, IBFT, TRY_FAST, ETHEREUM, BASE, POLYGON, SOLANA, TRON, BITCOIN, ARBITRUM "fast_sg"
Treat stablecoin/fiat pairs as 1:1 (e.g., 1 USDT = 1 USD). Only applicable to stablecoin/fiat conversions. Any market difference is settled via postpaid billing. Defaults to true for eligible pairs.
true
Customer the quote is for. Some customers are configured for customer-specific pricing on stablecoin pairs; pass the customer the eventual transfer will execute for so the quoted rate matches it. Omitted: standard pricing.
"cus_abc123"
Response
Quote created successfully
Source amount with currency details
Show child attributes
Show child attributes
Destination amount with currency details
Show child attributes
Show child attributes
Exchange rate (inclusive of all fees)
"1.00500"
Infinite fee breakdown
Show child attributes
Show child attributes
Quote creation timestamp
"2026-09-15T10:30:00Z"
Whether the exchange rate can be locked for 24 hours
true
Quote ID (only present for held quotes)
"quote_abc123"
Developer fee breakdown
Show child attributes
Show child attributes
Source payment rail
"ACH"
Destination payment rail
"SWIFT"
Quote expiration timestamp (only present for held quotes)
"2026-09-15T10:35:00Z"
Route information including timing and fee estimates
Show child attributes
Show child attributes
Was this page helpful?