---
title: "Update a fixed route"
method: PATCH
path: "/v1/fixed-routes/{id}"
tags: ["fixed-routes"]
---

# Update a fixed route

`PATCH /v1/fixed-routes/{id}`

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.

## Path parameters

- `id` string, required

## Headers

- `X-API-Key` string

## Request body

- UpdateFixedRouteDto
  - `correspondentBankName` string — Correspondent/intermediary bank name
  - `correspondentBankSwiftCode` string — Correspondent/intermediary bank SWIFT/BIC code (8 or 11 characters)
  - `correspondentAccountNumber` string — Correspondent/intermediary account number
  - `sweepTargetAccountId` string — New sweep target account ID belonging to the same customer. Follows the same rules as route creation: a bank account for routes that pay out to fiat, or a wallet (EXTERNAL_WALLET, INFINITE_WALLET, or VIRTUAL_WALLET) for crypto-to-crypto routes. 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. 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.
  - `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' — New destination rail. Only 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.
  - `destinationCurrency` string — New destination currency. Only supported on routes that pay out to a bank account. Defaults to USD when converting a crypto-to-crypto route to a bank payout.
  - `developerFeeFixed` string — Fixed fee in minor units of source currency
  - `developerFeePercent` number — Variable fee as decimal percentage (0.01 = 1%). Max 10%.
  - `refundAccountId` string — 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.
  - `enabled` boolean — Whether the fixed route is enabled. When false, deposits land but do not auto-sweep.
  - `metadata` AccountMetadataDto
    - `nickname` string — Account nickname
    - `purpose` string — Account purpose
    - `tags` string[] — Account tags
  - `allowedSenderBanks` AllowedSenderBankDto[] — Allowed sender banks for deposits into this route (fiat pay-in routes only). When set, deposits from sender banks not on this list are held for review instead of being processed automatically. Each entry must include at least one identifier. Set to an empty array to remove the restriction.
    - `bankName` string — Sender bank name. Matched ignoring case, whitespace, and punctuation.
    - `routingNumber` string — Sender bank routing number (e.g. US ABA). Matched on digits only.
    - `swiftBic` string — Sender bank SWIFT/BIC code (8 or 11 characters)
  - `documentIds` string[] — 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.

## Response `200`

Fixed route updated successfully

- FixedRouteResponseDto
  - `id` string, required — Fixed route ID (same as source account ID)
  - `customerId` string, required
  - `type` 'FIAT_TO_CRYPTO' | 'CRYPTO_TO_FIAT' | 'CRYPTO_TO_CRYPTO' | 'FIAT_TO_CRYPTO_TO_FIAT', required
  - `status` string, required
  - `enabled` boolean, required — Whether the fixed route is enabled. When false, deposits land but do not auto-sweep.
  - `metadata` AccountMetadataDto
    - `nickname` string — Account nickname
    - `purpose` string — Account purpose
    - `tags` string[] — Account tags
  - `sourceAccount` SourceAccountDto, required
    - `id` string, required
    - `type` 'VIRTUAL_BANK' | 'VIRTUAL_WALLET' | 'INFINITE_BANK' | 'INFINITE_WALLET' | 'EXTERNAL_BANK' | 'EXTERNAL_WALLET' | 'EXTERNAL_PROXY' | 'PROVIDER_BALANCE', required
    - `metadata` AccountMetadataDto
      - `nickname` string — Account nickname
      - `purpose` string — Account purpose
      - `tags` string[] — Account tags
    - `depositInstructions` BankDepositInstructions
      - `bankName` string
      - `bankAddress` BankAddressDto
        - `addressLine1` string — Address line 1 (optional for bank addresses)
        - `addressLine2` string — Address line 2 (apartment, suite, etc.)
        - `city` string — City
        - `state` string — State / Province
        - `postalCode` string — Postal code / ZIP code (optional for bank addresses)
        - `country` string — Country code (ISO 3166-2)
      - `accountNumber` string, required
      - `routingNumber` string
      - `iban` string
      - `swiftBic` string
      - `bankCountryCode` string
      - `reference` string
      - `depositMessage` string
      - `beneficiaryName` string
      - `beneficiaryAddress` BankAddressDto
        - `addressLine1` string — Address line 1 (optional for bank addresses)
        - `addressLine2` string — Address line 2 (apartment, suite, etc.)
        - `city` string — City
        - `state` string — State / Province
        - `postalCode` string — Postal code / ZIP code (optional for bank addresses)
        - `country` string — Country code (ISO 3166-2)
    - `sourceCurrency` string
    - `sourceRail` string
    - `walletAddress` string
    - `addressType` string
    - `chains` string[]
    - `walletType` 'TREASURY' | 'TRANSACTION' | 'VIRTUAL' — Infinite wallet subtype when source is INFINITE_WALLET (e.g. VIRTUAL for dedicated offramp deposit wallets)
  - `destinationCurrency` string
  - `destinationRail` string
  - `sweepTargetAccountId` string, required — ID of the account funds are swept to
  - `sweepTargetAccount` SweepTargetAccountDto
    - `id` string, required
    - `type` 'VIRTUAL_BANK' | 'VIRTUAL_WALLET' | 'INFINITE_BANK' | 'INFINITE_WALLET' | 'EXTERNAL_BANK' | 'EXTERNAL_WALLET' | 'EXTERNAL_PROXY' | 'PROVIDER_BALANCE', required
    - `isThirdParty` boolean, required — Whether the sweep target belongs to a third party
    - `metadata` AccountMetadataDto
      - `nickname` string — Account nickname
      - `purpose` string — Account purpose
      - `tags` string[] — Account tags
    - `walletAddress` string
    - `addressType` string
    - `chains` string[]
    - `accountNumber` string
    - `routingNumber` string
    - `bankName` string
  - `developerFeeFixed` string, nullable — Fixed fee in minor units of source currency
  - `developerFeePercent` number, nullable — Variable fee as decimal percentage (0.01 = 1%)
  - `refundAccountId` string, nullable — Customer wallet account ID (inw_xxx or ewa_xxx) for refunds on failed transfers or when fees exceed deposit
  - `correspondentBank` FixedRouteCorrespondentBankDto
    - `name` string, nullable — Bank name
    - `swiftCode` string, nullable — SWIFT/BIC code
    - `accountNumber` string, nullable — Account number
  - `allowedSenderBanks` AllowedSenderBankDto[], nullable — 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.
    - `bankName` string — Sender bank name. Matched ignoring case, whitespace, and punctuation.
    - `routingNumber` string — Sender bank routing number (e.g. US ABA). Matched on digits only.
    - `swiftBic` string — Sender bank SWIFT/BIC code (8 or 11 characters)
  - `documentIds` string[], nullable — Standing supporting agreement document ID applied to transfers created by this route.
  - `minimumAmount` MoneyOutputDto
    - `currency` string, required — Currency code
    - `exponent` number, required — Number of decimal places for this currency (e.g., 2 for USD, 6 for USDC)
    - `value` string, required — Amount in smallest unit as a string
    - `displayValue` string, required — Human-readable decimal value
  - `sharesBalanceAccountCoordinates` boolean, 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.
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required

## Other responses

- `401` — Unauthorized - Invalid or missing authentication credentials

## Changes

- **2026-09-22** `916d2367a8f8` — 2 breaking, 12 warning, 2 info
  - the response property `sourceAccount/depositInstructions/bankAddress` became nullable for the status `200`
  - the response property `sourceAccount/depositInstructions/beneficiaryAddress` became nullable for the status `200`
  - removed the optional property `sourceAccount/depositInstructions/bankAddress/addressLine1` from the response with the `200` status
  - removed the optional property `sourceAccount/depositInstructions/bankAddress/addressLine2` from the response with the `200` status
  - …12 more
- **2026-09-16** `b83888a376d8` — 3 info
  - added the new optional request property `documentIds`
  - added the optional property `documentIds` to the response with the `200` status
  - added the required property `sweepTargetAccount/allOf[#/components/schemas/SweepTargetAccountDto]/isThirdParty` to the response with the `200` status
- **2026-09-09** `856ef426cc17` — 2 info
  - added the new optional request property `destinationCurrency`
  - added the new optional request property `destinationRail`
- **2026-09-03** `382abbca8b01` — 1 info
  - added the new optional request property `sweepTargetAccountId`

[Change history](https://skmtc.dev/infinite/apis/infinite-api/changes/v1/fixed-routes/:id/patch.md)

---

[API](https://skmtc.dev/infinite/apis/infinite-api.md) · [All operations](https://skmtc.dev/infinite/apis/infinite-api/llms.txt) · [OpenAPI document](https://skmtc.dev/infinite/apis/infinite-api/revisions/916d2367a8f8?raw)
