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

# Create a payment quote

> Creates a payment quote with a locked exchange rate and fee breakdown for a
prospective transfer. Quotes expire after a short window; reference the
returned quote ID when executing the transaction. Pass an Idempotency-Key
header to safely retry.



## OpenAPI

````yaml /api-reference/openapi.yaml post /quotes
openapi: 3.0.3
info:
  title: Polygon OMS Public API
  version: v26.05.28-0001
  description: >-
    Unified API for moving money between crypto and fiat. Three ways to move
    money: Transactions (instant, wallet or card funded, including Cash-In for
    in-person cash deposits), Deposit Addresses (reusable crypto deposit
    configurations), and Virtual Accounts (dedicated bank accounts that
    auto-convert fiat to crypto). Standard transactions follow a two-step flow:
    create a Quote (pricing), then create a Transaction (execution). Cash-in
    codes generate a one-time deposit code for in-person cash deposits at retail
    locations.
  contact:
    name: Polygon OMS
    url: https://oms.polygon.technology
servers:
  - url: https://sandbox-api.polygon.technology/v0.10
    description: Sandbox
  - url: https://api.polygon.technology/v0.10
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Auth
    description: Authentication via FrontEgg
  - name: Customers
    description: Customer management and KYC
  - name: Customer
  - name: Wallet
  - name: Quote
  - name: Transaction
  - name: Webhook
  - name: CashIns
  - name: CashLocation
  - name: Sandbox
  - name: VirtualAccount
  - name: Counterparty
  - name: ExternalAccount
  - name: DepositAddress
  - name: Simulation
paths:
  /quotes:
    post:
      tags:
        - Quote
      summary: Create a payment quote
      description: >-
        Creates a payment quote with a locked exchange rate and fee breakdown
        for a

        prospective transfer. Quotes expire after a short window; reference the

        returned quote ID when executing the transaction. Pass an
        Idempotency-Key

        header to safely retry.
      operationId: createQuote
      parameters:
        - $ref: '#/components/parameters/IdempotencyKeyHeader'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteCreateRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Quote'
          description: >-
            The request has succeeded and a new resource has been created as a
            result.
components:
  parameters:
    IdempotencyKeyHeader:
      description: >-
        Required on POST and PUT requests. Use a unique value per logical
        mutation attempt, for example a UUID.
      in: header
      name: Idempotency-Key
      required: true
      schema:
        type: string
  schemas:
    QuoteCreateRequest:
      description: >-
        Request body for creating a quote. Pick a `type` on each side and set
        the

        amount on exactly one side; OMS calculates the other.
      properties:
        customerId:
          type: string
        destination:
          $ref: '#/components/schemas/QuoteSideRequest'
        metadata:
          type: object
          additionalProperties:
            type: string
        settlementType:
          description: >-
            Card rail only: `internal` (OMS custodies the crypto) or `external`
            (on-chain wallet). Defaults: card buy -> external, card sell ->
            internal. Ignored for non-card rails.
          enum:
            - internal
            - external
          type: string
        source:
          $ref: '#/components/schemas/QuoteSourceRequest'
        sponsorGas:
          type: boolean
      required:
        - customerId
        - source
        - destination
      type: object
    Quote:
      description: >-
        A price quote for moving money between two instruments. It locks an
        exchange rate and the amounts for a short window; execute it by creating
        a transaction that references this quote's id.
      properties:
        createdAt:
          type: string
          format: date-time
        customerId:
          type: string
        destination:
          $ref: '#/components/schemas/TransactionDestination'
        expiresAt:
          type: string
          format: date-time
        id:
          type: string
        metadata:
          type: object
          additionalProperties:
            type: string
        object:
          enum:
            - quote
          type: string
        pricing:
          allOf:
            - $ref: '#/components/schemas/Pricing'
          description: Consolidated economics.
        source:
          $ref: '#/components/schemas/TransactionSide'
        sourceToDestination:
          $ref: '#/components/schemas/SourceToDestination'
        status:
          $ref: '#/components/schemas/QuoteStatus'
      required:
        - id
        - object
        - status
        - customerId
        - source
        - destination
        - pricing
      type: object
    QuoteSideRequest:
      description: >-
        The instrument that receives the funds: a wallet (`walletOms` /

        `walletExternal`), a bank account (`bankUs` / `bankIban` /
        `bankCanada`), a

        `card`, or `cash`.
      discriminator:
        mapping:
          bankCanada:
            $ref: '#/components/schemas/BankCanadaSideRequest'
          bankIban:
            $ref: '#/components/schemas/BankIbanSideRequest'
          bankUs:
            $ref: '#/components/schemas/BankUsSideRequest'
          card:
            $ref: '#/components/schemas/CardSideRequest'
          cash:
            $ref: '#/components/schemas/CashSideRequest'
          walletExternal:
            $ref: '#/components/schemas/WalletExternalSideRequest'
          walletOms:
            $ref: '#/components/schemas/WalletOmsSideRequest'
        propertyName: type
      oneOf:
        - $ref: '#/components/schemas/WalletOmsSideRequest'
        - $ref: '#/components/schemas/WalletExternalSideRequest'
        - $ref: '#/components/schemas/BankUsSideRequest'
        - $ref: '#/components/schemas/BankIbanSideRequest'
        - $ref: '#/components/schemas/BankCanadaSideRequest'
        - $ref: '#/components/schemas/CardSideRequest'
        - $ref: '#/components/schemas/CashSideRequest'
      type: object
    QuoteSourceRequest:
      description: >-
        What funds a quote: an OMS Multi-Chain Wallet (`walletOms`) or a
        registered

        card (`card`, pull-from-card). `card` requires `asset: usd`.
      discriminator:
        mapping:
          card:
            $ref: '#/components/schemas/CardSideRequest'
          walletOms:
            $ref: '#/components/schemas/WalletOmsSideRequest'
        propertyName: type
      oneOf:
        - $ref: '#/components/schemas/WalletOmsSideRequest'
        - $ref: '#/components/schemas/CardSideRequest'
      type: object
    TransactionDestination:
      description: >-
        The destination side of a transaction or quote: a typed instrument plus
        `payoutOrigin`. Amounts live only in `pricing`.
      discriminator:
        mapping:
          bankCanada:
            $ref: '#/components/schemas/BankCanadaDestination'
          bankIban:
            $ref: '#/components/schemas/BankIbanDestination'
          bankUs:
            $ref: '#/components/schemas/BankUsDestination'
          card:
            $ref: '#/components/schemas/CardDestination'
          cash:
            $ref: '#/components/schemas/CashDestination'
          walletExternal:
            $ref: '#/components/schemas/WalletExternalDestination'
          walletOms:
            $ref: '#/components/schemas/WalletOmsDestination'
        propertyName: type
      oneOf:
        - $ref: '#/components/schemas/WalletOmsDestination'
        - $ref: '#/components/schemas/WalletExternalDestination'
        - $ref: '#/components/schemas/BankUsDestination'
        - $ref: '#/components/schemas/BankIbanDestination'
        - $ref: '#/components/schemas/BankCanadaDestination'
        - $ref: '#/components/schemas/CardDestination'
        - $ref: '#/components/schemas/CashDestination'
      type: object
    Pricing:
      description: >-
        Consolidated economics for a quote or transaction: per-side amounts and
        fees, the rate pair, and gas sponsorship, all in one place.
      properties:
        destination:
          $ref: '#/components/schemas/PricingSide'
        effectiveRate:
          type: string
        exchangeRate:
          type: string
        fixedAmountSide:
          enum:
            - source
            - destination
          type: string
        pair:
          description: Asset pair, e.g. "usdc/usd".
          type: string
        source:
          $ref: '#/components/schemas/PricingSide'
        sponsorGas:
          type: boolean
        sponsorGasCost:
          type: string
      type: object
    TransactionSide:
      description: >-
        The source side of a transaction or quote: a typed instrument carrying
        identity (`party`) and instrument detail. Amounts live only in
        `pricing`.
      discriminator:
        mapping:
          bankCanada:
            $ref: '#/components/schemas/BankCanadaInstrument'
          bankIban:
            $ref: '#/components/schemas/BankIbanInstrument'
          bankUs:
            $ref: '#/components/schemas/BankUsInstrument'
          card:
            $ref: '#/components/schemas/CardInstrument'
          cash:
            $ref: '#/components/schemas/CashInstrument'
          walletExternal:
            $ref: '#/components/schemas/WalletExternalInstrument'
          walletOms:
            $ref: '#/components/schemas/WalletOmsInstrument'
        propertyName: type
      oneOf:
        - $ref: '#/components/schemas/WalletOmsInstrument'
        - $ref: '#/components/schemas/WalletExternalInstrument'
        - $ref: '#/components/schemas/BankUsInstrument'
        - $ref: '#/components/schemas/BankIbanInstrument'
        - $ref: '#/components/schemas/BankCanadaInstrument'
        - $ref: '#/components/schemas/CardInstrument'
        - $ref: '#/components/schemas/CashInstrument'
      type: object
    SourceToDestination:
      description: >-
        Composite of source and destination instrument categories, inferred from
        each side. Replaces the older `TransferType`. The cash corridors
        (`cryptoToCash`, `cashToCrypto`) are derived from a cash-pickup
        destination or cash-in source respectively; the rest map straight from
        the internal corridor type.
      enum:
        - cryptoToCrypto
        - cryptoToCash
        - cryptoToFiatAccount
        - cashToCrypto
        - fiatAccountToCrypto
      type: string
    QuoteStatus:
      description: >-
        Status of a quote. open: pricing locked, awaiting acceptance. accepted:
        a transaction has been created from it. expired: the pricing window
        elapsed.
      enum:
        - open
        - accepted
        - expired
      type: string
    BankCanadaSideRequest:
      description: >-
        Deliver to a Canadian bank account. USD routes over SWIFT; CAD over
        local rails.
      properties:
        amount:
          $ref: '#/components/schemas/decimalString'
        details:
          $ref: '#/components/schemas/BankCanadaSideDetails'
        type:
          enum:
            - bankCanada
          type: string
      required:
        - type
        - details
      type: object
    BankIbanSideRequest:
      description: Deliver to an IBAN account over SWIFT (USD).
      properties:
        amount:
          $ref: '#/components/schemas/decimalString'
        details:
          $ref: '#/components/schemas/BankIbanSideDetails'
        type:
          enum:
            - bankIban
          type: string
      required:
        - type
        - details
      type: object
    BankUsSideRequest:
      description: Deliver to a US bank account.
      properties:
        amount:
          $ref: '#/components/schemas/decimalString'
        details:
          $ref: '#/components/schemas/BankUsSideDetails'
        type:
          enum:
            - bankUs
          type: string
      required:
        - type
        - details
      type: object
    CardSideRequest:
      description: |-
        A registered debit card. Valid as a source (pull-from-card funding) or a
        destination (push-to-card payout). `network` is inferred server-side and
        returned on the response only.
      properties:
        amount:
          $ref: '#/components/schemas/decimalString'
        details:
          $ref: '#/components/schemas/CardSideDetails'
        type:
          enum:
            - card
          type: string
      required:
        - type
        - details
      type: object
    CashSideRequest:
      description: >-
        Deliver as a cash pickup at a retail payout location. Amount is required
        in

        `details` and must be a multiple of 20.00, up to a maximum of 400.00 per

        transaction.
      properties:
        details:
          $ref: '#/components/schemas/CashSideDetails'
        type:
          enum:
            - cash
          type: string
      required:
        - type
        - details
      type: object
    WalletExternalSideRequest:
      description: >-
        Deliver to a wallet held outside OMS. Provide exactly one of `id` (a

        registered ExternalAccount, ext_wlt_ prefix) or `blockchainAddress` (a
        raw

        on-chain address).
      properties:
        amount:
          $ref: '#/components/schemas/decimalString'
        details:
          $ref: '#/components/schemas/WalletExternalSideDetails'
        type:
          enum:
            - walletExternal
          type: string
      required:
        - type
        - details
      type: object
    WalletOmsSideRequest:
      description: Pull from / deliver to an OMS Multi-Chain Wallet owned by the customer.
      properties:
        amount:
          $ref: '#/components/schemas/decimalString'
        details:
          $ref: '#/components/schemas/WalletOmsSideDetails'
        type:
          enum:
            - walletOms
          type: string
      required:
        - type
        - details
      type: object
    BankCanadaDestination:
      properties:
        category:
          enum:
            - fiatAccount
          type: string
        details:
          $ref: '#/components/schemas/BankCanadaDetails'
        party:
          $ref: '#/components/schemas/Party'
        payoutOrigin:
          $ref: '#/components/schemas/PayoutOrigin'
        type:
          enum:
            - bankCanada
          type: string
      required:
        - type
        - category
        - details
      type: object
    BankIbanDestination:
      properties:
        category:
          enum:
            - fiatAccount
          type: string
        details:
          $ref: '#/components/schemas/BankIbanDetails'
        party:
          $ref: '#/components/schemas/Party'
        payoutOrigin:
          $ref: '#/components/schemas/PayoutOrigin'
        type:
          enum:
            - bankIban
          type: string
      required:
        - type
        - category
        - details
      type: object
    BankUsDestination:
      properties:
        category:
          enum:
            - fiatAccount
          type: string
        details:
          $ref: '#/components/schemas/BankUsDetails'
        party:
          $ref: '#/components/schemas/Party'
        payoutOrigin:
          $ref: '#/components/schemas/PayoutOrigin'
        type:
          enum:
            - bankUs
          type: string
      required:
        - type
        - category
        - details
      type: object
    CardDestination:
      properties:
        category:
          enum:
            - fiatAccount
          type: string
        details:
          $ref: '#/components/schemas/CardDetails'
        party:
          $ref: '#/components/schemas/Party'
        payoutOrigin:
          $ref: '#/components/schemas/PayoutOrigin'
        type:
          enum:
            - card
          type: string
      required:
        - type
        - category
        - details
      type: object
    CashDestination:
      properties:
        category:
          enum:
            - cash
          type: string
        details:
          $ref: '#/components/schemas/CashDetails'
        party:
          $ref: '#/components/schemas/Party'
        payoutOrigin:
          $ref: '#/components/schemas/PayoutOrigin'
        type:
          enum:
            - cash
          type: string
      required:
        - type
        - category
        - details
      type: object
    WalletExternalDestination:
      properties:
        category:
          enum:
            - crypto
          type: string
        details:
          $ref: '#/components/schemas/WalletExternalDetails'
        party:
          $ref: '#/components/schemas/Party'
        payoutOrigin:
          $ref: '#/components/schemas/PayoutOrigin'
        type:
          enum:
            - walletExternal
          type: string
      required:
        - type
        - category
        - details
      type: object
    WalletOmsDestination:
      properties:
        category:
          enum:
            - crypto
          type: string
        details:
          $ref: '#/components/schemas/WalletOmsDetails'
        party:
          allOf:
            - $ref: '#/components/schemas/Party'
          description: Structured identity of who is on this side.
        payoutOrigin:
          $ref: '#/components/schemas/PayoutOrigin'
        type:
          enum:
            - walletOms
          type: string
      required:
        - type
        - category
        - details
      type: object
    PricingSide:
      description: >-
        Per-side economics for the `pricing` object: identity lives on the
        source/destination side; the amounts and fees live here.
      properties:
        amountGross:
          type: string
        amountNet:
          type: string
        asset:
          type: string
        feesDeducted:
          $ref: '#/components/schemas/FeesDeducted'
      type: object
    BankCanadaInstrument:
      description: Canadian bank account instrument.
      properties:
        category:
          enum:
            - fiatAccount
          type: string
        details:
          $ref: '#/components/schemas/BankCanadaDetails'
        party:
          $ref: '#/components/schemas/Party'
        type:
          enum:
            - bankCanada
          type: string
      required:
        - type
        - category
        - details
      type: object
    BankIbanInstrument:
      description: IBAN bank account instrument.
      properties:
        category:
          enum:
            - fiatAccount
          type: string
        details:
          $ref: '#/components/schemas/BankIbanDetails'
        party:
          $ref: '#/components/schemas/Party'
        type:
          enum:
            - bankIban
          type: string
      required:
        - type
        - category
        - details
      type: object
    BankUsInstrument:
      description: US bank account instrument.
      properties:
        category:
          enum:
            - fiatAccount
          type: string
        details:
          $ref: '#/components/schemas/BankUsDetails'
        party:
          $ref: '#/components/schemas/Party'
        type:
          enum:
            - bankUs
          type: string
      required:
        - type
        - category
        - details
      type: object
    CardInstrument:
      description: Card instrument.
      properties:
        category:
          enum:
            - fiatAccount
          type: string
        details:
          $ref: '#/components/schemas/CardDetails'
        party:
          $ref: '#/components/schemas/Party'
        type:
          enum:
            - card
          type: string
      required:
        - type
        - category
        - details
      type: object
    CashInstrument:
      description: Cash instrument.
      properties:
        category:
          enum:
            - cash
          type: string
        details:
          $ref: '#/components/schemas/CashDetails'
        party:
          $ref: '#/components/schemas/Party'
        type:
          enum:
            - cash
          type: string
      required:
        - type
        - category
        - details
      type: object
    WalletExternalInstrument:
      description: Externally-custodied crypto wallet instrument.
      properties:
        category:
          enum:
            - crypto
          type: string
        details:
          $ref: '#/components/schemas/WalletExternalDetails'
        party:
          $ref: '#/components/schemas/Party'
        type:
          enum:
            - walletExternal
          type: string
      required:
        - type
        - category
        - details
      type: object
    WalletOmsInstrument:
      description: OMS-custodied crypto wallet instrument.
      properties:
        category:
          enum:
            - crypto
          type: string
        details:
          $ref: '#/components/schemas/WalletOmsDetails'
        party:
          allOf:
            - $ref: '#/components/schemas/Party'
          description: Structured identity of who is on this side.
        type:
          enum:
            - walletOms
          type: string
      required:
        - type
        - category
        - details
      type: object
    decimalString:
      description: >-
        Wire-safe decimal string for financial float values (USD amounts,
        percentages).
      type: string
      x-go-type: decimal.Decimal
      x-go-type-import:
        path: github.com/shopspring/decimal
    BankCanadaSideDetails:
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolder'
        asset:
          enum:
            - usd
            - cad
          type: string
        id:
          description: Canadian bank ExternalAccount ID (ext_bankCa_ prefix).
          type: string
        network:
          description: USD uses `swift`; CAD uses `local`. Always explicit.
          enum:
            - swift
            - local
          type: string
      required:
        - id
        - asset
        - network
        - accountHolder
      type: object
    BankIbanSideDetails:
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolder'
        asset:
          enum:
            - usd
          type: string
        id:
          description: IBAN ExternalAccount ID (ext_bankIban_ prefix).
          type: string
        network:
          default: swift
          enum:
            - swift
          type: string
      required:
        - id
        - asset
        - accountHolder
      type: object
    BankUsSideDetails:
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolder'
        asset:
          enum:
            - usd
          type: string
        id:
          description: US bank ExternalAccount ID (ext_bankUs_ prefix).
          type: string
        network:
          enum:
            - ach
            - achSameDay
            - wire
            - rtp
          type: string
      required:
        - id
        - asset
        - network
        - accountHolder
      type: object
    CardSideDetails:
      properties:
        asset:
          enum:
            - usd
          type: string
        id:
          description: Card ExternalAccount ID (ext_card_ prefix).
          type: string
      required:
        - id
        - asset
      type: object
    CashSideDetails:
      properties:
        amount:
          allOf:
            - $ref: '#/components/schemas/decimalString'
          description: Multiple of 20.00, at most 400.00.
        asset:
          enum:
            - usd
          type: string
        cashLocationId:
          type: string
        cashLocationReference:
          type: string
      required:
        - asset
        - cashLocationId
        - cashLocationReference
        - amount
      type: object
    WalletExternalSideDetails:
      properties:
        asset:
          description: 'Crypto asset. One of: usdc, usdt.'
          type: string
        blockchainAddress:
          description: >-
            Raw on-chain address (when not registered). One of
            id/blockchainAddress.
          type: string
        id:
          description: ExternalAccount ID (ext_wlt_ prefix). One of id/blockchainAddress.
          type: string
        network:
          type: string
      required:
        - asset
        - network
      type: object
    WalletOmsSideDetails:
      properties:
        asset:
          description: 'Crypto asset. One of: usdc, usdt.'
          type: string
        id:
          description: OMS wallet ID (wlt_ prefix).
          type: string
        network:
          type: string
      required:
        - id
        - asset
        - network
      type: object
    BankCanadaDetails:
      description: Canadian bank account instrument details.
      properties:
        accountNumberLast4:
          type: string
        asset:
          enum:
            - usd
            - cad
          type: string
        bankName:
          type: string
        id:
          type: string
        institutionNumber:
          type: string
        memo:
          type: string
        network:
          enum:
            - swift
            - local
          type: string
        transitNumber:
          type: string
      type: object
    Party:
      discriminator:
        mapping:
          customer:
            $ref: '#/components/schemas/PartyCustomer'
          externalRegistered:
            $ref: '#/components/schemas/PartyExternalRegistered'
          externalUnregistered:
            $ref: '#/components/schemas/PartyExternalUnregistered'
          otherCustomer:
            $ref: '#/components/schemas/PartyOtherCustomer'
        propertyName: relationship
      oneOf:
        - $ref: '#/components/schemas/PartyCustomer'
        - $ref: '#/components/schemas/PartyOtherCustomer'
        - $ref: '#/components/schemas/PartyExternalRegistered'
        - $ref: '#/components/schemas/PartyExternalUnregistered'
      type: object
    PayoutOrigin:
      description: >-
        Where last-mile delivery is sent from. Quote and deposit-address
        responses echo the choice only; the transaction response carries full
        detail (`accountNumber`/`routingNumber`/`txHash`).
      discriminator:
        mapping:
          bank:
            $ref: '#/components/schemas/PayoutOriginBank'
          blockchain:
            $ref: '#/components/schemas/PayoutOriginBlockchain'
        propertyName: type
      oneOf:
        - $ref: '#/components/schemas/PayoutOriginBank'
        - $ref: '#/components/schemas/PayoutOriginBlockchain'
      type: object
    BankIbanDetails:
      description: IBAN bank account instrument details.
      properties:
        BIC:
          type: string
        asset:
          type: string
        bankAddress:
          $ref: '#/components/schemas/Address'
        countryCode:
          type: string
        ibanLast4:
          type: string
        id:
          type: string
        memo:
          type: string
        network:
          enum:
            - swift
          type: string
      type: object
    BankUsDetails:
      description: US bank account instrument details.
      properties:
        accountNumberLast4:
          type: string
        accountType:
          enum:
            - checking
            - savings
          type: string
        asset:
          enum:
            - usd
          type: string
        bankName:
          type: string
        id:
          type: string
        memo:
          type: string
        network:
          enum:
            - ach
            - achSameDay
            - wire
            - rtp
          type: string
        routingNumber:
          type: string
        secCode:
          allOf:
            - $ref: '#/components/schemas/SecCode'
          description: ACH SEC code. Populated only when network is ach or achSameDay.
      type: object
    CardDetails:
      description: Card instrument details.
      properties:
        asset:
          enum:
            - usd
          type: string
        cardNumberLast4:
          type: string
        cardProvider:
          type: string
        id:
          type: string
        memo:
          type: string
        network:
          enum:
            - card
          type: string
      type: object
    CashDetails:
      description: Cash pickup/drop instrument details.
      properties:
        asset:
          type: string
        cashLocationId:
          type: string
        cashLocationReference:
          type: string
        code:
          type: string
        expiresAt:
          type: string
          format: date-time
        locationAddress:
          type: string
        locationName:
          type: string
      type: object
    WalletExternalDetails:
      description: >-
        WalletExternal instrument details: a crypto wallet held in external
        custody.
      properties:
        asset:
          type: string
        blockchainAddress:
          type: string
        blockchainAsset:
          allOf:
            - $ref: '#/components/schemas/BlockchainAsset'
          description: Resolved on-chain asset identity (protocol/chainId/tokenId).
        custodian:
          type: string
        id:
          type: string
        network:
          type: string
        otherCustodian:
          type: string
        txHash:
          type: string
      type: object
    WalletOmsDetails:
      description: 'WalletOms instrument details: an OMS-custodied crypto wallet.'
      properties:
        asset:
          type: string
        blockchainAddress:
          type: string
        blockchainAsset:
          allOf:
            - $ref: '#/components/schemas/BlockchainAsset'
          description: Resolved on-chain asset identity (protocol/chainId/tokenId).
        custodyType:
          enum:
            - custodial
            - embedded
          type: string
        id:
          description: Internal OMS wallet (acc_ prefix).
          type: string
        network:
          type: string
        txHash:
          type: string
      type: object
    FeesDeducted:
      description: |-
        Per-side breakdown of fees deducted in-line from the transaction.
        End-of-month billable fees will be reported separately in the future
        (planned `feesInvoice` sibling). Denominated in that side's asset.
      properties:
        developer:
          description: |-
            Per-side aggregated developer fee total in this side's asset.
            Always "0" in alpha - alpha invariant, mirrors the gas line.
          type: string
        gas:
          type: string
        oms:
          type: string
        total:
          type: string
      required:
        - total
        - developer
        - oms
        - gas
      type: object
    AccountHolder:
      description: Who holds the payout bank account. `customer` is the only valid value.
      enum:
        - customer
      type: string
    PartyCustomer:
      description: The owning OMS customer is on this side.
      properties:
        customerId:
          type: string
        entityType:
          $ref: '#/components/schemas/OwnerType'
        relationship:
          enum:
            - customer
          type: string
      required:
        - relationship
        - customerId
      type: object
    PartyExternalRegistered:
      description: A registered counterparty (saved third party) is on this side.
      properties:
        address:
          allOf:
            - $ref: '#/components/schemas/Address'
          nullable: true
          type: object
        counterpartyId:
          type: string
        entityType:
          $ref: '#/components/schemas/OwnerType'
        name:
          nullable: true
          type: string
        relationship:
          enum:
            - externalRegistered
          type: string
      required:
        - relationship
        - counterpartyId
      type: object
    PartyExternalUnregistered:
      description: >-
        An unrecognized external party (no saved record) is on this side. There
        is no

        OMS record behind it, so it carries no entityType.
      properties:
        address:
          allOf:
            - $ref: '#/components/schemas/Address'
          nullable: true
          type: object
        name:
          nullable: true
          type: string
        relationship:
          enum:
            - externalUnregistered
          type: string
      required:
        - relationship
      type: object
    PartyOtherCustomer:
      description: A different OMS customer is on this side.
      properties:
        customerId:
          type: string
        entityType:
          $ref: '#/components/schemas/OwnerType'
        name:
          nullable: true
          type: string
        relationship:
          enum:
            - otherCustomer
          type: string
      required:
        - relationship
        - customerId
      type: object
    PayoutOriginBank:
      description: >-
        Payout originates from a bank account. Fields are wrapped in a `details`
        envelope (matches the `precursor` shape).
        `accountNumber`/`routingNumber` are full sending-account detail rendered
        on the transaction only; null on quote and deposit-address responses.
      properties:
        details:
          $ref: '#/components/schemas/PayoutOriginBankDetails'
        type:
          enum:
            - bank
          type: string
      required:
        - type
        - details
      type: object
    PayoutOriginBlockchain:
      description: Payout originates from an on-chain address.
      properties:
        blockchainAddress:
          type: string
        custodian:
          type: string
        network:
          type: string
        txHash:
          type: string
        type:
          enum:
            - blockchain
          type: string
      required:
        - type
      type: object
    Address:
      description: A postal address. country is an ISO 3166-1 alpha-2 country code.
      properties:
        city:
          type: string
        country:
          description: ISO 3166-1 alpha-2
          type: string
        line1:
          type: string
        line2:
          type: string
        state:
          type: string
        zipCode:
          type: string
      type: object
    SecCode:
      description: >-
        ACH SEC code. Populated only when the destination bank network is `ach`
        or `achSameDay`; null otherwise. Server-derived from the destination
        owner's and the source customer's `entityType`.
      enum:
        - ccd
        - ppd
        - web
      type: string
    BlockchainAsset:
      description: >-
        On-chain identity for an asset: the chain it lives on, the wire-level
        protocol (EVM, SVM, Sui), and the token identifier within that chain.
      properties:
        chainId:
          description: >-
            Chain identifier within the protocol (for example, an EVM chain ID
            or a Solana cluster name).
          type: string
        protocol:
          $ref: '#/components/schemas/BlockchainProtocol'
        tokenId:
          description: >-
            Token identifier on the chain (for example, an ERC-20 contract
            address or an SPL mint address). Use the chain's canonical
            representation for the native asset.
          type: string
      required:
        - protocol
        - chainId
        - tokenId
      type: object
    OwnerType:
      enum:
        - individual
        - business
      type: string
    PayoutOriginBankDetails:
      description: >-
        Bank payout-origin detail. `accountHolder`(+`Name`) is the chosen sender

        identity (echoed on Quote/DA too); `accountNumber`/`routingNumber` are
        the

        full sending-account coordinates (Transaction only, else null);
        `virtualAccountId`

        is the VA the funds were pulled from.
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolder'
        accountHolderName:
          type: string
        accountNumber:
          nullable: true
          type: string
        routingNumber:
          nullable: true
          type: string
        virtualAccountId:
          nullable: true
          type: string
      type: object
    BlockchainProtocol:
      description: >-
        Wire-level protocol family for a chain. `evm` covers Ethereum-compatible
        chains, `svm` covers the Solana virtual machine, and `sui` covers the
        Sui Move VM.
      enum:
        - evm
        - svm
        - sui
      type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Token from POST /auth/token

````