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

# Update an account

> Partially update an onramp, offramp, or swap account.

Only the account's destination routing may be changed. For onramp
accounts these are `crypto_destination_id`, `destination_network_id`,
and `destination_asset`; for offramp accounts it is
`fiat_destination_id`.

An account's `capabilities` and `rail` are fixed when the account is
created and cannot be changed through this endpoint. To use a
different capability or rail, create a new account.



## OpenAPI

````yaml /openapi.yaml patch /accounts/{account_id}
openapi: 3.0.3
info:
  title: Dakota Platform API
  version: 1.0.0
  description: >-
    Combined API specification for Dakota Platform services:

    - Issuance API: Asset minting and burning operations

    - Onboarding API: Know Your Business/Customer verification

    - On/Off Ramp API: Managing on-ramp and off-ramp accounts

    - Recipients API: Managing destinations for KYB'd entities

    - Transactions API: Viewing transaction history across platform operations


    ## Authentication and API Headers


    All API endpoints require the following headers:


    - `x-idempotency-key`: Required for all POST endpoints to ensure request
    idempotency

    - `x-api-key`: Required for authentication across all endpoints


    Note: On /applications endpoints you need a token for authentication instead
    of a x-api-key

    - `x-application-token`: Required for authentication on public /applications
    endpoints (alternative to `x-api-key` where documented)



    ## Rate Limits


    Requests are rate limited per API key. Every response includes the following
    headers:


    | Header | Description |

    | --- | --- |

    | `X-RateLimit-Limit` | Maximum requests allowed in the current one-minute
    window. |

    | `X-RateLimit-Remaining` | Requests remaining in the current window. |

    | `X-RateLimit-Reset` | Absolute Unix timestamp (seconds since epoch) when
    the current rate-limit window resets. |


    When a request is throttled (`429`), responses also include `Retry-After`
    with seconds to wait before retrying.
servers:
  - url: https://api.platform.dakota.xyz
    description: Production environment
  - url: https://api.platform.sandbox.dakota.xyz
    description: Sandbox — safe for testing with simulated data
security:
  - ApiKeyAuth: []
tags:
  - name: Agentic Payments
    x-alpha: true
    description: >-
      Alpha — agent-driven payments: provision agents, draft and approve
      spending mandates, accept reviewed instructions, and manage scheduled
      payments.


      **Prerequisites:** Customer onboarded; signer groups attached for
      recognition.

      **Related:** Wallets, Signer Groups, Transactions
  - name: Mandates
    x-alpha: true
    description: >-
      Alpha — spending mandates: signed, signer-bound authorizations governing
      what may be spent, approved or cancelled by a second recognized signer (§8
      — the dual-control rule that every mandate mutation must be signed by a
      recognized signer OTHER than the bound one). Independent of agents and
      scheduled payments.


      **Prerequisites:** Signer groups attached for recognition.

      **Related:** Signer Groups, Transactions
  - name: Insights
    x-alpha: true
    description: >-
      Alpha — read-only account insight: a deterministic report over a
      customer's agentic activity (funding balances, upcoming obligations,
      failures, mandate headroom and expiry) plus an advisory chat that narrates
      it. Never moves money, never creates or changes anything.


      **Prerequisites:** Customer onboarded; insight is computed from the
      customer's scheduled payments, mandates, and wallets.

      **Related:** Agentic Payments, Mandates
  - name: Customers
    description: >-
      Manage customer entities representing businesses and organizations
      onboarded to Dakota.


      **Prerequisites:** Complete KYB via Onboarding endpoints before initiating
      money movement.

      **Related:** Onboarding, Recipients, Transactions, Accounts, Wallets
  - name: Wallets
    description: >-
      Manage wallets, balances, and wallet-to-signer-group relationships for
      custody and movement controls.


      **Prerequisites:** Customer must exist. Configure signer groups before
      policy-enforced workflows.

      **Related:** Signer Groups, Policies, Transactions, Customers
  - name: Transactions
    description: >-
      Create, cancel, and retrieve transaction records across account and wallet
      flows.


      **Prerequisites:** Accounts or destinations must be configured based on
      flow type.

      **Related:** Accounts, Recipients, Policies, Events
  - name: Recipients
    description: >-
      Manage recipient entities and destination rails used by customers for
      payouts and transfers.


      **Prerequisites:** Customer must be onboarded and active.

      **Related:** Customers, Transactions, Accounts, Onboarding
  - name: Accounts
    description: >-
      Manage account resources used for onramp, offramp, and swap operations.


      **Prerequisites:** Customer must be created and network/asset constraints
      must be known.

      **Related:** Customers, Transactions, Auto Transactions, Info
  - name: Auto Transactions
    description: >-
      Manage automated transaction configurations and execution history for
      account automation workflows.


      **Prerequisites:** Source account must exist and be configured for
      automation.

      **Related:** Accounts, Transactions, Events
  - name: Onboarding
    description: >-
      Manage KYB/KYC onboarding lifecycle, application documents, attestations,
      and verification steps.


      **Prerequisites:** Customer context and required entity/application
      metadata.

      **Related:** Customers, Exceptions, Recipients, Transactions
  - name: Policies
    description: >-
      Define and manage policy objects and rules used for transaction governance
      and risk controls.


      **Prerequisites:** Wallet and signer group resources should be configured
      for enforcement scenarios.

      **Related:** Wallets, Signer Groups, Transactions
  - name: Signer Groups
    description: >-
      Manage signer groups and signer assignments for multi-party authorization
      models.


      **Prerequisites:** Wallets should exist before linking signer groups.

      **Related:** Wallets, Policies, Transactions
  - name: Authentication
    description: >-
      Manage API authentication credentials and key lifecycle for platform
      access.


      **Prerequisites:** Client organization must be provisioned.

      **Related:** Users, Info
  - name: Users
    description: >-
      Manage client users, roles, and identity metadata for platform access
      control.


      **Prerequisites:** Auth credentials and client context must be
      established.

      **Related:** Authentication
  - name: Webhooks
    description: >-
      Manage outbound webhook targets and delivery configuration for event
      notifications.


      **Prerequisites:** Subscriber endpoint must be reachable and secured.

      **Related:** Events, Authentication
  - name: Payouts
    description: >-
      Manage where Dakota sends your accrued developer-fee payouts.


      **Prerequisites:** Auth credentials and client context must be
      established.

      **Related:** Events
  - name: Events
    description: >-
      Retrieve event records emitted by platform operations for audit and
      troubleshooting.


      **Prerequisites:** Requesting client must have access to referenced
      resources.

      **Related:** Webhooks, Transactions, Onboarding
  - name: Info
    description: >-
      Read platform capability metadata, such as supported rails, networks, and
      assets.


      **Prerequisites:** Valid authentication headers.

      **Related:** Accounts, Transactions
  - name: Sandbox
    description: >-
      Trigger sandbox-only simulation endpoints for safe end-to-end integration
      testing with synthetic data. The sandbox host
      (`https://api.platform.sandbox.dakota.xyz`) also accepts a family of
      `X-Sandbox-*` request headers on most write endpoints (`Customers`,
      `Accounts`, `Transactions`, simulate endpoints) that let integrators drive
      deterministic failure modes — pick a preset via `X-Sandbox-Scenario`, or
      compose a custom one with
      `X-Sandbox-Error-Step`/`X-Sandbox-Error-Status`/`X-Sandbox-Error-Message`.
      `X-Sandbox-Instant-Completion` collapses async flows to a single
      synchronous step, and `X-Sandbox-Skip-Auto-Approval` keeps newly created
      KYB applications in `pending` for manual-review testing. All `X-Sandbox-*`
      headers are ignored in production.


      **Prerequisites:** Sandbox environment and test customer data.

      **Related:** Customers, Accounts, Transactions, Onboarding
paths:
  /accounts/{account_id}:
    parameters:
      - name: account_id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/KSUID'
    patch:
      tags:
        - Accounts
      summary: Update an account
      description: |-
        Partially update an onramp, offramp, or swap account.

        Only the account's destination routing may be changed. For onramp
        accounts these are `crypto_destination_id`, `destination_network_id`,
        and `destination_asset`; for offramp accounts it is
        `fiat_destination_id`.

        An account's `capabilities` and `rail` are fixed when the account is
        created and cannot be changed through this endpoint. To use a
        different capability or rail, create a new account.
      operationId: updateAccount
      parameters:
        - $ref: '#/components/parameters/IdempotencyKeyHeader'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountUpdateRequest'
            example:
              account_type: onramp
              crypto_destination_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
              fiat_destination_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
              destination_network_id: ethereum-mainnet
              destination_asset: USDC
      responses:
        '200':
          description: Account updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountResponse'
              example:
                id: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
                account_type: onramp
                bank_account:
                  id: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
                  capabilities:
                    - ach
                    - fedwire
                  aba_routing_number: '123456789'
                  aba_wire_routing_number: '123456789'
                  account_number: '123456789'
                  account_type: checking
                  bic: DEUTDEFFXXX
                  iban: DE89370400440532013000
                  account_holder_name: John Doe
                  account_holder_address:
                    street1: 123 Main St
                    street2: Apt 4B
                    street3: Building C
                    city: San Francisco
                    region: California
                    postal_code: '94105'
                    country: US
                  account_holder_phone: '1234567890'
                  bank_name: Bank of America
                  bank_address:
                    street1: 123 Main St
                    street2: Apt 4B
                    street3: Building C
                    city: San Francisco
                    region: California
                    postal_code: '94105'
                    country: US
                  bank_phone: '+12345678900'
                destination:
                  destination_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
                  destination_type: crypto
                  name: My Ethereum Wallet
                  crypto_address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
                  family: evm
                  network_id: ethereum-mainnet
                source_crypto_address: '0x1234'
                source_family: evm
                source_network_id: ethereum-mainnet
                source_asset: USDC
                destination_asset: USDC
                rail: ach
                destination_rail: ach
        '400':
          description: Invalid request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#invalid-request
                title: Invalid request
                status: 400
                detail: Invalid request
                instance: https://api.platform.dakota.xyz/accounts/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        '401':
          description: Unauthorized
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: >-
                  https://docs.dakota.xyz/api-reference/errors#authentication-error
                title: Unauthorized
                status: 401
                detail: Unauthorized
                instance: https://api.platform.dakota.xyz/accounts/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        '403':
          description: Forbidden
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#forbidden
                title: Forbidden
                status: 403
                detail: Forbidden
                instance: https://api.platform.dakota.xyz/accounts/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        '404':
          description: Not found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#not-found
                title: Not found
                status: 404
                detail: Not found
                instance: https://api.platform.dakota.xyz/accounts/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        '409':
          description: Conflict
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#conflict
                title: Conflict
                status: 409
                detail: Conflict
                instance: https://api.platform.dakota.xyz/accounts/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        '501':
          description: Not implemented
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#not-implemented
                title: Not implemented
                status: 501
                detail: Not implemented
                instance: https://api.platform.dakota.xyz/accounts/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        '502':
          description: Provider error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#provider-error
                title: Provider error
                status: 502
                detail: Provider error
                instance: https://api.platform.dakota.xyz/accounts/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        '503':
          description: Service unavailable
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#internal-error
                title: Service unavailable
                status: 503
                detail: Service unavailable
                instance: https://api.platform.dakota.xyz/accounts/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
      externalDocs:
        description: Read full guide in docs
        url: https://docs.dakota.xyz/api-reference/accounts/update-an-account
components:
  schemas:
    KSUID:
      type: string
      title: KSUID
      description: >-
        KSUID is a 27-character globally unique ID that combines a timestamp
        with a random component. Used for all entity identifiers in the Dakota
        platform.
      pattern: ^[0-9A-Za-z]{27}$
      minLength: 27
      maxLength: 27
      example: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
    AccountUpdateRequest:
      type: object
      title: Account Update Request
      description: |-
        Unified account update request for onramp/offramp/swap.

        Only destination routing fields are updatable: `crypto_destination_id`,
        `destination_network_id`, and `destination_asset` for onramp accounts,
        and `fiat_destination_id` for offramp accounts. `capabilities` and
        `rail` are immutable after account creation and cannot be updated
        through this request; create a new account to change them.
        `developer_fee_bps` is also updatable and applies to future
        transactions only; existing transactions are unaffected.
      required:
        - account_type
      properties:
        account_type:
          $ref: '#/components/schemas/AccountType'
        crypto_destination_id:
          $ref: '#/components/schemas/KSUID'
        fiat_destination_id:
          $ref: '#/components/schemas/KSUID'
        destination_network_id:
          $ref: '#/components/schemas/NetworkId'
        destination_asset:
          type: string
          description: Asset to receive at the destination.
          example: USDC
        developer_fee_bps:
          type: integer
          format: int32
          minimum: 0
          maximum: 10000
          description: >-
            Developer fee (client revenue share) in basis points. When set,

            updates the fee applied to FUTURE transactions on this account;

            existing transactions are unaffected. Routing fields remain
            immutable.
          example: 50
    AccountResponse:
      type: object
      title: Account Response
      description: Unified account response for onramp/offramp/swap.
      required:
        - id
        - account_type
      properties:
        id:
          $ref: '#/components/schemas/KSUID'
        account_type:
          $ref: '#/components/schemas/AccountType'
        bank_account:
          $ref: '#/components/schemas/BankAccount'
        destination:
          $ref: '#/components/schemas/DestinationResponseUnion'
        source_crypto_address:
          type: string
          description: Source crypto address for offramp/swap accounts.
          example: '0x1234'
        source_family:
          $ref: '#/components/schemas/Family'
        source_network_id:
          $ref: '#/components/schemas/NetworkId'
        source_asset:
          type: string
          description: Asset sent into the account.
          example: USDC
        destination_asset:
          type: string
          description: Asset received at the destination.
          example: USDC
        rail:
          $ref: '#/components/schemas/PaymentCapability'
        destination_rail:
          $ref: '#/components/schemas/PaymentCapability'
    ProblemDetails:
      type: object
      required:
        - type
        - title
        - status
      description: |
        Error response following RFC 9457 Problem Details.
        Public API error responses use this format.
      example:
        type: https://docs.dakota.xyz/api-reference/errors#not-found
        title: Customer Not Found
        status: 404
        detail: Customer cst_2abc123 was not found in your organization.
        instance: https://api.platform.dakota.xyz/customers/cst_2abc123
        request_id: req_7f3a8b2c
      properties:
        type:
          type: string
          format: uri
          description: |
            URI reference identifying the problem type.
            Resolves to human-readable documentation.
          example: https://docs.dakota.xyz/api-reference/errors#not-found
        title:
          type: string
          description: >-
            Short, human-readable summary of the problem type. Stable across
            occurrences.
          example: Customer Not Found
        status:
          type: integer
          description: HTTP status code for this occurrence.
          example: 404
        detail:
          type: string
          description: Human-readable explanation specific to this occurrence.
          example: Customer cst_2abc123 was not found in your organization.
        instance:
          type: string
          format: uri
          description: The request path that triggered this error.
          example: https://api.platform.dakota.xyz/customers/cst_2abc123
        request_id:
          type: string
          description: Unique request identifier. Include when contacting support.
          example: req_7f3a8b2c
        errors:
          type: array
          description: Field-level validation errors (present for validation failures).
          items:
            $ref: '#/components/schemas/ValidationError'
    AccountType:
      type: string
      title: Account Type
      description: Unified account family for account resources.
      enum:
        - onramp
        - offramp
        - swap
      example: onramp
    NetworkId:
      type: string
      description: Identifier for a blockchain network
      example: ethereum-mainnet
      enum:
        - ethereum-mainnet
        - ethereum-sepolia
        - ethereum-goerli
        - ethereum-holesky
        - solana-mainnet
        - solana-devnet
        - solana-testnet
        - base-mainnet
        - base-sepolia
        - arbitrum-mainnet
        - arbitrum-sepolia
        - optimism-mainnet
        - optimism-sepolia
        - polygon-mainnet
        - polygon-amoy
      minLength: 1
      maxLength: 30
    BankAccount:
      type: object
      title: Bank Account
      description: Unified schema for bank accounts.
      required:
        - id
        - capabilities
        - account_holder_name
        - bank_name
        - bank_address
      properties:
        id:
          $ref: '#/components/schemas/KSUID'
        capabilities:
          $ref: '#/components/schemas/Capabilities'
        aba_routing_number:
          type: string
          description: ABA routing number for US accounts for general purposes incl. ACH.
          example: '123456789'
        aba_wire_routing_number:
          type: string
          description: ABA routing number for wire transfers (if different).
          example: '123456789'
        account_number:
          type: string
          description: Account number for the US bank account.
          example: '123456789'
        account_type:
          type: string
          description: Type of bank account (for US accounts).
          enum:
            - checking
            - savings
          example: checking
        bic:
          type: string
          description: BIC/SWIFT code for the international bank account.
          example: DEUTDEFFXXX
        iban:
          type: string
          description: IBAN for the international bank account.
          example: DE89370400440532013000
        account_holder_name:
          type: string
          description: Name of the account holder.
          example: John Doe
        account_holder_address:
          $ref: '#/components/schemas/Address'
          description: Address of the account holder.
        account_holder_phone:
          type: string
          description: Phone number of the account holder.
          example: '1234567890'
        bank_name:
          type: string
          description: Name of the bank.
          example: Bank of America
        bank_address:
          $ref: '#/components/schemas/Address'
          description: Address of the bank.
        bank_phone:
          type: string
          description: Phone number of the bank.
          example: '+12345678900'
    DestinationResponseUnion:
      title: Destination Response Union
      description: >-
        Union type for different destination responses with destination_type
        discriminator
      oneOf:
        - $ref: '#/components/schemas/CryptoDestinationResponse'
        - $ref: '#/components/schemas/FiatUSDestinationResponse'
        - $ref: '#/components/schemas/FiatIBANDestinationResponse'
      discriminator:
        propertyName: destination_type
        mapping:
          crypto:
            $ref: '#/components/schemas/CryptoDestinationResponse'
          fiat_us:
            $ref: '#/components/schemas/FiatUSDestinationResponse'
          fiat_iban:
            $ref: '#/components/schemas/FiatIBANDestinationResponse'
    Family:
      type: string
      title: Family
      description: Blockchain family for the crypto account.
      enum:
        - evm
        - solana
      example: evm
    PaymentCapability:
      type: string
      title: Payment Capability
      description: >-
        Type of payment rail capability supported. For onramp accounts,
        `us_bank_account` indicates the account accepts both ACH and Wire
        (Fedwire) deposits interchangeably.
      enum:
        - ach
        - fedwire
        - swift
        - us_bank_account
      example: ach
    ValidationError:
      type: object
      required:
        - field
        - message
      properties:
        field:
          type: string
          description: Field path using dot notation for nested fields.
          example: bank_account.routing_number
        message:
          type: string
          description: Human-readable description of the field error.
          example: Routing number must be exactly 9 digits
        code:
          type: string
          description: Machine-readable error code for this field.
          example: invalid_format
    Capabilities:
      type: array
      title: Capabilities
      description: >-
        List of payment capabilities supported by a rail. Currently, as input,
        you can only request one in this list. This constraint will be loosened
        in the future.
      items:
        $ref: '#/components/schemas/PaymentCapability'
      minItems: 1
      example:
        - ach
        - fedwire
    Address:
      type: object
      title: Address
      description: >-
        Standardized physical address format used throughout the Dakota platform
        for user and entity addresses.
      required:
        - street1
        - city
        - country
      properties:
        street1:
          type: string
          description: Primary street address line
          example: 123 Main St
        street2:
          type: string
          description: >-
            Secondary address information such as apartment, suite, or unit
            number
          example: Apt 4B
        street3:
          type: string
          description: Additional address information like building name or floor
          example: Building C
        city:
          type: string
          description: City or locality name
          example: San Francisco
        region:
          type: string
          description: Full name of state, province, or region
          example: California
        postal_code:
          type: string
          description: Postal or ZIP code
          example: '94105'
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code (two-letter country code)
          example: US
          minLength: 2
          maxLength: 2
    CryptoDestinationResponse:
      type: object
      title: Crypto Destination Response
      description: Response for a crypto destination.
      allOf:
        - $ref: '#/components/schemas/DestinationResponse'
        - type: object
          required:
            - name
            - crypto_address
            - family
          properties:
            destination_type:
              type: string
              enum:
                - crypto
              default: crypto
            name:
              type: string
              description: Name of the destination for reference
              example: My Ethereum Wallet
            crypto_address:
              type: string
              description: Wallet address for the crypto account.
              example: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
            family:
              $ref: '#/components/schemas/Family'
            network_id:
              $ref: '#/components/schemas/NetworkId'
    FiatUSDestinationResponse:
      type: object
      title: US Fiat Destination Response
      description: Response for a US fiat destination.
      allOf:
        - $ref: '#/components/schemas/DestinationResponse'
        - type: object
          required:
            - account_holder_name
            - bank_name
            - bank_address
            - capabilities
            - aba_routing_number
            - account_number
            - account_type
          properties:
            destination_type:
              type: string
              enum:
                - fiat_us
              default: fiat_us
            name:
              type: string
              description: Name of the destination for reference
              example: Primary US Bank Account
            aba_routing_number:
              type: string
              description: ABA routing number for ACH transfers.
              example: '123456789'
            aba_wire_routing_number:
              type: string
              description: ABA routing number for wire transfers (optional).
              nullable: true
              example: '123456789'
            account_number:
              type: string
              description: Account number for the US bank account.
              example: '123456789'
            account_type:
              type: string
              description: Type of bank account.
              enum:
                - checking
                - savings
              example: checking
            account_holder_name:
              type: string
              description: Name of the account holder.
              example: John Doe
            account_holder_address:
              $ref: '#/components/schemas/Address'
            account_holder_phone:
              type: string
              description: Phone number of the account holder.
              example: '1234567890'
            bank_name:
              type: string
              description: Name of the bank.
              example: Bank of America
            bank_address:
              $ref: '#/components/schemas/Address'
            bank_phone:
              type: string
              description: Phone number of the bank.
              example: '1234567890'
            capabilities:
              $ref: '#/components/schemas/Capabilities'
    FiatIBANDestinationResponse:
      type: object
      title: IBAN Fiat Destination Response
      description: >-
        Response for an IBAN bank account destination (for SWIFT and SWIFT
        transfers).
      allOf:
        - $ref: '#/components/schemas/DestinationResponse'
        - type: object
          required:
            - iban
            - account_holder_name
            - capabilities
          properties:
            destination_type:
              type: string
              enum:
                - fiat_iban
              default: fiat_iban
            name:
              type: string
              description: Name of the destination for reference
              example: International Business Account
            iban:
              type: string
              description: IBAN (International Bank Account Number) for the account.
              example: DE89370400440532013000
            bic:
              type: string
              description: >-
                BIC/SWIFT code for the international bank account (optional for
                required for SWIFT).
              example: DEUTDEFFXXX
            account_holder_name:
              type: string
              description: Name of the account holder.
              example: John Doe
            account_holder_address:
              $ref: '#/components/schemas/Address'
            account_holder_phone:
              type: string
              description: Phone number of the account holder.
              example: '1234567890'
            bank_name:
              type: string
              description: Name of the bank.
              example: Deutsche Bank
            bank_address:
              $ref: '#/components/schemas/Address'
            capabilities:
              $ref: '#/components/schemas/Capabilities'
    DestinationResponse:
      type: object
      title: Destination Response
      description: >-
        Base schema for destination responses with a discriminator based on
        destination type.
      required:
        - destination_id
        - destination_type
      properties:
        destination_id:
          $ref: '#/components/schemas/KSUID'
        destination_type:
          type: string
          description: The type of destination.
          enum:
            - crypto
            - fiat_us
            - fiat_iban
      discriminator:
        propertyName: destination_type
        mapping:
          crypto:
            $ref: '#/components/schemas/CryptoDestinationResponse'
          fiat_us:
            $ref: '#/components/schemas/FiatUSDestinationResponse'
          fiat_iban:
            $ref: '#/components/schemas/FiatIBANDestinationResponse'
  parameters:
    IdempotencyKeyHeader:
      name: x-idempotency-key
      in: header
      required: true
      description: >-
        Unique key to ensure request idempotency. If the same key is used within
        a certain time window, the original response will be returned instead of
        executing the request again.
      schema:
        type: string
        format: uuid
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````