# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
# Escape hatch for any endpoint: infinite api <METHOD> <path>
infinite api POST /v1/fixed-routes/virtual-wallets \
--body '<request-json>'Create a virtual wallet fixed route.
# Infinite MCP is read-only for this endpoint — use a dedicated MCP tool when one exists, otherwise run the CLI tab.import requests
url = "https://sandbox.api.infinite.dev/v1/fixed-routes/virtual-wallets"
payload = {
"customerId": "cus_abc123",
"sweepTargetAccountId": "eba_xyz789",
"chainType": "EVM",
"correspondentBankName": "Bank of America",
"correspondentBankSwiftCode": "IRVTUS3NXXX",
"correspondentAccountNumber": "9876543210",
"sourceRail": "BASE",
"sourceCurrency": "USDC",
"destinationRail": "ACH",
"destinationCurrency": "USD",
"destinationAchReference": "PAY123",
"destinationWireMessage": "Payment for services",
"destinationSepaReference": "Invoice-2024-001",
"destinationSpeiReference": "Payment123",
"developerFeeFixed": "100000",
"developerFeePercent": 0.01,
"refundAccountId": "inw_abc123",
"externalReference": "550e8400-e29b-41d4-a716-446655440000",
"metadata": { "nickname": "Base USDC deposits" },
"documentIds": ["<string>"]
}
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({
customerId: 'cus_abc123',
sweepTargetAccountId: 'eba_xyz789',
chainType: 'EVM',
correspondentBankName: 'Bank of America',
correspondentBankSwiftCode: 'IRVTUS3NXXX',
correspondentAccountNumber: '9876543210',
sourceRail: 'BASE',
sourceCurrency: 'USDC',
destinationRail: 'ACH',
destinationCurrency: 'USD',
destinationAchReference: 'PAY123',
destinationWireMessage: 'Payment for services',
destinationSepaReference: 'Invoice-2024-001',
destinationSpeiReference: 'Payment123',
developerFeeFixed: '100000',
developerFeePercent: 0.01,
refundAccountId: 'inw_abc123',
externalReference: '550e8400-e29b-41d4-a716-446655440000',
metadata: {nickname: 'Base USDC deposits'},
documentIds: ['<string>']
})
};
fetch('https://sandbox.api.infinite.dev/v1/fixed-routes/virtual-wallets', 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/fixed-routes/virtual-wallets",
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' => 'cus_abc123',
'sweepTargetAccountId' => 'eba_xyz789',
'chainType' => 'EVM',
'correspondentBankName' => 'Bank of America',
'correspondentBankSwiftCode' => 'IRVTUS3NXXX',
'correspondentAccountNumber' => '9876543210',
'sourceRail' => 'BASE',
'sourceCurrency' => 'USDC',
'destinationRail' => 'ACH',
'destinationCurrency' => 'USD',
'destinationAchReference' => 'PAY123',
'destinationWireMessage' => 'Payment for services',
'destinationSepaReference' => 'Invoice-2024-001',
'destinationSpeiReference' => 'Payment123',
'developerFeeFixed' => '100000',
'developerFeePercent' => 0.01,
'refundAccountId' => 'inw_abc123',
'externalReference' => '550e8400-e29b-41d4-a716-446655440000',
'metadata' => [
'nickname' => 'Base USDC deposits'
],
'documentIds' => [
'<string>'
]
]),
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/fixed-routes/virtual-wallets"
payload := strings.NewReader("{\n \"customerId\": \"cus_abc123\",\n \"sweepTargetAccountId\": \"eba_xyz789\",\n \"chainType\": \"EVM\",\n \"correspondentBankName\": \"Bank of America\",\n \"correspondentBankSwiftCode\": \"IRVTUS3NXXX\",\n \"correspondentAccountNumber\": \"9876543210\",\n \"sourceRail\": \"BASE\",\n \"sourceCurrency\": \"USDC\",\n \"destinationRail\": \"ACH\",\n \"destinationCurrency\": \"USD\",\n \"destinationAchReference\": \"PAY123\",\n \"destinationWireMessage\": \"Payment for services\",\n \"destinationSepaReference\": \"Invoice-2024-001\",\n \"destinationSpeiReference\": \"Payment123\",\n \"developerFeeFixed\": \"100000\",\n \"developerFeePercent\": 0.01,\n \"refundAccountId\": \"inw_abc123\",\n \"externalReference\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"metadata\": {\n \"nickname\": \"Base USDC deposits\"\n },\n \"documentIds\": [\n \"<string>\"\n ]\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/fixed-routes/virtual-wallets")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"cus_abc123\",\n \"sweepTargetAccountId\": \"eba_xyz789\",\n \"chainType\": \"EVM\",\n \"correspondentBankName\": \"Bank of America\",\n \"correspondentBankSwiftCode\": \"IRVTUS3NXXX\",\n \"correspondentAccountNumber\": \"9876543210\",\n \"sourceRail\": \"BASE\",\n \"sourceCurrency\": \"USDC\",\n \"destinationRail\": \"ACH\",\n \"destinationCurrency\": \"USD\",\n \"destinationAchReference\": \"PAY123\",\n \"destinationWireMessage\": \"Payment for services\",\n \"destinationSepaReference\": \"Invoice-2024-001\",\n \"destinationSpeiReference\": \"Payment123\",\n \"developerFeeFixed\": \"100000\",\n \"developerFeePercent\": 0.01,\n \"refundAccountId\": \"inw_abc123\",\n \"externalReference\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"metadata\": {\n \"nickname\": \"Base USDC deposits\"\n },\n \"documentIds\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/fixed-routes/virtual-wallets")
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 \"customerId\": \"cus_abc123\",\n \"sweepTargetAccountId\": \"eba_xyz789\",\n \"chainType\": \"EVM\",\n \"correspondentBankName\": \"Bank of America\",\n \"correspondentBankSwiftCode\": \"IRVTUS3NXXX\",\n \"correspondentAccountNumber\": \"9876543210\",\n \"sourceRail\": \"BASE\",\n \"sourceCurrency\": \"USDC\",\n \"destinationRail\": \"ACH\",\n \"destinationCurrency\": \"USD\",\n \"destinationAchReference\": \"PAY123\",\n \"destinationWireMessage\": \"Payment for services\",\n \"destinationSepaReference\": \"Invoice-2024-001\",\n \"destinationSpeiReference\": \"Payment123\",\n \"developerFeeFixed\": \"100000\",\n \"developerFeePercent\": 0.01,\n \"refundAccountId\": \"inw_abc123\",\n \"externalReference\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"metadata\": {\n \"nickname\": \"Base USDC deposits\"\n },\n \"documentIds\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "vba_abc123",
"customerId": "cus_abc123",
"type": "FIAT_TO_CRYPTO",
"status": "ACTIVE",
"enabled": true,
"sourceAccount": {
"id": "vba_abc123",
"type": "VIRTUAL_BANK",
"metadata": {
"nickname": "Main Checking Account",
"purpose": "Business operations",
"tags": [
"primary",
"operations"
]
},
"depositInstructions": {
"accountNumber": "1234567890",
"bankName": "JPMorgan Chase Bank",
"bankAddress": {
"addressLine1": "123 Main Street",
"addressLine2": "Apt 4B",
"city": "San Francisco",
"state": "CA",
"postalCode": "94102",
"country": "US"
},
"routingNumber": "021000021",
"iban": "GB82WEST12345698765432",
"swiftBic": "CHASUS33",
"bankCountryCode": "US",
"reference": "REF-123456",
"depositMessage": "INV-2026-0001",
"beneficiaryName": "John Doe",
"beneficiaryAddress": {
"addressLine1": "123 Main Street",
"addressLine2": "Apt 4B",
"city": "San Francisco",
"state": "CA",
"postalCode": "94102",
"country": "US"
}
},
"sourceCurrency": "USD",
"sourceRail": "ACH",
"sourceRails": [
"ACH",
"WIRE"
],
"walletAddress": "0x742d35Cc6529Cf6c6D06E4C8a4c07583F5C6C2d8",
"addressType": "EVM",
"chains": [
"ETHEREUM",
"BASE"
],
"walletType": "TREASURY"
},
"sweepTargetAccountId": "ewa_abc123",
"sharesBalanceAccountCoordinates": false,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"depositMatching": "DEDICATED",
"metadata": {
"nickname": "Main Checking Account",
"purpose": "Business operations",
"tags": [
"primary",
"operations"
]
},
"destinationCurrency": "USDC",
"destinationRail": "BASE",
"sweepTargetAccount": {
"id": "ewa_abc123",
"type": "EXTERNAL_WALLET",
"isThirdParty": false,
"metadata": {
"nickname": "Main Checking Account",
"purpose": "Business operations",
"tags": [
"primary",
"operations"
]
},
"walletAddress": "0x742d35Cc6529Cf6c6D06E4C8a4c07583F5C6C2d8",
"addressType": "EVM",
"chains": [
"ETHEREUM",
"BASE"
],
"accountNumber": "****7890",
"routingNumber": "021000021",
"bankName": "Bank of America"
},
"developerFeeFixed": "100000",
"developerFeePercent": 0.01,
"refundAccountId": "inw_abc123",
"correspondentBank": {
"name": "<string>",
"swiftCode": "IRVTUS3NXXX",
"accountNumber": "9876543210"
},
"allowedSenderBanks": [
{
"bankName": "JPMorgan Chase",
"routingNumber": "021000021",
"swiftBic": "CHASUS33"
}
],
"documentIds": [
"<string>"
],
"minimumAmount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
}
}Create a virtual wallet fixed route
Creates an Infinite Wallet (inw_, wallet type VIRTUAL) that automatically sweeps crypto deposits. This is a dedicated deposit mailbox, not a treasury vault and not a vwa_ virtual wallet. Route type (CRYPTO_TO_FIAT or CRYPTO_TO_CRYPTO) is inferred from the sweep target. Use the Idempotency-Key header to safely retry on network failure.
# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
# Escape hatch for any endpoint: infinite api <METHOD> <path>
infinite api POST /v1/fixed-routes/virtual-wallets \
--body '<request-json>'Create a virtual wallet fixed route.
# Infinite MCP is read-only for this endpoint — use a dedicated MCP tool when one exists, otherwise run the CLI tab.import requests
url = "https://sandbox.api.infinite.dev/v1/fixed-routes/virtual-wallets"
payload = {
"customerId": "cus_abc123",
"sweepTargetAccountId": "eba_xyz789",
"chainType": "EVM",
"correspondentBankName": "Bank of America",
"correspondentBankSwiftCode": "IRVTUS3NXXX",
"correspondentAccountNumber": "9876543210",
"sourceRail": "BASE",
"sourceCurrency": "USDC",
"destinationRail": "ACH",
"destinationCurrency": "USD",
"destinationAchReference": "PAY123",
"destinationWireMessage": "Payment for services",
"destinationSepaReference": "Invoice-2024-001",
"destinationSpeiReference": "Payment123",
"developerFeeFixed": "100000",
"developerFeePercent": 0.01,
"refundAccountId": "inw_abc123",
"externalReference": "550e8400-e29b-41d4-a716-446655440000",
"metadata": { "nickname": "Base USDC deposits" },
"documentIds": ["<string>"]
}
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({
customerId: 'cus_abc123',
sweepTargetAccountId: 'eba_xyz789',
chainType: 'EVM',
correspondentBankName: 'Bank of America',
correspondentBankSwiftCode: 'IRVTUS3NXXX',
correspondentAccountNumber: '9876543210',
sourceRail: 'BASE',
sourceCurrency: 'USDC',
destinationRail: 'ACH',
destinationCurrency: 'USD',
destinationAchReference: 'PAY123',
destinationWireMessage: 'Payment for services',
destinationSepaReference: 'Invoice-2024-001',
destinationSpeiReference: 'Payment123',
developerFeeFixed: '100000',
developerFeePercent: 0.01,
refundAccountId: 'inw_abc123',
externalReference: '550e8400-e29b-41d4-a716-446655440000',
metadata: {nickname: 'Base USDC deposits'},
documentIds: ['<string>']
})
};
fetch('https://sandbox.api.infinite.dev/v1/fixed-routes/virtual-wallets', 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/fixed-routes/virtual-wallets",
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' => 'cus_abc123',
'sweepTargetAccountId' => 'eba_xyz789',
'chainType' => 'EVM',
'correspondentBankName' => 'Bank of America',
'correspondentBankSwiftCode' => 'IRVTUS3NXXX',
'correspondentAccountNumber' => '9876543210',
'sourceRail' => 'BASE',
'sourceCurrency' => 'USDC',
'destinationRail' => 'ACH',
'destinationCurrency' => 'USD',
'destinationAchReference' => 'PAY123',
'destinationWireMessage' => 'Payment for services',
'destinationSepaReference' => 'Invoice-2024-001',
'destinationSpeiReference' => 'Payment123',
'developerFeeFixed' => '100000',
'developerFeePercent' => 0.01,
'refundAccountId' => 'inw_abc123',
'externalReference' => '550e8400-e29b-41d4-a716-446655440000',
'metadata' => [
'nickname' => 'Base USDC deposits'
],
'documentIds' => [
'<string>'
]
]),
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/fixed-routes/virtual-wallets"
payload := strings.NewReader("{\n \"customerId\": \"cus_abc123\",\n \"sweepTargetAccountId\": \"eba_xyz789\",\n \"chainType\": \"EVM\",\n \"correspondentBankName\": \"Bank of America\",\n \"correspondentBankSwiftCode\": \"IRVTUS3NXXX\",\n \"correspondentAccountNumber\": \"9876543210\",\n \"sourceRail\": \"BASE\",\n \"sourceCurrency\": \"USDC\",\n \"destinationRail\": \"ACH\",\n \"destinationCurrency\": \"USD\",\n \"destinationAchReference\": \"PAY123\",\n \"destinationWireMessage\": \"Payment for services\",\n \"destinationSepaReference\": \"Invoice-2024-001\",\n \"destinationSpeiReference\": \"Payment123\",\n \"developerFeeFixed\": \"100000\",\n \"developerFeePercent\": 0.01,\n \"refundAccountId\": \"inw_abc123\",\n \"externalReference\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"metadata\": {\n \"nickname\": \"Base USDC deposits\"\n },\n \"documentIds\": [\n \"<string>\"\n ]\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/fixed-routes/virtual-wallets")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"cus_abc123\",\n \"sweepTargetAccountId\": \"eba_xyz789\",\n \"chainType\": \"EVM\",\n \"correspondentBankName\": \"Bank of America\",\n \"correspondentBankSwiftCode\": \"IRVTUS3NXXX\",\n \"correspondentAccountNumber\": \"9876543210\",\n \"sourceRail\": \"BASE\",\n \"sourceCurrency\": \"USDC\",\n \"destinationRail\": \"ACH\",\n \"destinationCurrency\": \"USD\",\n \"destinationAchReference\": \"PAY123\",\n \"destinationWireMessage\": \"Payment for services\",\n \"destinationSepaReference\": \"Invoice-2024-001\",\n \"destinationSpeiReference\": \"Payment123\",\n \"developerFeeFixed\": \"100000\",\n \"developerFeePercent\": 0.01,\n \"refundAccountId\": \"inw_abc123\",\n \"externalReference\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"metadata\": {\n \"nickname\": \"Base USDC deposits\"\n },\n \"documentIds\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/fixed-routes/virtual-wallets")
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 \"customerId\": \"cus_abc123\",\n \"sweepTargetAccountId\": \"eba_xyz789\",\n \"chainType\": \"EVM\",\n \"correspondentBankName\": \"Bank of America\",\n \"correspondentBankSwiftCode\": \"IRVTUS3NXXX\",\n \"correspondentAccountNumber\": \"9876543210\",\n \"sourceRail\": \"BASE\",\n \"sourceCurrency\": \"USDC\",\n \"destinationRail\": \"ACH\",\n \"destinationCurrency\": \"USD\",\n \"destinationAchReference\": \"PAY123\",\n \"destinationWireMessage\": \"Payment for services\",\n \"destinationSepaReference\": \"Invoice-2024-001\",\n \"destinationSpeiReference\": \"Payment123\",\n \"developerFeeFixed\": \"100000\",\n \"developerFeePercent\": 0.01,\n \"refundAccountId\": \"inw_abc123\",\n \"externalReference\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"metadata\": {\n \"nickname\": \"Base USDC deposits\"\n },\n \"documentIds\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "vba_abc123",
"customerId": "cus_abc123",
"type": "FIAT_TO_CRYPTO",
"status": "ACTIVE",
"enabled": true,
"sourceAccount": {
"id": "vba_abc123",
"type": "VIRTUAL_BANK",
"metadata": {
"nickname": "Main Checking Account",
"purpose": "Business operations",
"tags": [
"primary",
"operations"
]
},
"depositInstructions": {
"accountNumber": "1234567890",
"bankName": "JPMorgan Chase Bank",
"bankAddress": {
"addressLine1": "123 Main Street",
"addressLine2": "Apt 4B",
"city": "San Francisco",
"state": "CA",
"postalCode": "94102",
"country": "US"
},
"routingNumber": "021000021",
"iban": "GB82WEST12345698765432",
"swiftBic": "CHASUS33",
"bankCountryCode": "US",
"reference": "REF-123456",
"depositMessage": "INV-2026-0001",
"beneficiaryName": "John Doe",
"beneficiaryAddress": {
"addressLine1": "123 Main Street",
"addressLine2": "Apt 4B",
"city": "San Francisco",
"state": "CA",
"postalCode": "94102",
"country": "US"
}
},
"sourceCurrency": "USD",
"sourceRail": "ACH",
"sourceRails": [
"ACH",
"WIRE"
],
"walletAddress": "0x742d35Cc6529Cf6c6D06E4C8a4c07583F5C6C2d8",
"addressType": "EVM",
"chains": [
"ETHEREUM",
"BASE"
],
"walletType": "TREASURY"
},
"sweepTargetAccountId": "ewa_abc123",
"sharesBalanceAccountCoordinates": false,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"depositMatching": "DEDICATED",
"metadata": {
"nickname": "Main Checking Account",
"purpose": "Business operations",
"tags": [
"primary",
"operations"
]
},
"destinationCurrency": "USDC",
"destinationRail": "BASE",
"sweepTargetAccount": {
"id": "ewa_abc123",
"type": "EXTERNAL_WALLET",
"isThirdParty": false,
"metadata": {
"nickname": "Main Checking Account",
"purpose": "Business operations",
"tags": [
"primary",
"operations"
]
},
"walletAddress": "0x742d35Cc6529Cf6c6D06E4C8a4c07583F5C6C2d8",
"addressType": "EVM",
"chains": [
"ETHEREUM",
"BASE"
],
"accountNumber": "****7890",
"routingNumber": "021000021",
"bankName": "Bank of America"
},
"developerFeeFixed": "100000",
"developerFeePercent": 0.01,
"refundAccountId": "inw_abc123",
"correspondentBank": {
"name": "<string>",
"swiftCode": "IRVTUS3NXXX",
"accountNumber": "9876543210"
},
"allowedSenderBanks": [
{
"bankName": "JPMorgan Chase",
"routingNumber": "021000021",
"swiftBic": "CHASUS33"
}
],
"documentIds": [
"<string>"
],
"minimumAmount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
}
}Authorizations
API Key in Bearer format (e.g., Bearer sk_test_...)
Headers
API key
Optional idempotency key. When supplied, a retry with the same key replays the original response (24h TTL) instead of being rejected as a duplicate.
Body
Customer ID
"cus_abc123"
Target account for sweep. Must be a bank account (for crypto→fiat) or a wallet — EXTERNAL_WALLET, INFINITE_WALLET, or VIRTUAL_WALLET — (for crypto→crypto) that belongs to the same customer.
"eba_xyz789"
Chain type for the wallet address
EVM, TRON, BITCOIN, SOLANA "EVM"
Correspondent/intermediary bank name
200"Bank of America"
Correspondent/intermediary bank SWIFT/BIC code (8 or 11 characters)
"IRVTUS3NXXX"
Correspondent/intermediary account number
64"9876543210"
Source rail - chain where deposits are received
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"
Source currency accepted for deposits
"USDC"
Destination rail - payment network or chain for sweep
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 "ACH"
Destination currency to convert to
"USD"
Reference message for ACH transactions (max 10 characters)
10"PAY123"
Message for wire transfers (max 140 characters)
140"Payment for services"
Reference for SEPA transactions (6-140 characters)
6 - 140"Invoice-2024-001"
Reference for SPEI transactions (max 40 characters)
40"Payment123"
Fixed fee in minor units of source currency
"100000"
Variable fee as decimal percentage (0.01 = 1%)
0.01
Customer wallet account ID (inw_xxx or ewa_xxx) for refunds on failed transfers or when fees exceed deposit. Must have a wallet address; validated at request time. Falls back to org config if not set.
"inw_abc123"
Client-provided external reference
"550e8400-e29b-41d4-a716-446655440000"
Additional metadata
Show child attributes
Show child attributes
{ "nickname": "Base USDC deposits" }
Standing supporting agreement document ID. Required when the destination is a third-party SWIFT bank account. The agreement is collected once and applied to each transfer created by this route.
1Response
Fixed route created successfully
Fixed route ID (same as source account ID)
"vba_abc123"
"cus_abc123"
FIAT_TO_CRYPTO, CRYPTO_TO_FIAT, CRYPTO_TO_CRYPTO, FIAT_TO_FIAT, FIAT_TO_CRYPTO_TO_FIAT "FIAT_TO_CRYPTO"
"ACTIVE"
Whether the fixed route is enabled. When false, deposits land but do not auto-sweep.
true
Show child attributes
Show child attributes
ID of the account funds are swept to
"ewa_abc123"
Whether this route's deposit coordinates are shared with a USD balance account. When true, the route and a balance account are mutually exclusive for the customer — one must be closed/disabled before the other can be created or re-enabled. Only bank pay-in routes on the balance-account provider qualify (ACH, WIRE, or SWIFT); crypto routes and payout routes are always false.
false
How incoming payments are matched to this deposit account. DEDICATED issues a unique account number and the sender does not include a payment reference. REFERENCE uses a shared account number and the sender must include sourceAccount.depositInstructions.reference on the payment (wire memo or ACH addenda). Omit to keep the default for the requested rails. USD ACH, wire, and SWIFT bank pay-ins only.
DEDICATED, REFERENCE Custom metadata for the fixed route account, including nickname
Show child attributes
Show child attributes
"USDC"
"BASE"
Sweep target account details (only when expand=sweepTargetAccount)
Show child attributes
Show child attributes
Fixed fee in minor units of source currency
"100000"
Variable fee as decimal percentage (0.01 = 1%)
0.01
Customer wallet account ID (inw_xxx or ewa_xxx) for refunds on failed transfers or when fees exceed deposit
"inw_abc123"
Correspondent/intermediary bank details (when applicable)
Show child attributes
Show child attributes
Allowed sender banks for deposits into this route. When set, deposits from sender banks not on this list are held for review instead of being processed automatically.
Show child attributes
Show child attributes
Standing supporting agreement document ID applied to transfers created by this route.
1Minimum deposit amount for this route. Deposits below this floor are held instead of swept. This is a preview based on the stored route configuration; the validate endpoint returns the authoritative floor at submission time.
Show child attributes
Show child attributes
Was this page helpful?