---
title: "Create a payment quote"
method: POST
path: "/quotes"
tags: ["Quote"]
---

# Create a payment quote

`POST /quotes`

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.

## Headers

- `Idempotency-Key` string, required

## Request body

- QuoteCreateRequest — Request body for creating a quote. Pick a `type` on each side and set the amount on exactly one side; OMS calculates the other.
  - `customerId` string, required — The customer this quote is for (`cst_` prefix).
  - `source` union, required — What funds a quote: an OMS Multi-Chain Wallet (`walletOms`), a fiat balance wallet (`walletFiat`), or a registered card (`card`, pull-from-card). `card` requires `asset: usd`.
    - object — Pull from / deliver to an OMS Multi-Chain Wallet owned by the customer.
      - `type` 'walletOms', required — Type discriminator.
      - `details` WalletOmsSideDetails, required
        - `id` string, required — OMS wallet ID (wlt_ prefix).
        - `asset` string, required — Crypto asset. One of: usdc, usdt.
        - `network` string, required — Network identifier.
      - `amount` string — Wire-safe decimal string for financial float values (USD amounts, percentages).
    - object — Pull from / deliver to a fiat balance wallet owned by the customer. No `network` - the balance lives on an internal ledger.
      - `type` 'walletFiat', required — Type discriminator.
      - `details` WalletFiatSideDetails, required
        - `id` string, required — OMS fiat wallet ID (wlt_fiat_ prefix).
        - `asset` 'usd', required — Fiat currency. Only `usd` today.
      - `amount` string — Wire-safe decimal string for financial float values (USD amounts, percentages).
    - object — 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.
      - `type` 'card', required — Type discriminator.
      - `details` CardSideDetails, required
        - `id` string, required — Card ExternalAccount ID (ext_card_ prefix).
        - `asset` 'usd', required — Canonical asset identifier.
      - `amount` string — Wire-safe decimal string for financial float values (USD amounts, percentages).
  - `destination` union, required — The instrument that receives the funds: a wallet (`walletOms` / `walletExternal`), a bank account (`bankUs` / `bankIban` / `bankCanada`), a `card`, or `cash`.
    - object — Pull from / deliver to an OMS Multi-Chain Wallet owned by the customer.
      - `type` 'walletOms', required — Type discriminator.
      - `details` WalletOmsSideDetails, required
        - `id` string, required — OMS wallet ID (wlt_ prefix).
        - `asset` string, required — Crypto asset. One of: usdc, usdt.
        - `network` string, required — Network identifier.
      - `amount` string — Wire-safe decimal string for financial float values (USD amounts, percentages).
    - object — 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).
      - `type` 'walletExternal', required — Type discriminator.
      - `details` WalletExternalSideDetails, required
        - `id` string — ExternalAccount ID (ext_wlt_ prefix). One of id/blockchainAddress.
        - `blockchainAddress` string — Raw on-chain address (when not registered). One of id/blockchainAddress.
        - `asset` string, required — Crypto asset. One of: usdc, usdt.
        - `network` string, required — Network identifier.
      - `amount` string — Wire-safe decimal string for financial float values (USD amounts, percentages).
    - object — Deliver to a US bank account.
      - `type` 'bankUs', required — Type discriminator.
      - `details` BankUsSideDetails, required
        - `id` string, required — US bank ExternalAccount ID (ext_bankUs_ prefix).
        - `asset` 'usd', required — Canonical asset identifier.
        - `network` 'ach' | 'achSameDay' | 'wire', required — Network identifier.
        - `accountHolder` 'customer', required — Who holds the payout bank account (OMS closed enum). `customer` is the only valid value.
      - `amount` string — Wire-safe decimal string for financial float values (USD amounts, percentages).
    - object — Deliver to an IBAN account over SWIFT (USD).
      - `type` 'bankIban', required — Type discriminator.
      - `details` BankIbanSideDetails, required
        - `id` string, required — IBAN ExternalAccount ID (ext_bankIban_ prefix).
        - `asset` 'usd', required — Canonical asset identifier.
        - `network` 'swift' — Network identifier.
        - `accountHolder` 'customer', required — Who holds the payout bank account (OMS closed enum). `customer` is the only valid value.
      - `amount` string — Wire-safe decimal string for financial float values (USD amounts, percentages).
    - object — Deliver to a Canadian bank account. USD routes over SWIFT; CAD over local rails.
      - `type` 'bankCanada', required — Type discriminator.
      - `details` BankCanadaSideDetails, required
        - `id` string, required — Canadian bank ExternalAccount ID (ext_bankCa_ prefix).
        - `asset` 'usd' | 'cad', required — Canonical asset identifier.
        - `network` 'swift' | 'local', required — USD uses `swift`; CAD uses `local`. Always explicit.
        - `accountHolder` 'customer', required — Who holds the payout bank account (OMS closed enum). `customer` is the only valid value.
      - `amount` string — Wire-safe decimal string for financial float values (USD amounts, percentages).
    - object — 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.
      - `type` 'card', required — Type discriminator.
      - `details` CardSideDetails, required
        - `id` string, required — Card ExternalAccount ID (ext_card_ prefix).
        - `asset` 'usd', required — Canonical asset identifier.
      - `amount` string — Wire-safe decimal string for financial float values (USD amounts, percentages).
    - object — 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.
      - `type` 'cash', required — Type discriminator.
      - `details` CashSideDetails, required
        - `asset` 'usd', required — Canonical asset identifier.
        - `cashLocationId` string, required — Cash location ID from `GET /cash-locations`.
        - `cashLocationReference` string, required — Provider reference for the location, from `GET /cash-locations`.
        - `amount` string, required — Wire-safe decimal string for financial float values (USD amounts, percentages).
  - `sponsorGas` boolean — When `true`, OMS absorbs the on-chain gas cost for the destination delivery. Only `true` is currently supported. Ignored for non-crypto destinations (no on-chain leg).
  - `settlementType` 'internal' | 'external' — 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.
  - `metadata` object — Free-form key-value pairs stored on the quote and copied to the resulting transaction.

## Response `201`

The request has succeeded and a new resource has been created as a result.

- Quote — 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.
  - `id` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
  - `object` 'quote', required — Resource type discriminator. Always "quote".
  - `status` 'open' | 'accepted' | 'expired', required — Status of a quote. open: pricing locked, awaiting acceptance. accepted: a transaction has been created from it. expired: the pricing window elapsed.
  - `sourceToDestination` 'cryptoToCrypto' | 'cryptoToCash' | 'cryptoToFiatAccount' | 'cashToCrypto' | 'fiatAccountToCrypto' | 'fiatAccountToFiatAccount' — Composite of source and destination instrument categories, inferred from each side. The cash corridors (`cryptoToCash`, `cashToCrypto`) are derived from a cash-pickup destination / cash-in source respectively; the rest map straight from the internal corridor type.
  - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
  - `source` union, required — The source side of a transaction/quote (v0.10): a typed instrument carrying identity (`party`) and instrument detail. Amounts live only in `pricing`.
    - object — OMS-custodied crypto wallet instrument.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'walletOms', required — Type discriminator.
      - `category` 'crypto', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` WalletOmsDetails, required — WalletOms instrument details: an OMS-custodied crypto wallet.
        - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - `asset` string — Canonical asset identifier.
        - `network` string — Network identifier.
        - `blockchainAddress` string — On-chain address.
        - `custodyType` 'custodial' | 'embedded' — How the wallet is held: `custodial` or `embedded`.
        - `txHash` string — On-chain transaction hash.
        - `blockchainAsset` BlockchainAsset
          - `protocol` 'evm' | 'svm' | 'sui', required
          - `chainId` string, required
          - `tokenId` string, required
    - object — Externally-custodied crypto wallet instrument.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'walletExternal', required — Type discriminator.
      - `category` 'crypto', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` WalletExternalDetails, required — WalletExternal instrument details: a crypto wallet held in external custody.
        - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - `asset` string — Canonical asset identifier.
        - `network` string — Network identifier.
        - `blockchainAddress` string — On-chain address.
        - `custodian` string — Custodian holding the funds.
        - `otherCustodian` string — Free-text custodian name when `custodian` is `other`.
        - `txHash` string — On-chain transaction hash.
        - `blockchainAsset` BlockchainAsset
          - `protocol` 'evm' | 'svm' | 'sui', required
          - `chainId` string, required
          - `tokenId` string, required
    - object — Fiat balance wallet instrument - a USD balance held at a partner bank (a settlement bank). No network or on-chain address; an internal ledger.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'walletFiat', required — Type discriminator.
      - `category` 'fiatAccount', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` WalletFiatInstrumentDetails, required — WalletFiat instrument details: a fiat balance wallet held at a partner bank (e.g. USD at a settlement bank). No network or on-chain address - an internal ledger balance.
        - `id` string — OMS fiat wallet ID (`wlt_fiat_` prefix). Look up via `GET /wallets`. Plain string, not the `typeId` scalar: `wlt_fiat_` is a two-token prefix, which the single-underscore `typeId` pattern cannot validate. Matches the sibling `WalletFiatSideDetails.id` in quote.tsp.
        - `asset` 'usd' — Fiat currency of the balance. Only `usd` today.
        - `provider` string — Legal entity holding the balance (e.g. "the settlement bank"). Read-only.
    - object — US bank account instrument.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'bankUs', required — Type discriminator.
      - `category` 'fiatAccount', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` BankUsDetails, required — US bank account instrument details.
        - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - `asset` 'usd' — Canonical asset identifier.
        - `network` 'ach' | 'achSameDay' | 'wire' | 'rtp' — Network identifier.
        - `secCode` 'ccd' | 'ppd' | 'web' — ACH SEC code. Populated only when the destination bank network is `ach`/`achSameDay`; null otherwise. Server-derived from the destination owner's and the source customer's `entityType`.
        - `accountNumberLast4` string — Last four digits of the account number.
        - `routingNumber` string — US ABA routing number.
        - `bankName` string — Bank display name.
        - `accountType` 'checking' | 'savings' — checking or savings.
        - `memo` string — Payment memo.
    - object — IBAN bank account instrument.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'bankIban', required — Type discriminator.
      - `category` 'fiatAccount', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` BankIbanDetails, required — IBAN bank account instrument details.
        - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - `asset` string — Canonical asset identifier.
        - `network` 'swift' — Network identifier.
        - `ibanLast4` string — Last four characters of the IBAN.
        - `BIC` string — SWIFT BIC.
        - `bankAddress` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
          - `line1` string — Street address, line 1.
          - `line2` string — Street address, line 2.
          - `city` string — City.
          - `state` string — State / province / region.
          - `country` string — ISO 3166-1 alpha-2
          - `zipCode` string — ZIP / postal code.
        - `countryCode` string — ISO 3166-1 alpha-2 country code.
        - `memo` string — Payment memo.
    - object — Canadian bank account instrument.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'bankCanada', required — Type discriminator.
      - `category` 'fiatAccount', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` BankCanadaDetails, required — Canadian bank account instrument details.
        - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - `asset` 'usd' | 'cad' — Canonical asset identifier.
        - `network` 'swift' | 'local' — Network identifier.
        - `institutionNumber` string — Canadian 3-digit institution number.
        - `transitNumber` string — Canadian 5-digit transit number.
        - `accountNumberLast4` string — Last four digits of the account number.
        - `bankName` string — Bank display name.
        - `memo` string — Payment memo.
    - object — Card instrument.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'card', required — Type discriminator.
      - `category` 'fiatAccount', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` CardDetails, required — Card instrument details.
        - `id` string — Unique identifier.
        - `asset` 'usd' — Canonical asset identifier.
        - `network` 'card' — Network identifier.
        - `cardNumberLast4` string — Last four digits of the card number.
        - `cardProvider` string — Card network/provider.
        - `memo` string — Payment memo.
    - object — Cash instrument.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'cash', required — Type discriminator.
      - `category` 'cash', required — High-level grouping: always `cash` for cash pickups and drops.
      - `details` CashDetails, required — Cash pickup/drop instrument details.
        - `asset` string — Canonical asset identifier.
        - `cashLocationId` string — Cash location ID from `GET /cash-locations`.
        - `cashLocationReference` string — Provider reference for the location, from `GET /cash-locations`.
        - `code` string — Machine-readable code.
        - `expiresAt` string, date-time — Expiration time.
        - `locationName` string — Display name of the retail location.
        - `locationAddress` string — Street address of the retail location.
  - `destination` union, required — The destination side of a transaction/quote (v0.10): a typed instrument plus `payoutOrigin`. Amounts live only in `pricing`.
    - object
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'walletOms', required — Type discriminator.
      - `category` 'crypto', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` WalletOmsDetails, required — WalletOms instrument details: an OMS-custodied crypto wallet.
        - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - `asset` string — Canonical asset identifier.
        - `network` string — Network identifier.
        - `blockchainAddress` string — On-chain address.
        - `custodyType` 'custodial' | 'embedded' — How the wallet is held: `custodial` or `embedded`.
        - `txHash` string — On-chain transaction hash.
        - `blockchainAsset` BlockchainAsset
          - `protocol` 'evm' | 'svm' | 'sui', required
          - `chainId` string, required
          - `tokenId` string, required
      - `payoutOrigin` union — Where last-mile delivery is sent *from*. Tiered: Quote & Deposit Address echo the choice only; the Transaction carries full detail (`accountNumber`/`routingNumber`/`txHash`). At launch all payouts route through a single provider, so the field is forward-compatible but single-valued.
        - object — Payout originates from a bank account. the response wraps the fields in a `details` envelope (matches the `precursor` shape). `accountNumber`/`routingNumber` are full sending-account detail rendered on the Transaction only, null on Quote/Deposit Address (choice-only).
          - `type` 'bank', required — Type discriminator.
          - `details` PayoutOriginBankDetails, required — 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.
            - `accountHolder` 'customer' — Who holds the payout bank account (OMS closed enum). `customer` is the only valid value.
            - `accountHolderName` string — Name of the sending account holder.
            - `accountNumber` string, nullable — Bank account number.
            - `routingNumber` string, nullable — US ABA routing number.
            - `virtualAccountId` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — Payout originates from an on-chain address.
          - `type` 'blockchain', required — Type discriminator.
          - `blockchainAddress` string — On-chain address.
          - `network` string — Network identifier.
          - `txHash` string — On-chain transaction hash.
          - `custodian` string — Custodian holding the funds.
    - object
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'walletExternal', required — Type discriminator.
      - `category` 'crypto', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` WalletExternalDetails, required — WalletExternal instrument details: a crypto wallet held in external custody.
        - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - `asset` string — Canonical asset identifier.
        - `network` string — Network identifier.
        - `blockchainAddress` string — On-chain address.
        - `custodian` string — Custodian holding the funds.
        - `otherCustodian` string — Free-text custodian name when `custodian` is `other`.
        - `txHash` string — On-chain transaction hash.
        - `blockchainAsset` BlockchainAsset
          - `protocol` 'evm' | 'svm' | 'sui', required
          - `chainId` string, required
          - `tokenId` string, required
      - `payoutOrigin` union — Where last-mile delivery is sent *from*. Tiered: Quote & Deposit Address echo the choice only; the Transaction carries full detail (`accountNumber`/`routingNumber`/`txHash`). At launch all payouts route through a single provider, so the field is forward-compatible but single-valued.
        - object — Payout originates from a bank account. the response wraps the fields in a `details` envelope (matches the `precursor` shape). `accountNumber`/`routingNumber` are full sending-account detail rendered on the Transaction only, null on Quote/Deposit Address (choice-only).
          - `type` 'bank', required — Type discriminator.
          - `details` PayoutOriginBankDetails, required — 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.
            - `accountHolder` 'customer' — Who holds the payout bank account (OMS closed enum). `customer` is the only valid value.
            - `accountHolderName` string — Name of the sending account holder.
            - `accountNumber` string, nullable — Bank account number.
            - `routingNumber` string, nullable — US ABA routing number.
            - `virtualAccountId` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — Payout originates from an on-chain address.
          - `type` 'blockchain', required — Type discriminator.
          - `blockchainAddress` string — On-chain address.
          - `network` string — Network identifier.
          - `txHash` string — On-chain transaction hash.
          - `custodian` string — Custodian holding the funds.
    - object
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'bankUs', required — Type discriminator.
      - `category` 'fiatAccount', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` BankUsDetails, required — US bank account instrument details.
        - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - `asset` 'usd' — Canonical asset identifier.
        - `network` 'ach' | 'achSameDay' | 'wire' | 'rtp' — Network identifier.
        - `secCode` 'ccd' | 'ppd' | 'web' — ACH SEC code. Populated only when the destination bank network is `ach`/`achSameDay`; null otherwise. Server-derived from the destination owner's and the source customer's `entityType`.
        - `accountNumberLast4` string — Last four digits of the account number.
        - `routingNumber` string — US ABA routing number.
        - `bankName` string — Bank display name.
        - `accountType` 'checking' | 'savings' — checking or savings.
        - `memo` string — Payment memo.
      - `payoutOrigin` union — Where last-mile delivery is sent *from*. Tiered: Quote & Deposit Address echo the choice only; the Transaction carries full detail (`accountNumber`/`routingNumber`/`txHash`). At launch all payouts route through a single provider, so the field is forward-compatible but single-valued.
        - object — Payout originates from a bank account. the response wraps the fields in a `details` envelope (matches the `precursor` shape). `accountNumber`/`routingNumber` are full sending-account detail rendered on the Transaction only, null on Quote/Deposit Address (choice-only).
          - `type` 'bank', required — Type discriminator.
          - `details` PayoutOriginBankDetails, required — 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.
            - `accountHolder` 'customer' — Who holds the payout bank account (OMS closed enum). `customer` is the only valid value.
            - `accountHolderName` string — Name of the sending account holder.
            - `accountNumber` string, nullable — Bank account number.
            - `routingNumber` string, nullable — US ABA routing number.
            - `virtualAccountId` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — Payout originates from an on-chain address.
          - `type` 'blockchain', required — Type discriminator.
          - `blockchainAddress` string — On-chain address.
          - `network` string — Network identifier.
          - `txHash` string — On-chain transaction hash.
          - `custodian` string — Custodian holding the funds.
    - object
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'bankIban', required — Type discriminator.
      - `category` 'fiatAccount', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` BankIbanDetails, required — IBAN bank account instrument details.
        - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - `asset` string — Canonical asset identifier.
        - `network` 'swift' — Network identifier.
        - `ibanLast4` string — Last four characters of the IBAN.
        - `BIC` string — SWIFT BIC.
        - `bankAddress` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
          - `line1` string — Street address, line 1.
          - `line2` string — Street address, line 2.
          - `city` string — City.
          - `state` string — State / province / region.
          - `country` string — ISO 3166-1 alpha-2
          - `zipCode` string — ZIP / postal code.
        - `countryCode` string — ISO 3166-1 alpha-2 country code.
        - `memo` string — Payment memo.
      - `payoutOrigin` union — Where last-mile delivery is sent *from*. Tiered: Quote & Deposit Address echo the choice only; the Transaction carries full detail (`accountNumber`/`routingNumber`/`txHash`). At launch all payouts route through a single provider, so the field is forward-compatible but single-valued.
        - object — Payout originates from a bank account. the response wraps the fields in a `details` envelope (matches the `precursor` shape). `accountNumber`/`routingNumber` are full sending-account detail rendered on the Transaction only, null on Quote/Deposit Address (choice-only).
          - `type` 'bank', required — Type discriminator.
          - `details` PayoutOriginBankDetails, required — 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.
            - `accountHolder` 'customer' — Who holds the payout bank account (OMS closed enum). `customer` is the only valid value.
            - `accountHolderName` string — Name of the sending account holder.
            - `accountNumber` string, nullable — Bank account number.
            - `routingNumber` string, nullable — US ABA routing number.
            - `virtualAccountId` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — Payout originates from an on-chain address.
          - `type` 'blockchain', required — Type discriminator.
          - `blockchainAddress` string — On-chain address.
          - `network` string — Network identifier.
          - `txHash` string — On-chain transaction hash.
          - `custodian` string — Custodian holding the funds.
    - object
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'bankCanada', required — Type discriminator.
      - `category` 'fiatAccount', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` BankCanadaDetails, required — Canadian bank account instrument details.
        - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - `asset` 'usd' | 'cad' — Canonical asset identifier.
        - `network` 'swift' | 'local' — Network identifier.
        - `institutionNumber` string — Canadian 3-digit institution number.
        - `transitNumber` string — Canadian 5-digit transit number.
        - `accountNumberLast4` string — Last four digits of the account number.
        - `bankName` string — Bank display name.
        - `memo` string — Payment memo.
      - `payoutOrigin` union — Where last-mile delivery is sent *from*. Tiered: Quote & Deposit Address echo the choice only; the Transaction carries full detail (`accountNumber`/`routingNumber`/`txHash`). At launch all payouts route through a single provider, so the field is forward-compatible but single-valued.
        - object — Payout originates from a bank account. the response wraps the fields in a `details` envelope (matches the `precursor` shape). `accountNumber`/`routingNumber` are full sending-account detail rendered on the Transaction only, null on Quote/Deposit Address (choice-only).
          - `type` 'bank', required — Type discriminator.
          - `details` PayoutOriginBankDetails, required — 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.
            - `accountHolder` 'customer' — Who holds the payout bank account (OMS closed enum). `customer` is the only valid value.
            - `accountHolderName` string — Name of the sending account holder.
            - `accountNumber` string, nullable — Bank account number.
            - `routingNumber` string, nullable — US ABA routing number.
            - `virtualAccountId` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — Payout originates from an on-chain address.
          - `type` 'blockchain', required — Type discriminator.
          - `blockchainAddress` string — On-chain address.
          - `network` string — Network identifier.
          - `txHash` string — On-chain transaction hash.
          - `custodian` string — Custodian holding the funds.
    - object
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'card', required — Type discriminator.
      - `category` 'fiatAccount', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` CardDetails, required — Card instrument details.
        - `id` string — Unique identifier.
        - `asset` 'usd' — Canonical asset identifier.
        - `network` 'card' — Network identifier.
        - `cardNumberLast4` string — Last four digits of the card number.
        - `cardProvider` string — Card network/provider.
        - `memo` string — Payment memo.
      - `payoutOrigin` union — Where last-mile delivery is sent *from*. Tiered: Quote & Deposit Address echo the choice only; the Transaction carries full detail (`accountNumber`/`routingNumber`/`txHash`). At launch all payouts route through a single provider, so the field is forward-compatible but single-valued.
        - object — Payout originates from a bank account. the response wraps the fields in a `details` envelope (matches the `precursor` shape). `accountNumber`/`routingNumber` are full sending-account detail rendered on the Transaction only, null on Quote/Deposit Address (choice-only).
          - `type` 'bank', required — Type discriminator.
          - `details` PayoutOriginBankDetails, required — 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.
            - `accountHolder` 'customer' — Who holds the payout bank account (OMS closed enum). `customer` is the only valid value.
            - `accountHolderName` string — Name of the sending account holder.
            - `accountNumber` string, nullable — Bank account number.
            - `routingNumber` string, nullable — US ABA routing number.
            - `virtualAccountId` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — Payout originates from an on-chain address.
          - `type` 'blockchain', required — Type discriminator.
          - `blockchainAddress` string — On-chain address.
          - `network` string — Network identifier.
          - `txHash` string — On-chain transaction hash.
          - `custodian` string — Custodian holding the funds.
    - object
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'cash', required — Type discriminator.
      - `category` 'cash', required — High-level grouping: always `cash` for cash pickups and drops.
      - `details` CashDetails, required — Cash pickup/drop instrument details.
        - `asset` string — Canonical asset identifier.
        - `cashLocationId` string — Cash location ID from `GET /cash-locations`.
        - `cashLocationReference` string — Provider reference for the location, from `GET /cash-locations`.
        - `code` string — Machine-readable code.
        - `expiresAt` string, date-time — Expiration time.
        - `locationName` string — Display name of the retail location.
        - `locationAddress` string — Street address of the retail location.
      - `payoutOrigin` union — Where last-mile delivery is sent *from*. Tiered: Quote & Deposit Address echo the choice only; the Transaction carries full detail (`accountNumber`/`routingNumber`/`txHash`). At launch all payouts route through a single provider, so the field is forward-compatible but single-valued.
        - object — Payout originates from a bank account. the response wraps the fields in a `details` envelope (matches the `precursor` shape). `accountNumber`/`routingNumber` are full sending-account detail rendered on the Transaction only, null on Quote/Deposit Address (choice-only).
          - `type` 'bank', required — Type discriminator.
          - `details` PayoutOriginBankDetails, required — 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.
            - `accountHolder` 'customer' — Who holds the payout bank account (OMS closed enum). `customer` is the only valid value.
            - `accountHolderName` string — Name of the sending account holder.
            - `accountNumber` string, nullable — Bank account number.
            - `routingNumber` string, nullable — US ABA routing number.
            - `virtualAccountId` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — Payout originates from an on-chain address.
          - `type` 'blockchain', required — Type discriminator.
          - `blockchainAddress` string — On-chain address.
          - `network` string — Network identifier.
          - `txHash` string — On-chain transaction hash.
          - `custodian` string — Custodian holding the funds.
  - `pricing` Pricing, required — Consolidated economics for a quote/transaction: per-side amounts + fees, the rate pair, and gas sponsorship, all in one place.
    - `source` PricingSide — Per-side economics for the `pricing` object: the side carries identity, the amounts and fees live here.
      - `asset` string — Currency these amounts are in. Same as the side's instrument asset, repeated here so pricing is self-contained.
      - `amountGross` string — Amount on this side before fees are applied.
      - `amountNet` string — Amount after fees: what is actually pulled from a source, or delivered to a destination.
      - `feesDeducted` FeesDeducted — 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.
        - `total` string, required
        - `developer` string, required — Per-side aggregated developer fee total in this side's asset. Always "0" in alpha - alpha invariant, mirrors the gas line.
        - `oms` string, required
        - `gas` string, required
    - `destination` PricingSide — Per-side economics for the `pricing` object: the side carries identity, the amounts and fees live here.
      - `asset` string — Currency these amounts are in. Same as the side's instrument asset, repeated here so pricing is self-contained.
      - `amountGross` string — Amount on this side before fees are applied.
      - `amountNet` string — Amount after fees: what is actually pulled from a source, or delivered to a destination.
      - `feesDeducted` FeesDeducted — 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.
        - `total` string, required
        - `developer` string, required — Per-side aggregated developer fee total in this side's asset. Always "0" in alpha - alpha invariant, mirrors the gas line.
        - `oms` string, required
        - `gas` string, required
    - `pair` string — Asset pair, e.g. "usdc/usd".
    - `exchangeRate` string — Mid-market rate between source and destination assets. Identity: source.amountNet × exchangeRate = destination.amountGross.
    - `effectiveRate` string — All-in rate including all fees. Identity: source.amountGross × effectiveRate = destination.amountNet.
    - `fixedAmountSide` 'source' | 'destination' — The side you set `amount` on when creating the quote. OMS calculated the other side.
    - `sponsorGas` boolean — When true, OMS absorbs the destination gas cost. Currently always true.
    - `sponsorGasCost` string — Gas absorbed by the developer when sponsorGas is true. Currently always `0.00`.
  - `expiresAt` string, date-time — When the locked pricing expires.
  - `createdAt` string, date-time — When the quote was created.
  - `metadata` object — Free-form key-value pairs supplied at creation or update.

---

[API](https://skmtc.net/polygon-technology/apis/polygon-oms-public-api.md) · [All operations](https://skmtc.net/polygon-technology/apis/polygon-oms-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/polygon-technology/polygon-oms-public-api/revisions/18fdaebf64e5/schema)
