fixed-routes

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.

post/v1/fixed-routes/virtual-wallets

Headers

X-API-Keystring

API key

Idempotency-Keystring

Optional idempotency key. When supplied, a retry with the same key replays the original response (24h TTL) instead of being rejected as a duplicate.

Request body

correspondentBankNamestring

Correspondent/intermediary bank name

correspondentBankSwiftCodestring

Correspondent/intermediary bank SWIFT/BIC code (8 or 11 characters)

correspondentAccountNumberstring

Correspondent/intermediary account number

customerIdstring required

Customer ID

sweepTargetAccountIdstring required

Target account for sweep. Must be an EXTERNAL_BANK (for crypto→fiat) or EXTERNAL_WALLET/INFINITE_WALLET (for crypto→crypto) that belongs to the same customer. Virtual accounts are not valid destinations.

chainType'EVM' | 'TRON' | 'BITCOIN' | 'SOLANA' required

Chain type for the wallet address

sourceRail'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'

Source rail - chain where deposits are received

sourceCurrencystring

Source currency accepted for deposits

destinationRail'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'

Destination rail - payment network or chain for sweep

destinationCurrencystring

Destination currency to convert to

destinationAchReferencestring

Reference message for ACH transactions (max 10 characters)

destinationWireMessagestring

Message for wire transfers (max 140 characters)

destinationSepaReferencestring

Reference for SEPA transactions (6-140 characters)

destinationSpeiReferencestring

Reference for SPEI transactions (max 40 characters)

developerFeeFixedstring

Fixed fee in minor units of source currency

developerFeePercentnumber

Variable fee as decimal percentage (0.01 = 1%)

refundAccountIdstring

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.

externalReferencestring

Client-provided external reference

Example request

{
  "correspondentBankName": "Bank of America",
  "correspondentBankSwiftCode": "IRVTUS3NXXX",
  "correspondentAccountNumber": "9876543210",
  "customerId": "cus_abc123",
  "sweepTargetAccountId": "eba_xyz789",
  "chainType": "EVM",
  "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": "Main Checking Account",
    "purpose": "Business operations",
    "tags": [
      "primary",
      "operations"
    ]
  }
}

Response

Fixed route created successfully

idstring required

Fixed route ID (same as source account ID)

customerIdstring required
type'FIAT_TO_CRYPTO' | 'CRYPTO_TO_FIAT' | 'CRYPTO_TO_CRYPTO' | 'FIAT_TO_CRYPTO_TO_FIAT' required
statusstring required
enabledboolean required

Whether the fixed route is enabled. When false, deposits land but do not auto-sweep.

destinationCurrencystring
destinationRailstring
sweepTargetAccountIdstring required

ID of the account funds are swept to

developerFeeFixedstring nullable

Fixed fee in minor units of source currency

developerFeePercentnumber nullable

Variable fee as decimal percentage (0.01 = 1%)

refundAccountIdstring nullable

Customer wallet account ID (inw_xxx or ewa_xxx) for refunds on failed transfers or when fees exceed deposit

sharesBalanceAccountCoordinatesboolean required

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.

createdAtstring date-time required
updatedAtstring date-time required

Example response

{
  "id": "vba_abc123",
  "customerId": "cus_abc123",
  "type": "FIAT_TO_CRYPTO",
  "status": "ACTIVE",
  "enabled": true,
  "metadata": {
    "nickname": "Main Checking Account",
    "purpose": "Business operations",
    "tags": [
      "primary",
      "operations"
    ]
  },
  "sourceAccount": {
    "id": "vba_abc123",
    "type": "VIRTUAL_BANK",
    "metadata": {
      "nickname": "Main Checking Account",
      "purpose": "Business operations",
      "tags": [
        "primary",
        "operations"
      ]
    },
    "depositInstructions": {
      "bankName": "JPMorgan Chase Bank",
      "bankAddress": {
        "addressLine1": "123 Main Street",
        "addressLine2": "Apt 4B",
        "city": "San Francisco",
        "state": "CA",
        "postalCode": "94102",
        "country": "US"
      },
      "accountNumber": "1234567890",
      "routingNumber": "021000021",
      "iban": "GB82WEST12345698765432",
      "swiftBic": "CHASUS33",
      "bankCountryCode": "US",
      "reference": "REF-123456",
      "depositMessage": "FFC Acme Holdings LLC 1234567890",
      "beneficiaryName": "John Doe",
      "beneficiaryAddress": {
        "addressLine1": "123 Main Street",
        "addressLine2": "Apt 4B",
        "city": "San Francisco",
        "state": "CA",
        "postalCode": "94102",
        "country": "US"
      }
    },
    "sourceCurrency": "USD",
    "sourceRail": "ACH",
    "walletAddress": "0x742d35Cc6529Cf6c6D06E4C8a4c07583F5C6C2d8",
    "addressType": "EVM",
    "chains": [
      "ETHEREUM",
      "BASE"
    ]
  },
  "destinationCurrency": "USDC",
  "destinationRail": "BASE",
  "sweepTargetAccountId": "ewa_abc123",
  "sweepTargetAccount": {
    "id": "ewa_abc123",
    "type": "EXTERNAL_WALLET",
    "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": {
    "swiftCode": "IRVTUS3NXXX",
    "accountNumber": "9876543210"
  },
  "allowedSenderBanks": [
    {
      "bankName": "JPMorgan Chase",
      "routingNumber": "021000021",
      "swiftBic": "CHASUS33"
    }
  ],
  "minimumAmount": {
    "currency": "USD",
    "exponent": 2,
    "value": "12345",
    "displayValue": "123.45"
  }
}

Changes

No recorded changes to this endpoint across all 1 revision of this API.