# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
infinite transfers create \
--customer cus_abc123 \
--amount 100000000 \
--amount-currency USDC \
--source-currency USDC \
--source-rail ETHEREUM \
--source-account inw_source123 \
--dest-account eba_dest456 \
--dest-currency USD \
--dest-rail ACH \
--reason PAYMENT_FOR_GOODS_AND_SERVICESCreate a new transfer.
# With an agent key: use MCP tool create_transfer (amount, destinationAccountId from list_payees, paymentReason, operationId) — it drafts, you confirm, then submit_transfer.import requests
url = "https://sandbox.api.infinite.dev/v1/transfers"
payload = {
"onBehalfOf": "cus_abc123",
"amount": {
"currency": "USD",
"rawValue": "10000"
},
"source": {
"currency": "USDC",
"paymentRail": "ETHEREUM",
"accountId": "inw_abc123",
"direction": "CREDIT",
"refundAccountId": "inw_abc123"
},
"destination": {
"accountId": "acc_def456",
"currency": "USDC",
"paymentRail": "ETHEREUM",
"correspondentBankName": "Bank of America",
"correspondentBankSwiftCode": "IRVTUS3NXXX",
"correspondentAccountNumber": "9876543210",
"wireMessage": "Payment for invoice INV-2026-001",
"sepaReference": "INV-2026-001",
"achReference": "ORDER123",
"blockchainMemo": "MEMO123456",
"swiftReference": "Payment for Invoice\nReference: INV-2026-001",
"rtpReference": "Payment for invoice INV-2026-001"
},
"paymentReason": "PAYMENT_FOR_GOODS_AND_SERVICES",
"clientReferenceId": "order_abc123",
"counterpartyId": "cp_abc123",
"quoteId": "quote_xyz789",
"remarks": "Partial payment - remaining balance to be paid next month",
"internalRemarks": "Approved by ops on 2026-04-15",
"developerFeeFixed": 100,
"developerFeePercent": 0.015,
"documentIds": ["doc_abc123", "doc_def456"],
"expiresAt": "2026-12-31T23:59:59Z",
"confirm": False,
"requiresAuthorization": False
}
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({
onBehalfOf: 'cus_abc123',
amount: {currency: 'USD', rawValue: '10000'},
source: {
currency: 'USDC',
paymentRail: 'ETHEREUM',
accountId: 'inw_abc123',
direction: 'CREDIT',
refundAccountId: 'inw_abc123'
},
destination: {
accountId: 'acc_def456',
currency: 'USDC',
paymentRail: 'ETHEREUM',
correspondentBankName: 'Bank of America',
correspondentBankSwiftCode: 'IRVTUS3NXXX',
correspondentAccountNumber: '9876543210',
wireMessage: 'Payment for invoice INV-2026-001',
sepaReference: 'INV-2026-001',
achReference: 'ORDER123',
blockchainMemo: 'MEMO123456',
swiftReference: 'Payment for Invoice\nReference: INV-2026-001',
rtpReference: 'Payment for invoice INV-2026-001'
},
paymentReason: 'PAYMENT_FOR_GOODS_AND_SERVICES',
clientReferenceId: 'order_abc123',
counterpartyId: 'cp_abc123',
quoteId: 'quote_xyz789',
remarks: 'Partial payment - remaining balance to be paid next month',
internalRemarks: 'Approved by ops on 2026-04-15',
developerFeeFixed: 100,
developerFeePercent: 0.015,
documentIds: ['doc_abc123', 'doc_def456'],
expiresAt: '2026-12-31T23:59:59Z',
confirm: false,
requiresAuthorization: false
})
};
fetch('https://sandbox.api.infinite.dev/v1/transfers', 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/transfers",
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([
'onBehalfOf' => 'cus_abc123',
'amount' => [
'currency' => 'USD',
'rawValue' => '10000'
],
'source' => [
'currency' => 'USDC',
'paymentRail' => 'ETHEREUM',
'accountId' => 'inw_abc123',
'direction' => 'CREDIT',
'refundAccountId' => 'inw_abc123'
],
'destination' => [
'accountId' => 'acc_def456',
'currency' => 'USDC',
'paymentRail' => 'ETHEREUM',
'correspondentBankName' => 'Bank of America',
'correspondentBankSwiftCode' => 'IRVTUS3NXXX',
'correspondentAccountNumber' => '9876543210',
'wireMessage' => 'Payment for invoice INV-2026-001',
'sepaReference' => 'INV-2026-001',
'achReference' => 'ORDER123',
'blockchainMemo' => 'MEMO123456',
'swiftReference' => 'Payment for Invoice\\nReference: INV-2026-001',
'rtpReference' => 'Payment for invoice INV-2026-001'
],
'paymentReason' => 'PAYMENT_FOR_GOODS_AND_SERVICES',
'clientReferenceId' => 'order_abc123',
'counterpartyId' => 'cp_abc123',
'quoteId' => 'quote_xyz789',
'remarks' => 'Partial payment - remaining balance to be paid next month',
'internalRemarks' => 'Approved by ops on 2026-04-15',
'developerFeeFixed' => 100,
'developerFeePercent' => 0.015,
'documentIds' => [
'doc_abc123',
'doc_def456'
],
'expiresAt' => '2026-12-31T23:59:59Z',
'confirm' => false,
'requiresAuthorization' => false
]),
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/transfers"
payload := strings.NewReader("{\n \"onBehalfOf\": \"cus_abc123\",\n \"amount\": {\n \"currency\": \"USD\",\n \"rawValue\": \"10000\"\n },\n \"source\": {\n \"currency\": \"USDC\",\n \"paymentRail\": \"ETHEREUM\",\n \"accountId\": \"inw_abc123\",\n \"direction\": \"CREDIT\",\n \"refundAccountId\": \"inw_abc123\"\n },\n \"destination\": {\n \"accountId\": \"acc_def456\",\n \"currency\": \"USDC\",\n \"paymentRail\": \"ETHEREUM\",\n \"correspondentBankName\": \"Bank of America\",\n \"correspondentBankSwiftCode\": \"IRVTUS3NXXX\",\n \"correspondentAccountNumber\": \"9876543210\",\n \"wireMessage\": \"Payment for invoice INV-2026-001\",\n \"sepaReference\": \"INV-2026-001\",\n \"achReference\": \"ORDER123\",\n \"blockchainMemo\": \"MEMO123456\",\n \"swiftReference\": \"Payment for Invoice\\\\nReference: INV-2026-001\",\n \"rtpReference\": \"Payment for invoice INV-2026-001\"\n },\n \"paymentReason\": \"PAYMENT_FOR_GOODS_AND_SERVICES\",\n \"clientReferenceId\": \"order_abc123\",\n \"counterpartyId\": \"cp_abc123\",\n \"quoteId\": \"quote_xyz789\",\n \"remarks\": \"Partial payment - remaining balance to be paid next month\",\n \"internalRemarks\": \"Approved by ops on 2026-04-15\",\n \"developerFeeFixed\": 100,\n \"developerFeePercent\": 0.015,\n \"documentIds\": [\n \"doc_abc123\",\n \"doc_def456\"\n ],\n \"expiresAt\": \"2026-12-31T23:59:59Z\",\n \"confirm\": false,\n \"requiresAuthorization\": false\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/transfers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"onBehalfOf\": \"cus_abc123\",\n \"amount\": {\n \"currency\": \"USD\",\n \"rawValue\": \"10000\"\n },\n \"source\": {\n \"currency\": \"USDC\",\n \"paymentRail\": \"ETHEREUM\",\n \"accountId\": \"inw_abc123\",\n \"direction\": \"CREDIT\",\n \"refundAccountId\": \"inw_abc123\"\n },\n \"destination\": {\n \"accountId\": \"acc_def456\",\n \"currency\": \"USDC\",\n \"paymentRail\": \"ETHEREUM\",\n \"correspondentBankName\": \"Bank of America\",\n \"correspondentBankSwiftCode\": \"IRVTUS3NXXX\",\n \"correspondentAccountNumber\": \"9876543210\",\n \"wireMessage\": \"Payment for invoice INV-2026-001\",\n \"sepaReference\": \"INV-2026-001\",\n \"achReference\": \"ORDER123\",\n \"blockchainMemo\": \"MEMO123456\",\n \"swiftReference\": \"Payment for Invoice\\\\nReference: INV-2026-001\",\n \"rtpReference\": \"Payment for invoice INV-2026-001\"\n },\n \"paymentReason\": \"PAYMENT_FOR_GOODS_AND_SERVICES\",\n \"clientReferenceId\": \"order_abc123\",\n \"counterpartyId\": \"cp_abc123\",\n \"quoteId\": \"quote_xyz789\",\n \"remarks\": \"Partial payment - remaining balance to be paid next month\",\n \"internalRemarks\": \"Approved by ops on 2026-04-15\",\n \"developerFeeFixed\": 100,\n \"developerFeePercent\": 0.015,\n \"documentIds\": [\n \"doc_abc123\",\n \"doc_def456\"\n ],\n \"expiresAt\": \"2026-12-31T23:59:59Z\",\n \"confirm\": false,\n \"requiresAuthorization\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/transfers")
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 \"onBehalfOf\": \"cus_abc123\",\n \"amount\": {\n \"currency\": \"USD\",\n \"rawValue\": \"10000\"\n },\n \"source\": {\n \"currency\": \"USDC\",\n \"paymentRail\": \"ETHEREUM\",\n \"accountId\": \"inw_abc123\",\n \"direction\": \"CREDIT\",\n \"refundAccountId\": \"inw_abc123\"\n },\n \"destination\": {\n \"accountId\": \"acc_def456\",\n \"currency\": \"USDC\",\n \"paymentRail\": \"ETHEREUM\",\n \"correspondentBankName\": \"Bank of America\",\n \"correspondentBankSwiftCode\": \"IRVTUS3NXXX\",\n \"correspondentAccountNumber\": \"9876543210\",\n \"wireMessage\": \"Payment for invoice INV-2026-001\",\n \"sepaReference\": \"INV-2026-001\",\n \"achReference\": \"ORDER123\",\n \"blockchainMemo\": \"MEMO123456\",\n \"swiftReference\": \"Payment for Invoice\\\\nReference: INV-2026-001\",\n \"rtpReference\": \"Payment for invoice INV-2026-001\"\n },\n \"paymentReason\": \"PAYMENT_FOR_GOODS_AND_SERVICES\",\n \"clientReferenceId\": \"order_abc123\",\n \"counterpartyId\": \"cp_abc123\",\n \"quoteId\": \"quote_xyz789\",\n \"remarks\": \"Partial payment - remaining balance to be paid next month\",\n \"internalRemarks\": \"Approved by ops on 2026-04-15\",\n \"developerFeeFixed\": 100,\n \"developerFeePercent\": 0.015,\n \"documentIds\": [\n \"doc_abc123\",\n \"doc_def456\"\n ],\n \"expiresAt\": \"2026-12-31T23:59:59Z\",\n \"confirm\": false,\n \"requiresAuthorization\": false\n}"
response = http.request(request)
puts response.read_body{
"id": "tfr_1234567890abcdef",
"organizationId": "org_abc123",
"sourceCustomerId": "cus_abc123",
"flow": "CRYPTO_TO_FIAT",
"status": "COMPLETED",
"source": {
"currency": "usd",
"paymentRail": "ACH",
"fundingCurrency": "usdc",
"direction": "CREDIT",
"accountId": "vba_abc123",
"accountType": "VIRTUAL_BANK",
"externalAccountId": "ext_bank_456",
"fromAddress": "0x1234567890abcdef1234567890abcdef12345678",
"refundAccountId": "inw_abc123",
"accountName": "Acme Corporation",
"originator": {
"name": "Acme Suppliers LLC",
"bankName": "Example National Bank",
"routingNumber": "021000021",
"accountNumber": "987654321",
"swiftBic": "CHASUS33",
"bankCountry": "US"
}
},
"destination": {
"currency": "USDC",
"paymentRail": "ETHEREUM",
"accountId": "vwa_def456",
"accountType": "EXTERNAL_BANK",
"externalAccountId": "ext_bank_789",
"toAddress": "0x1234567890abcdef1234567890abcdef12345678",
"accountName": "Acme Corporation",
"bankName": "JPMorgan Chase Bank",
"bankCountryCode": "US",
"wireMessage": "Payment for invoice INV-2026-001",
"achReference": "ORDER123",
"swiftReference": "Payment for invoice INV-2026-001",
"rtpReference": "Payment for invoice INV-2026-001",
"payoutReference": "INV2026"
},
"sourceAmount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"createdAt": "2026-09-15T10:00:00.000Z",
"updatedAt": "2026-09-15T10:00:00.000Z",
"legs": [
{
"id": "tleg_abc123",
"sequence": 0,
"type": "DEPOSIT_CRYPTO",
"inputCurrency": "USDC",
"outputCurrency": "USD",
"inputRail": "ETHEREUM",
"outputRail": "ACH",
"status": "PENDING",
"startedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"uetr": "9b6f37f2-21f0-4b2b-b03c-1893364782ce",
"imad": "20260309EREBBANK000002",
"omad": "20260309MMQFMP0B012345",
"achTraceNumber": "021000021234567",
"txHash": "0x1234567890abcdef...",
"developerFee": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"feeTxHash": "0x1234567890abcdef..."
}
],
"fundingNeeded": false,
"clientReferenceId": "order_abc123",
"counterpartyId": "cp_abc123",
"agentId": "agt_abc123",
"agentApprovalStatus": "PENDING",
"destinationAmount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"refund": {
"status": "COMPLETED",
"reason": "Fees exceed deposit amount",
"amount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"txHash": "0x1234567890abcdef...",
"initiatedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z"
},
"quoteId": "quote_abc123",
"exchangeRate": "0.99985",
"referenceRate": "1.158691536019208779",
"referenceRateAsOf": "2026-09-02T18:30:04.000Z",
"referenceProvider": "XE",
"developerFeeFixed": "100",
"developerFeePercent": 0.005,
"developerFee": {
"amount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"fixed": "100",
"percent": 0.005,
"txHash": "0x1234567890abcdef..."
},
"depositInstructions": {
"type": "crypto",
"paymentRail": "ETHEREUM",
"toAddress": "0x1234567890abcdef1234567890abcdef12345678",
"amount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"blockchainMemo": "<string>",
"accountId": "acc_abc123"
},
"returnedToAccountId": "acc_123",
"returnedAt": "2026-09-15T10:00:00.000Z",
"currentLegIndex": 0,
"isThirdParty": false,
"remarks": "Partial payment - remaining balance to be paid next month",
"internalRemarks": "<string>",
"uetr": "9b6f37f2-21f0-4b2b-b03c-1893364782ce",
"imad": "20260309EREBBANK000002",
"omad": "20260309MMQFMP0B012345",
"achTraceNumber": "021000021234567",
"originatingAccount": {
"bankName": "<string>",
"routingNumber": "044016018",
"accountNumber": "37216498313366"
},
"txHash": "0x1234567890abcdef...",
"systemRemark": "Tracking is unavailable for this SWIFT transfer. We will auto-complete it after 24 hours and mark it with an asterisk because settlement is assumed rather than confirmed.",
"metadata": {
"swiftRouting": {
"source": "GPI_ROUTE",
"senderBic": "CHASUS33",
"receiverBic": "CLRBGB22",
"checkedAt": "2026-05-10T16:34:42.597Z",
"steps": [
{
"label": "Sender bank",
"bic": "CHASUS33",
"bankName": "JP Morgan Chase",
"status": "Confirmed Active"
}
]
}
},
"estimatedSettlementAt": "2026-05-26T13:00:00.000Z",
"nextCutoffAt": "2026-05-19T19:00:00.000Z",
"cutoffTimezone": "America/New_York",
"counterparty": {
"id": "cp_abc123",
"name": "Jane Doe",
"beneficiaryType": "INDIVIDUAL",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"address": {
"addressLine1": "123 Main Street",
"city": "San Francisco",
"postalCode": "94102",
"country": "US",
"addressLine2": "Apt 4B",
"state": "CA",
"transliterated": {
"addressLine1": "123 Main Street",
"addressLine2": "Apt 4B",
"city": "Beijing",
"state": "Hebei"
}
}
}
}Create a new transfer
Create a new transfer. Use the Idempotency-Key header to prevent duplicate creation.
# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
infinite transfers create \
--customer cus_abc123 \
--amount 100000000 \
--amount-currency USDC \
--source-currency USDC \
--source-rail ETHEREUM \
--source-account inw_source123 \
--dest-account eba_dest456 \
--dest-currency USD \
--dest-rail ACH \
--reason PAYMENT_FOR_GOODS_AND_SERVICESCreate a new transfer.
# With an agent key: use MCP tool create_transfer (amount, destinationAccountId from list_payees, paymentReason, operationId) — it drafts, you confirm, then submit_transfer.import requests
url = "https://sandbox.api.infinite.dev/v1/transfers"
payload = {
"onBehalfOf": "cus_abc123",
"amount": {
"currency": "USD",
"rawValue": "10000"
},
"source": {
"currency": "USDC",
"paymentRail": "ETHEREUM",
"accountId": "inw_abc123",
"direction": "CREDIT",
"refundAccountId": "inw_abc123"
},
"destination": {
"accountId": "acc_def456",
"currency": "USDC",
"paymentRail": "ETHEREUM",
"correspondentBankName": "Bank of America",
"correspondentBankSwiftCode": "IRVTUS3NXXX",
"correspondentAccountNumber": "9876543210",
"wireMessage": "Payment for invoice INV-2026-001",
"sepaReference": "INV-2026-001",
"achReference": "ORDER123",
"blockchainMemo": "MEMO123456",
"swiftReference": "Payment for Invoice\nReference: INV-2026-001",
"rtpReference": "Payment for invoice INV-2026-001"
},
"paymentReason": "PAYMENT_FOR_GOODS_AND_SERVICES",
"clientReferenceId": "order_abc123",
"counterpartyId": "cp_abc123",
"quoteId": "quote_xyz789",
"remarks": "Partial payment - remaining balance to be paid next month",
"internalRemarks": "Approved by ops on 2026-04-15",
"developerFeeFixed": 100,
"developerFeePercent": 0.015,
"documentIds": ["doc_abc123", "doc_def456"],
"expiresAt": "2026-12-31T23:59:59Z",
"confirm": False,
"requiresAuthorization": False
}
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({
onBehalfOf: 'cus_abc123',
amount: {currency: 'USD', rawValue: '10000'},
source: {
currency: 'USDC',
paymentRail: 'ETHEREUM',
accountId: 'inw_abc123',
direction: 'CREDIT',
refundAccountId: 'inw_abc123'
},
destination: {
accountId: 'acc_def456',
currency: 'USDC',
paymentRail: 'ETHEREUM',
correspondentBankName: 'Bank of America',
correspondentBankSwiftCode: 'IRVTUS3NXXX',
correspondentAccountNumber: '9876543210',
wireMessage: 'Payment for invoice INV-2026-001',
sepaReference: 'INV-2026-001',
achReference: 'ORDER123',
blockchainMemo: 'MEMO123456',
swiftReference: 'Payment for Invoice\nReference: INV-2026-001',
rtpReference: 'Payment for invoice INV-2026-001'
},
paymentReason: 'PAYMENT_FOR_GOODS_AND_SERVICES',
clientReferenceId: 'order_abc123',
counterpartyId: 'cp_abc123',
quoteId: 'quote_xyz789',
remarks: 'Partial payment - remaining balance to be paid next month',
internalRemarks: 'Approved by ops on 2026-04-15',
developerFeeFixed: 100,
developerFeePercent: 0.015,
documentIds: ['doc_abc123', 'doc_def456'],
expiresAt: '2026-12-31T23:59:59Z',
confirm: false,
requiresAuthorization: false
})
};
fetch('https://sandbox.api.infinite.dev/v1/transfers', 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/transfers",
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([
'onBehalfOf' => 'cus_abc123',
'amount' => [
'currency' => 'USD',
'rawValue' => '10000'
],
'source' => [
'currency' => 'USDC',
'paymentRail' => 'ETHEREUM',
'accountId' => 'inw_abc123',
'direction' => 'CREDIT',
'refundAccountId' => 'inw_abc123'
],
'destination' => [
'accountId' => 'acc_def456',
'currency' => 'USDC',
'paymentRail' => 'ETHEREUM',
'correspondentBankName' => 'Bank of America',
'correspondentBankSwiftCode' => 'IRVTUS3NXXX',
'correspondentAccountNumber' => '9876543210',
'wireMessage' => 'Payment for invoice INV-2026-001',
'sepaReference' => 'INV-2026-001',
'achReference' => 'ORDER123',
'blockchainMemo' => 'MEMO123456',
'swiftReference' => 'Payment for Invoice\\nReference: INV-2026-001',
'rtpReference' => 'Payment for invoice INV-2026-001'
],
'paymentReason' => 'PAYMENT_FOR_GOODS_AND_SERVICES',
'clientReferenceId' => 'order_abc123',
'counterpartyId' => 'cp_abc123',
'quoteId' => 'quote_xyz789',
'remarks' => 'Partial payment - remaining balance to be paid next month',
'internalRemarks' => 'Approved by ops on 2026-04-15',
'developerFeeFixed' => 100,
'developerFeePercent' => 0.015,
'documentIds' => [
'doc_abc123',
'doc_def456'
],
'expiresAt' => '2026-12-31T23:59:59Z',
'confirm' => false,
'requiresAuthorization' => false
]),
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/transfers"
payload := strings.NewReader("{\n \"onBehalfOf\": \"cus_abc123\",\n \"amount\": {\n \"currency\": \"USD\",\n \"rawValue\": \"10000\"\n },\n \"source\": {\n \"currency\": \"USDC\",\n \"paymentRail\": \"ETHEREUM\",\n \"accountId\": \"inw_abc123\",\n \"direction\": \"CREDIT\",\n \"refundAccountId\": \"inw_abc123\"\n },\n \"destination\": {\n \"accountId\": \"acc_def456\",\n \"currency\": \"USDC\",\n \"paymentRail\": \"ETHEREUM\",\n \"correspondentBankName\": \"Bank of America\",\n \"correspondentBankSwiftCode\": \"IRVTUS3NXXX\",\n \"correspondentAccountNumber\": \"9876543210\",\n \"wireMessage\": \"Payment for invoice INV-2026-001\",\n \"sepaReference\": \"INV-2026-001\",\n \"achReference\": \"ORDER123\",\n \"blockchainMemo\": \"MEMO123456\",\n \"swiftReference\": \"Payment for Invoice\\\\nReference: INV-2026-001\",\n \"rtpReference\": \"Payment for invoice INV-2026-001\"\n },\n \"paymentReason\": \"PAYMENT_FOR_GOODS_AND_SERVICES\",\n \"clientReferenceId\": \"order_abc123\",\n \"counterpartyId\": \"cp_abc123\",\n \"quoteId\": \"quote_xyz789\",\n \"remarks\": \"Partial payment - remaining balance to be paid next month\",\n \"internalRemarks\": \"Approved by ops on 2026-04-15\",\n \"developerFeeFixed\": 100,\n \"developerFeePercent\": 0.015,\n \"documentIds\": [\n \"doc_abc123\",\n \"doc_def456\"\n ],\n \"expiresAt\": \"2026-12-31T23:59:59Z\",\n \"confirm\": false,\n \"requiresAuthorization\": false\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/transfers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"onBehalfOf\": \"cus_abc123\",\n \"amount\": {\n \"currency\": \"USD\",\n \"rawValue\": \"10000\"\n },\n \"source\": {\n \"currency\": \"USDC\",\n \"paymentRail\": \"ETHEREUM\",\n \"accountId\": \"inw_abc123\",\n \"direction\": \"CREDIT\",\n \"refundAccountId\": \"inw_abc123\"\n },\n \"destination\": {\n \"accountId\": \"acc_def456\",\n \"currency\": \"USDC\",\n \"paymentRail\": \"ETHEREUM\",\n \"correspondentBankName\": \"Bank of America\",\n \"correspondentBankSwiftCode\": \"IRVTUS3NXXX\",\n \"correspondentAccountNumber\": \"9876543210\",\n \"wireMessage\": \"Payment for invoice INV-2026-001\",\n \"sepaReference\": \"INV-2026-001\",\n \"achReference\": \"ORDER123\",\n \"blockchainMemo\": \"MEMO123456\",\n \"swiftReference\": \"Payment for Invoice\\\\nReference: INV-2026-001\",\n \"rtpReference\": \"Payment for invoice INV-2026-001\"\n },\n \"paymentReason\": \"PAYMENT_FOR_GOODS_AND_SERVICES\",\n \"clientReferenceId\": \"order_abc123\",\n \"counterpartyId\": \"cp_abc123\",\n \"quoteId\": \"quote_xyz789\",\n \"remarks\": \"Partial payment - remaining balance to be paid next month\",\n \"internalRemarks\": \"Approved by ops on 2026-04-15\",\n \"developerFeeFixed\": 100,\n \"developerFeePercent\": 0.015,\n \"documentIds\": [\n \"doc_abc123\",\n \"doc_def456\"\n ],\n \"expiresAt\": \"2026-12-31T23:59:59Z\",\n \"confirm\": false,\n \"requiresAuthorization\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/transfers")
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 \"onBehalfOf\": \"cus_abc123\",\n \"amount\": {\n \"currency\": \"USD\",\n \"rawValue\": \"10000\"\n },\n \"source\": {\n \"currency\": \"USDC\",\n \"paymentRail\": \"ETHEREUM\",\n \"accountId\": \"inw_abc123\",\n \"direction\": \"CREDIT\",\n \"refundAccountId\": \"inw_abc123\"\n },\n \"destination\": {\n \"accountId\": \"acc_def456\",\n \"currency\": \"USDC\",\n \"paymentRail\": \"ETHEREUM\",\n \"correspondentBankName\": \"Bank of America\",\n \"correspondentBankSwiftCode\": \"IRVTUS3NXXX\",\n \"correspondentAccountNumber\": \"9876543210\",\n \"wireMessage\": \"Payment for invoice INV-2026-001\",\n \"sepaReference\": \"INV-2026-001\",\n \"achReference\": \"ORDER123\",\n \"blockchainMemo\": \"MEMO123456\",\n \"swiftReference\": \"Payment for Invoice\\\\nReference: INV-2026-001\",\n \"rtpReference\": \"Payment for invoice INV-2026-001\"\n },\n \"paymentReason\": \"PAYMENT_FOR_GOODS_AND_SERVICES\",\n \"clientReferenceId\": \"order_abc123\",\n \"counterpartyId\": \"cp_abc123\",\n \"quoteId\": \"quote_xyz789\",\n \"remarks\": \"Partial payment - remaining balance to be paid next month\",\n \"internalRemarks\": \"Approved by ops on 2026-04-15\",\n \"developerFeeFixed\": 100,\n \"developerFeePercent\": 0.015,\n \"documentIds\": [\n \"doc_abc123\",\n \"doc_def456\"\n ],\n \"expiresAt\": \"2026-12-31T23:59:59Z\",\n \"confirm\": false,\n \"requiresAuthorization\": false\n}"
response = http.request(request)
puts response.read_body{
"id": "tfr_1234567890abcdef",
"organizationId": "org_abc123",
"sourceCustomerId": "cus_abc123",
"flow": "CRYPTO_TO_FIAT",
"status": "COMPLETED",
"source": {
"currency": "usd",
"paymentRail": "ACH",
"fundingCurrency": "usdc",
"direction": "CREDIT",
"accountId": "vba_abc123",
"accountType": "VIRTUAL_BANK",
"externalAccountId": "ext_bank_456",
"fromAddress": "0x1234567890abcdef1234567890abcdef12345678",
"refundAccountId": "inw_abc123",
"accountName": "Acme Corporation",
"originator": {
"name": "Acme Suppliers LLC",
"bankName": "Example National Bank",
"routingNumber": "021000021",
"accountNumber": "987654321",
"swiftBic": "CHASUS33",
"bankCountry": "US"
}
},
"destination": {
"currency": "USDC",
"paymentRail": "ETHEREUM",
"accountId": "vwa_def456",
"accountType": "EXTERNAL_BANK",
"externalAccountId": "ext_bank_789",
"toAddress": "0x1234567890abcdef1234567890abcdef12345678",
"accountName": "Acme Corporation",
"bankName": "JPMorgan Chase Bank",
"bankCountryCode": "US",
"wireMessage": "Payment for invoice INV-2026-001",
"achReference": "ORDER123",
"swiftReference": "Payment for invoice INV-2026-001",
"rtpReference": "Payment for invoice INV-2026-001",
"payoutReference": "INV2026"
},
"sourceAmount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"createdAt": "2026-09-15T10:00:00.000Z",
"updatedAt": "2026-09-15T10:00:00.000Z",
"legs": [
{
"id": "tleg_abc123",
"sequence": 0,
"type": "DEPOSIT_CRYPTO",
"inputCurrency": "USDC",
"outputCurrency": "USD",
"inputRail": "ETHEREUM",
"outputRail": "ACH",
"status": "PENDING",
"startedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"uetr": "9b6f37f2-21f0-4b2b-b03c-1893364782ce",
"imad": "20260309EREBBANK000002",
"omad": "20260309MMQFMP0B012345",
"achTraceNumber": "021000021234567",
"txHash": "0x1234567890abcdef...",
"developerFee": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"feeTxHash": "0x1234567890abcdef..."
}
],
"fundingNeeded": false,
"clientReferenceId": "order_abc123",
"counterpartyId": "cp_abc123",
"agentId": "agt_abc123",
"agentApprovalStatus": "PENDING",
"destinationAmount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"refund": {
"status": "COMPLETED",
"reason": "Fees exceed deposit amount",
"amount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"txHash": "0x1234567890abcdef...",
"initiatedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z"
},
"quoteId": "quote_abc123",
"exchangeRate": "0.99985",
"referenceRate": "1.158691536019208779",
"referenceRateAsOf": "2026-09-02T18:30:04.000Z",
"referenceProvider": "XE",
"developerFeeFixed": "100",
"developerFeePercent": 0.005,
"developerFee": {
"amount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"fixed": "100",
"percent": 0.005,
"txHash": "0x1234567890abcdef..."
},
"depositInstructions": {
"type": "crypto",
"paymentRail": "ETHEREUM",
"toAddress": "0x1234567890abcdef1234567890abcdef12345678",
"amount": {
"currency": "USD",
"exponent": 2,
"value": "12345",
"displayValue": "123.45"
},
"blockchainMemo": "<string>",
"accountId": "acc_abc123"
},
"returnedToAccountId": "acc_123",
"returnedAt": "2026-09-15T10:00:00.000Z",
"currentLegIndex": 0,
"isThirdParty": false,
"remarks": "Partial payment - remaining balance to be paid next month",
"internalRemarks": "<string>",
"uetr": "9b6f37f2-21f0-4b2b-b03c-1893364782ce",
"imad": "20260309EREBBANK000002",
"omad": "20260309MMQFMP0B012345",
"achTraceNumber": "021000021234567",
"originatingAccount": {
"bankName": "<string>",
"routingNumber": "044016018",
"accountNumber": "37216498313366"
},
"txHash": "0x1234567890abcdef...",
"systemRemark": "Tracking is unavailable for this SWIFT transfer. We will auto-complete it after 24 hours and mark it with an asterisk because settlement is assumed rather than confirmed.",
"metadata": {
"swiftRouting": {
"source": "GPI_ROUTE",
"senderBic": "CHASUS33",
"receiverBic": "CLRBGB22",
"checkedAt": "2026-05-10T16:34:42.597Z",
"steps": [
{
"label": "Sender bank",
"bic": "CHASUS33",
"bankName": "JP Morgan Chase",
"status": "Confirmed Active"
}
]
}
},
"estimatedSettlementAt": "2026-05-26T13:00:00.000Z",
"nextCutoffAt": "2026-05-19T19:00:00.000Z",
"cutoffTimezone": "America/New_York",
"counterparty": {
"id": "cp_abc123",
"name": "Jane Doe",
"beneficiaryType": "INDIVIDUAL",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"address": {
"addressLine1": "123 Main Street",
"city": "San Francisco",
"postalCode": "94102",
"country": "US",
"addressLine2": "Apt 4B",
"state": "CA",
"transliterated": {
"addressLine1": "123 Main Street",
"addressLine2": "Apt 4B",
"city": "Beijing",
"state": "Hebei"
}
}
}
}Authorizations
API Key in Bearer format (e.g., Bearer sk_test_...)
Headers
API key
Optional idempotency key (UUID) to prevent duplicate transfers
Body
Primary customer ID (on whose behalf the transfer is made)
"cus_abc123"
Transfer amount
Show child attributes
Show child attributes
{ "currency": "USD", "rawValue": "10000" }
Source payment details
Show child attributes
Show child attributes
Destination payment details
Show child attributes
Show child attributes
Reason for the payment (compliance/AML)
CAPITAL_CONTRIBUTIONS, CHARITABLE_CONTRIBUTIONS, CONSULTING_FEES, CORPORATE_TAX_PAYMENTS, DOWN_PAYMENTS_FOR_REAL_ESTATE, EDUCATION_FEES, EMPLOYEE_SALARIES_OR_WAGES, EXPENSES_REIMBURSEMENT, GIFTS, GOVERNMENT_GRANTS, INCOME_TAX_PAYMENTS, INHERITANCE_PAYMENTS, INSURANCE_CLAIM_PAYOUTS, INSURANCE_PREMIUM_PAYMENTS, INVESTMENTS, LOAN_ADVANCES, MORTGAGE_PAYMENTS, OTHER, PAYMENT_FOR_GOODS_AND_SERVICES, PERSONAL_TRANSFERS, REAL_ESTATE_PURCHASES, REMITTANCES, RENT, REPAYMENT_OF_LOANS, ROYALTIES, SELF, TRADE_SETTLEMENT, TRUST_FUND_DISTRIBUTIONS, UTILITY_BILLS, WELFARE_OR_BENEFITS, WINNINGS_AND_PRIZES "PAYMENT_FOR_GOODS_AND_SERVICES"
Client's internal reference ID (e.g., order ID, transaction ID)
256"order_abc123"
Counterparty ID for third-party recipient transfers. Omit for first-party transfers.
"cp_abc123"
Quote ID to use for rate and amount calculation
"quote_xyz789"
Free-form remarks or notes about the transfer (e.g., invoice discrepancy explanations)
1000"Partial payment - remaining balance to be paid next month"
Internal remarks visible only within your organization. Never forwarded to payment rails (SWIFT, ACH, etc.) or counterparties.
1000"Approved by ops on 2026-04-15"
Fixed developer fee in minor units of source currency. Added on top of provider fees and deducted from the transfer amount.
100
Developer fee as decimal percentage (e.g., 0.015 for 1.5%). Deducted from the transfer amount before sending to the destination. Maximum 0.1 (10%).
x <= 0.10.015
Supporting document IDs for the transfer. Required for third-party SWIFT payments (when the destination account is marked as third-party or the destination customer differs from the originating customer).
["doc_abc123", "doc_def456"]
Optional transfer expiration timestamp. If omitted, the transfer expires 7 days after creation when funded by a fiat pay-in (wire/ACH) and 48 hours after creation otherwise.
"2026-12-31T23:59:59Z"
If true, immediately submit the transfer for processing after creation. If false or omitted, transfer is created in DRAFT status and can be submitted later via POST /transfers/:id/submit.
If true, this payment must be authorized before it is processed. Attach the supporting invoice via documentIds. The transfer parks in PENDING_AUTHORIZATION and does not move funds until it is approved.
Response
Transfer created successfully
Transfer ID (tfr_xxx)
"tfr_1234567890abcdef"
Organization ID
"org_abc123"
Source customer ID
"cus_abc123"
Transfer flow type describing the asset conversion
CRYPTO_TO_CRYPTO, CRYPTO_TO_FIAT, FIAT_TO_CRYPTO, FIAT_TO_FIAT, FIAT_TO_CRYPTO_TO_FIAT, FX, INTERNAL, FEE_CRYPTO, REFUND_CRYPTO, REFUND_FIAT "CRYPTO_TO_FIAT"
Transfer status
DRAFT, PENDING_AUTHORIZATION, IN_REVIEW, PENDING, PROCESSING, COMPLETED, FAILED, CANCELLED, REVERSED "COMPLETED"
Source payment details
Show child attributes
Show child attributes
Destination payment details
Show child attributes
Show child attributes
Source amount with currency details
Show child attributes
Show child attributes
Transfer creation date
"2026-09-15T10:00:00.000Z"
Transfer last update date
"2026-09-15T10:00:00.000Z"
Transfer route legs (steps in the transfer)
Show child attributes
Show child attributes
Whether the transfer is waiting for the customer to send funds (deposit)
false
Client's internal reference ID
"order_abc123"
Counterparty ID for third-party recipient transfers
"cp_abc123"
Agent whose key created or submitted this transfer. Null when the transfer was not made by an agent key.
"agt_abc123"
Owner approval for an agent payment that went over its limits. PENDING: the draft waits for POST /v1/transfers/{id}/agent-approval. Null when no approval was needed.
PENDING, APPROVED, DECLINED Destination amount with currency details
Show child attributes
Show child attributes
Refund details when this transfer has been refunded or a refund is in progress
Show child attributes
Show child attributes
Quote ID if transfer was created from a quote
"quote_abc123"
Exchange rate applied to the currency conversion, inclusive of all fees. Expressed on minor-unit amounts: destinationAmount = sourceAmount * exchangeRate. Populated for FX trades.
"0.99985"
Independent reference rate used to price this transfer, expressed as destination major units per source major unit. Present for benchmark-priced FX transfers.
"1.158691536019208779"
Timestamp of the independent reference rate used to price this transfer (ISO 8601).
"2026-09-02T18:30:04.000Z"
Independent market that published referenceRate. Present when referenceRate is present.
XE "XE"
Fixed developer fee in minor units of source currency. Prefer the developerFee object, which also carries the collected amount and payout hash.
"100"
Variable developer fee as decimal percentage (e.g., 0.005 = 0.5%). Prefer the developerFee object, which also carries the collected amount and payout hash.
0.005
Developer fee charged on this transfer: the configured components plus the collected amount and the on-chain payout hash for reconciliation against your fee wallet. Null when the transfer has no developer fee. Per-step collected amounts and fee tx hashes are on legs[].
Show child attributes
Show child attributes
Deposit instructions if customer needs to send funds (onramps). Either crypto or fiat instructions depending on the transfer flow.
- Option 1
- Option 2
Show child attributes
Show child attributes
Account credited when a settled payout is returned. Null unless the return is attributed to one account on this transfer.
"acc_123"
When the payout return was recorded. Account history uses this time for returned credits.
"2026-09-15T10:00:00.000Z"
Index of the current active leg in the legs array (0-indexed). Null if all legs are done.
0
Whether this is a third-party payment (destination account belongs to someone other than the customer)
false
Free-form remarks or notes about the transfer
"Partial payment - remaining balance to be paid next month"
Internal remarks visible only within your organization. Never forwarded to payment rails or counterparties.
SWIFT UETR (Universal End-to-End Transaction Reference)
"9b6f37f2-21f0-4b2b-b03c-1893364782ce"
Wire IMAD (Input Message Accountability Data)
"20260309EREBBANK000002"
Wire OMAD (Output Message Accountability Data)
"20260309MMQFMP0B012345"
ACH trace number from the payment network
"021000021234567"
Sending bank and account used for the fiat payout, when known
Show child attributes
Show child attributes
Blockchain transaction hash
"0x1234567890abcdef..."
System-generated status note with important transfer context for the customer
"Tracking is unavailable for this SWIFT transfer. We will auto-complete it after 24 hours and mark it with an asterisk because settlement is assumed rather than confirmed."
Additional non-contractual transfer metadata for UI display
{
"swiftRouting": {
"source": "GPI_ROUTE",
"senderBic": "CHASUS33",
"receiverBic": "CLRBGB22",
"checkedAt": "2026-05-10T16:34:42.597Z",
"steps": [
{
"label": "Sender bank",
"bic": "CHASUS33",
"bankName": "JP Morgan Chase",
"status": "Confirmed Active"
}
]
}
}
Estimated time the recipient will receive funds. Best-effort projection — fiat rails account for bank cutoff times, weekends, and US Federal Reserve holidays; crypto conversions project from recently observed processing times for the route. Not a guarantee.
"2026-05-26T13:00:00.000Z"
Next time the customer can submit and still settle same business day. Past this time, transfers settle next business day.
"2026-05-19T19:00:00.000Z"
IANA timezone for the cutoff time, e.g. "America/New_York".
"America/New_York"
Expanded counterparty details (only included when expand=counterparty)
Show child attributes
Show child attributes
Was this page helpful?