fixed-routes

Update a fixed route

Changed on

Updates a fixed route configuration. Supports updating fees, refund address, enabled status, metadata, and the sweep target account. Changing the sweep target keeps the same deposit address; the change is rejected while the route has transfers in flight, and transfers already created keep the destination they were created with.

patch/v1/fixed-routes/{id}

Request

Path parameters

idstring required

Headers

X-API-Keystring

API key

Request body

correspondentBankNamestring

Correspondent/intermediary bank name

correspondentBankSwiftCodestring

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

correspondentAccountNumberstring

Correspondent/intermediary account number

sweepTargetAccountIdstring

New sweep target account ID. Follows the same rules as route creation: a bank account for routes that pay out to fiat, a wallet (EXTERNAL_WALLET, INFINITE_WALLET, or VIRTUAL_WALLET) for crypto payouts, or a balance account for a fiat pay-in route in the same currency. Those accounts must belong to the same customer. A treasury Infinite wallet owned by another active customer in the same organization is also allowed when that wallet has no enabled fixed route of its own. Create still requires the same customer. A balance-account destination settles the deposit into that balance (destination rail BALANCE) instead of converting it. Crypto deposits cannot settle into a balance account. Wallet payouts (fiat-to-crypto and crypto-to-crypto) may also set destinationRail and destinationCurrency in the same request, for example to move a payout from Base USDC to Ethereum USDT on another existing wallet. A crypto-to-crypto route whose deposit account is an Infinite-custody wallet may also retarget to a bank account, converting the route to a crypto-to-fiat payout (set destinationRail/destinationCurrency alongside). The deposit address is unchanged. The previous destination account, rail, and currency are kept on the route so a later update can switch back; the next retarget replaces that snapshot. Rejected with 409 while the route has transfers in flight; transfers already created keep the destination they were created with. Routes whose deposit account is issued by a banking partner that binds the payout destination cannot be retargeted — create a new route instead. This field selects an existing account; it does not create one.

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

Legacy single inbound rail. Treated as a one-element sourceRails list. Prefer sourceRails.

sourceRailsstring[]

Optional list of inbound rails for a USD bank pay-in deposit account. Omit to accept ACH and wire. SWIFT is included only when listed. When sourceRail is sent instead, it is treated as a one-element list. Crypto deposit routes still use a single sourceRail.

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

New destination rail. Supported on routes that pay out to a bank account (including a wallet→bank retarget in the same request; defaults to ACH when converting a crypto-to-crypto route to a bank payout) and on wallet payouts (fiat-to-crypto and crypto-to-crypto), where it must be a crypto network the destination wallet can receive on. Rejected when the destination is a balance account (the server sets BALANCE) and when the deposit account payout was fixed at issuance.

destinationCurrencystring

New destination currency. Supported on routes that pay out to a bank account (defaults to USD when converting a crypto-to-crypto route to a bank payout) and on wallet payouts, where it must be USDC or USDT. Rejected when the destination is a balance account.

developerFeeFixedstring

Fixed fee in minor units of source currency

developerFeePercentnumber

Variable fee as decimal percentage (0.01 = 1%). Max 10%.

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.

enabledboolean

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

documentIdsstring[]

Standing supporting agreement document ID for third-party SWIFT payouts. Set to an empty array to clear; clearing is rejected while an enabled third-party SWIFT route depends on it.

Example request

{
  "correspondentBankName": "Bank of America",
  "correspondentBankSwiftCode": "IRVTUS3NXXX",
  "correspondentAccountNumber": "9876543210",
  "sweepTargetAccountId": "eba_xyz789",
  "sourceRail": "ACH",
  "sourceRails": [
    "ACH",
    "WIRE"
  ],
  "destinationRail": "ACH",
  "destinationCurrency": "USD",
  "developerFeeFixed": "100000",
  "developerFeePercent": 0.01,
  "refundAccountId": "inw_abc123",
  "enabled": true,
  "metadata": {
    "nickname": "Main Checking Account",
    "purpose": "Business operations",
    "tags": [
      "primary",
      "operations"
    ]
  },
  "allowedSenderBanks": [
    {
      "bankName": "JPMorgan Chase",
      "routingNumber": "021000021",
      "swiftBic": "CHASUS33"
    }
  ]
}

Response

Fixed route updated successfully

idstring required

Fixed route ID (same as source account ID)

customerIdstring required
type'FIAT_TO_CRYPTO' | 'CRYPTO_TO_FIAT' | 'CRYPTO_TO_BALANCE' | 'CRYPTO_TO_CRYPTO' | 'FIAT_TO_FIAT' | '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.

depositMatching'DEDICATED' | 'REFERENCE'

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.

destinationCurrencystring
destinationRailstring
sweepTargetAccountIdstring required

ID of the account funds are swept to

previousSweepTargetAccountIdstring

Sweep target this route pointed at before the latest retarget. Omitted until the route has been retargeted. The next retarget replaces it.

previousDestinationRailstring

Destination rail stored with the previous sweep target. Omitted when there is no previous destination.

previousDestinationCurrencystring

Destination currency stored with the previous sweep target. Omitted when there is no previous destination.

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

documentIdsstring[] nullable

Standing supporting agreement document ID applied to transfers created by this route.

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.

payinCloseableboolean required

Whether deactivating this route can close the deposit account. When false, deactivating only disables the route and a later payment can still arrive.

payinClosedboolean required

Whether the deposit account is closed. A closed account cannot be turned back on.

sourceClosedboolean required

Whether the source account is closed. A closed source cannot be turned back on. A wallet address can still receive funds.

canReenableboolean required

Whether this route can be turned back on. False when the source account or the destination account is not active.

depositsForwardWhileDisabledboolean required

Whether this deposit address keeps paying the current destination after the route is disabled. When false, deposits are not auto-swept.

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": "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"
    ]
  },
  "destinationCurrency": "USDC",
  "destinationRail": "BASE",
  "sweepTargetAccountId": "ewa_abc123",
  "previousSweepTargetAccountId": "ewa_previous",
  "previousDestinationRail": "ETHEREUM",
  "previousDestinationCurrency": "USDT",
  "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"
  },
  "canReenable": true
}

Changes

    • info

      added the required property to the response with the status

    • info

      added the required property to the response with the status

    • info

      added the required property to the response with the status

    • info

      added the required property to the response with the status

    • info

      added the required property to the response with the status

    • info

      added the new CNAPS enum value to the request property

    • info

      added the new CNAPS enum value to the request property

    • info

      added the new CNAPS enum value to the request property /