> ## Documentation Index
> Fetch the complete documentation index at: https://docs.infinite.net/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> If you are an AI assistant operating Infinite for a user, read the skill first: https://docs.infinite.dev/agent-skill.md (setup per host, tool reference, rules for moving money, journeys).
> When operating Infinite for a user, use the MCP server. Sign in at https://bot.api.infinite.dev/mcp (production, acts as the user) or send `Authorization: Bearer <key>` to https://bot.api.infinite.dev/mcp/sse. Prefer its tools over raw HTTP; use REST only for steps no tool covers, and check `get_endpoint_schema` before guessing a request shape.
> Net-new Infinite Connect (org_connect) is operator-assisted: do not grant end users shared org_connect Auth Kit membership or the shared platform org API key — those credentials are org-wide on /v1. BYO org keys onboard under that customer's org id. Operator sessions should show org_connect in get_organization_info.
> The key decides the tools. Every organization key (`sk_sandbox_…` / `sk_live_…`) gets docs, onboarding, `get_account_balance`, and request logs for your own organization. BYO organizations add payees an agent will pay with `create_payee` (payable once ACTIVE). Platform Connect sessions instead get bound-customer payment lookups (`get_quote`, `get_transfer`, `list_transfers`, `list_account_balances`), payee drafts (`create_payee_draft` / `get_payee_draft`; screening only, never payable), transfer drafts that wait for Infinite approval (`create_transfer_draft` / `get_transfer_draft`; never POST /v1/transfers), and with a bound customer, `create_transfer` (real POST /v1/transfers, forced IN_REVIEW until Infinite ops approve; not on BYO org keys). An agent key (`sk_sandbox_agent_…` / `sk_live_agent_…`) on a **PAYMENT**-role agent moves money within that agent's limits: `create_transfer` (draft) → `submit_transfer` → `wait_for_transfer`, without per-payment Infinite approval. **PAYMENT_OPERATIONS** agent keys are read-only (no `get_quote`, `create_transfer`, or `submit_transfer`; use `get_quote_by_id` and `list_transfers` on the pinned customer).
> On sandbox organization-key sessions, `sandbox_approve_customer` (makes the capabilities you pass READY, and related ones may turn READY too; `request_capabilities` is not needed), `sandbox_fund_account`, and `sandbox_complete_transfer` stand in for verification, funding, and settlement, so a whole flow runs from MCP. BYO keys can pass `customerId` on each call without binding; platform sessions must bind a customer first (`create_business_customer` auto-binds, or send `X-Infinite-On-Behalf-Of`).
> When searching documentation without a key, use the docs MCP at https://docs.infinite.dev/mcp.
> Start in sandbox (https://sandbox.api.infinite.dev). Do not use production unless the user explicitly asks.
> Confirm amount, currency, and payee with the user before any payment is submitted. Pass the invoice number as `reference` on `create_transfer`; the summary says what the payee will see.
> REST amounts are integer minor units (`"4000"` = 40.00 USD). MCP payment tools take exact decimal strings (`"40.00"`). Never mix them.
> Agent denials return `403 { denial: { code, message, window, limit, used, remaining, attemptedAmount, currency }, hint }` with decimal amounts; per-transfer denials omit `used` and `remaining`. Report them to the user; do not work around them.

# Deactivate a fixed route

> Closes the deposit account when that is supported, then disables the route. A wallet address cannot be revoked, and some bank deposit accounts cannot be closed: those routes are disabled only, and a later payment can still arrive. Deposits on a disabled route are not auto-swept and are not returned, unless depositsForwardWhileDisabled is true: that deposit address keeps paying the current destination. In-flight transfers keep the destination they were created with. Refuses while a balance deposit into the account is still open, while another account still uses the same deposit account, or while that deposit account still holds a balance.



## OpenAPI

````yaml post /v1/fixed-routes/{id}/deactivate
openapi: 3.0.0
info:
  title: Infinite API
  description: API for Infinite
  version: '1.0'
  contact: {}
servers:
  - url: https://sandbox.api.infinite.dev
    description: Sandbox
  - url: https://api.infinite.dev
    description: Production
security: []
tags:
  - name: Accounts
    description: Virtual and external account management
  - name: Customers
    description: Customer identity management
  - name: Documents
    description: Document upload and management
  - name: Fixed Routes
    description: Fixed route management
  - name: External Bank Accounts
    description: External bank account management
  - name: External Wallets
    description: External wallet management
  - name: Infinite Wallets
    description: Infinite Wallet management
  - name: Organizations
    description: Organization management
  - name: Quotes
    description: Quote creation and management
  - name: Transfers
    description: Money movement and transaction tracking
  - name: Verification
    description: Identity verification workflows
  - name: Terms of Service
    description: Terms of Service acceptance
  - name: Health
    description: System health and monitoring
  - name: Sandbox
    description: Sandbox utilities
paths:
  /v1/fixed-routes/{id}/deactivate:
    post:
      tags:
        - fixed-routes
      summary: Deactivate a fixed route
      description: >-
        Closes the deposit account when that is supported, then disables the
        route. A wallet address cannot be revoked, and some bank deposit
        accounts cannot be closed: those routes are disabled only, and a later
        payment can still arrive. Deposits on a disabled route are not
        auto-swept and are not returned, unless depositsForwardWhileDisabled is
        true: that deposit address keeps paying the current destination.
        In-flight transfers keep the destination they were created with. Refuses
        while a balance deposit into the account is still open, while another
        account still uses the same deposit account, or while that deposit
        account still holds a balance.
      operationId: FixedRoutesController_deactivate_v1
      parameters:
        - name: X-API-Key
          in: header
          description: API key
          required: false
          schema:
            type: string
        - name: id
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: Fixed route deactivated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FixedRouteResponseDto'
        '401':
          description: Unauthorized - Invalid or missing authentication credentials
      security:
        - bearer: []
      x-codeSamples:
        - lang: bash
          label: CLI
          source: >-
            # 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/vba_abc123/deactivate
        - lang: text
          label: MCP
          source: >-
            Deactivate a fixed route (vba_abc123).


            # Infinite MCP is read-only for this endpoint — use a dedicated MCP
            tool when one exists, otherwise run the CLI tab.
components:
  schemas:
    FixedRouteResponseDto:
      type: object
      properties:
        id:
          type: string
          description: Fixed route ID (same as source account ID)
          example: vba_abc123
        customerId:
          type: string
          example: cus_abc123
        type:
          type: string
          enum:
            - FIAT_TO_CRYPTO
            - CRYPTO_TO_FIAT
            - CRYPTO_TO_BALANCE
            - CRYPTO_TO_CRYPTO
            - FIAT_TO_FIAT
            - FIAT_TO_CRYPTO_TO_FIAT
          example: FIAT_TO_CRYPTO
        status:
          type: string
          example: ACTIVE
        enabled:
          type: boolean
          description: >-
            Whether the fixed route is enabled. When false, deposits land but do
            not auto-sweep.
          example: true
        depositMatching:
          type: string
          description: >-
            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.
          enum:
            - DEDICATED
            - REFERENCE
        metadata:
          description: Custom metadata for the fixed route account, including nickname
          allOf:
            - $ref: '#/components/schemas/AccountMetadataDto'
        sourceAccount:
          $ref: '#/components/schemas/SourceAccountDto'
        destinationCurrency:
          type: string
          example: USDC
        destinationRail:
          type: string
          example: BASE
        sweepTargetAccountId:
          type: string
          description: ID of the account funds are swept to
          example: ewa_abc123
        previousSweepTargetAccountId:
          type: string
          description: >-
            Sweep target this route pointed at before the latest retarget.
            Omitted until the route has been retargeted. The next retarget
            replaces it.
          example: ewa_previous
        previousDestinationRail:
          type: string
          description: >-
            Destination rail stored with the previous sweep target. Omitted when
            there is no previous destination.
          example: ETHEREUM
        previousDestinationCurrency:
          type: string
          description: >-
            Destination currency stored with the previous sweep target. Omitted
            when there is no previous destination.
          example: USDT
        sweepTargetAccount:
          description: Sweep target account details (only when expand=sweepTargetAccount)
          allOf:
            - $ref: '#/components/schemas/SweepTargetAccountDto'
        developerFeeFixed:
          type: string
          description: Fixed fee in minor units of source currency
          example: '100000'
        developerFeePercent:
          type: number
          description: Variable fee as decimal percentage (0.01 = 1%)
          example: 0.01
        refundAccountId:
          type: string
          description: >-
            Customer wallet account ID (inw_xxx or ewa_xxx) for refunds on
            failed transfers or when fees exceed deposit
          example: inw_abc123
        correspondentBank:
          description: Correspondent/intermediary bank details (when applicable)
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/FixedRouteCorrespondentBankDto'
        allowedSenderBanks:
          description: >-
            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.
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/AllowedSenderBankDto'
        documentIds:
          description: >-
            Standing supporting agreement document ID applied to transfers
            created by this route.
          maxItems: 1
          nullable: true
          type: array
          items:
            type: string
        minimumAmount:
          description: >-
            Minimum 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.
          allOf:
            - $ref: '#/components/schemas/MoneyOutputDto'
        sharesBalanceAccountCoordinates:
          type: boolean
          description: >-
            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.
          example: false
        payinCloseable:
          type: boolean
          description: >-
            Whether deactivating this route can close the deposit account. When
            false, deactivating only disables the route and a later payment can
            still arrive.
          example: false
        payinClosed:
          type: boolean
          description: >-
            Whether the deposit account is closed. A closed account cannot be
            turned back on.
          example: false
        sourceClosed:
          type: boolean
          description: >-
            Whether the source account is closed. A closed source cannot be
            turned back on. A wallet address can still receive funds.
          example: false
        canReenable:
          type: boolean
          description: >-
            Whether this route can be turned back on. False when the source
            account or the destination account is not active.
          example: true
        depositsForwardWhileDisabled:
          type: boolean
          description: >-
            Whether this deposit address keeps paying the current destination
            after the route is disabled. When false, deposits are not
            auto-swept.
          example: false
        createdAt:
          format: date-time
          type: string
        updatedAt:
          format: date-time
          type: string
      required:
        - id
        - customerId
        - type
        - status
        - enabled
        - sourceAccount
        - sweepTargetAccountId
        - sharesBalanceAccountCoordinates
        - payinCloseable
        - payinClosed
        - sourceClosed
        - canReenable
        - depositsForwardWhileDisabled
        - createdAt
        - updatedAt
    AccountMetadataDto:
      type: object
      properties:
        nickname:
          type: string
          description: Account nickname
          example: Main Checking Account
          maxLength: 256
        purpose:
          type: string
          description: Account purpose
          example: Business operations
          maxLength: 512
        tags:
          description: Account tags
          example:
            - primary
            - operations
          type: array
          items:
            type: string
    SourceAccountDto:
      type: object
      properties:
        id:
          type: string
          example: vba_abc123
        type:
          type: string
          enum:
            - VIRTUAL_BANK
            - VIRTUAL_WALLET
            - INFINITE_BANK
            - INFINITE_WALLET
            - EXTERNAL_BANK
            - EXTERNAL_WALLET
            - EXTERNAL_PROXY
            - PROVIDER_BALANCE
          example: VIRTUAL_BANK
        metadata:
          description: Custom metadata for the source account, including nickname
          allOf:
            - $ref: '#/components/schemas/AccountMetadataDto'
        depositInstructions:
          $ref: '#/components/schemas/BankDepositInstructions'
        sourceCurrency:
          type: string
          example: USD
        sourceRail:
          type: string
          example: ACH
        sourceRails:
          description: >-
            Inbound rails accepted by this deposit account. Omitted when the
            route stores a single rail only.
          example:
            - ACH
            - WIRE
          type: array
          items:
            type: string
        walletAddress:
          type: string
          example: '0x742d35Cc6529Cf6c6D06E4C8a4c07583F5C6C2d8'
        addressType:
          type: string
          example: EVM
        chains:
          type: array
          items:
            type: string
          example:
            - ETHEREUM
            - BASE
        walletType:
          type: string
          enum:
            - TREASURY
            - TRANSACTION
            - VIRTUAL
          description: >-
            Infinite wallet subtype when source is INFINITE_WALLET (e.g. VIRTUAL
            for dedicated offramp deposit wallets)
      required:
        - id
        - type
    SweepTargetAccountDto:
      type: object
      properties:
        id:
          type: string
          example: ewa_abc123
        type:
          type: string
          enum:
            - VIRTUAL_BANK
            - VIRTUAL_WALLET
            - INFINITE_BANK
            - INFINITE_WALLET
            - EXTERNAL_BANK
            - EXTERNAL_WALLET
            - EXTERNAL_PROXY
            - PROVIDER_BALANCE
          example: EXTERNAL_WALLET
        isThirdParty:
          type: boolean
          description: Whether the sweep target belongs to a third party
          example: false
        metadata:
          description: Custom metadata for the sweep target account, including nickname
          allOf:
            - $ref: '#/components/schemas/AccountMetadataDto'
        walletAddress:
          type: string
          example: '0x742d35Cc6529Cf6c6D06E4C8a4c07583F5C6C2d8'
        addressType:
          type: string
          example: EVM
        chains:
          type: array
          items:
            type: string
          example:
            - ETHEREUM
            - BASE
        accountNumber:
          type: string
          example: '****7890'
        routingNumber:
          type: string
          example: '021000021'
        bankName:
          type: string
          example: Bank of America
      required:
        - id
        - type
        - isThirdParty
    FixedRouteCorrespondentBankDto:
      type: object
      properties:
        name:
          type: string
          description: Bank name
          nullable: true
        swiftCode:
          type: string
          description: SWIFT/BIC code
          example: IRVTUS3NXXX
          nullable: true
        accountNumber:
          type: string
          description: Account number
          example: '9876543210'
          nullable: true
    AllowedSenderBankDto:
      type: object
      properties:
        bankName:
          type: string
          description: >-
            Sender bank name. Matched ignoring case, whitespace, and
            punctuation.
          example: JPMorgan Chase
          maxLength: 200
        routingNumber:
          type: string
          description: Sender bank routing number (e.g. US ABA). Matched on digits only.
          example: '021000021'
        swiftBic:
          type: string
          description: Sender bank SWIFT/BIC code (8 or 11 characters)
          example: CHASUS33
    MoneyOutputDto:
      type: object
      properties:
        currency:
          type: string
          description: Currency code
          example: USD
        exponent:
          type: number
          description: >-
            Number of decimal places for this currency (e.g., 2 for USD, 6 for
            USDC)
          example: 2
        value:
          type: string
          description: Amount in smallest unit as a string
          example: '12345'
        displayValue:
          type: string
          description: Human-readable decimal value
          example: '123.45'
      required:
        - currency
        - exponent
        - value
        - displayValue
    BankDepositInstructions:
      type: object
      properties:
        bankName:
          type: string
          example: JPMorgan Chase Bank
        bankAddress:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/BankAddressDto'
        accountNumber:
          type: string
          example: '1234567890'
        routingNumber:
          type: string
          example: '021000021'
        iban:
          type: string
          example: GB82WEST12345698765432
        swiftBic:
          type: string
          example: CHASUS33
        bankCountryCode:
          type: string
          example: US
        reference:
          type: string
          description: >-
            Payment reference the sender includes so a shared deposit account
            can be matched to one route. Omitted when the account number is
            unique.
          example: REF-123456
        depositMessage:
          type: string
          example: INV-2026-0001
        beneficiaryName:
          type: string
          example: John Doe
        beneficiaryAddress:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/BankAddressDto'
      required:
        - accountNumber
    BankAddressDto:
      type: object
      properties:
        addressLine1:
          type: string
          description: Address line 1 (optional for bank addresses)
          example: 123 Main Street
          maxLength: 1024
        addressLine2:
          type: string
          description: Address line 2 (apartment, suite, etc.)
          example: Apt 4B
          maxLength: 1024
        city:
          type: string
          description: City
          example: San Francisco
          maxLength: 256
        state:
          type: string
          description: State / Province
          example: CA
          maxLength: 256
        postalCode:
          type: string
          description: Postal code / ZIP code (optional for bank addresses)
          example: '94102'
          maxLength: 50
        country:
          type: string
          description: Country code (ISO 3166-2)
          example: US
          minLength: 2
          maxLength: 2
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: API Key
      type: http
      description: API Key in Bearer format (e.g., Bearer sk_test_...)

````

## Related topics

- [Fixed Routes](https://docs.infinite.net/concepts/fixed-routes.md)
- [Update a fixed route](https://docs.infinite.net/api-reference/fixed-routes/update-a-fixed-route.md)
- [Get a fixed route by ID](https://docs.infinite.net/api-reference/fixed-routes/get-a-fixed-route-by-id.md)
- [List fixed routes for a customer](https://docs.infinite.net/api-reference/customers/list-fixed-routes-for-a-customer.md)
- [Simulate a fixed-route source deposit](https://docs.infinite.net/api-reference/sandbox/simulate-a-fixed-route-source-deposit.md)
