asset and a network; fiat sides carry an asset (usd or cad) and a rail-specific network. On a transaction, bank instruments carry no rail: each transfer reports the rail its money moved on.
Crypto assets and networks
OMS custodial wallets and on-chain instruments hold stablecoins:
A crypto instrument pairs the asset with a
network. The network on every crypto request field is a closed set:
Send
network values in lowercase. Typed clients generated from the OMS schema validate against these exact values. Whether an asset is available on a network, and for which resources, is a separate check that depends on your project’s configuration: GET /networks reports it.
Polygon is the recommended network for most use cases: sub-2-second finality, fractions-of-a-cent transaction cost, and native USDC (no bridging or wrapping).
Fiat rails
On a quote, fiat instruments are identified by atype and carry a rail-specific network:
Instant payments (
instant) and intra-bank payments (intraBank) are selectable on quotes and deposit address destinations when the rail is enabled for your project and the receiving bank participates; otherwise the quote is rejected with 422 BankRailNotSupported. They are not available as a virtual account destination rail. On a transaction, the rail a payment used is reported on its transfer, not on the bank instrument.
For a card buy, the quote’s destination controls where the crypto lands. A walletExternal destination delivers to that on-chain address; any other crypto destination delivers to the customer’s OMS-custodied wallet on the destination chain. A card sell always settles into the customer’s walletCrypto.
Which rails a customer can use depends on the rails enabled for your project and on the customer’s endorsements (basic, cryptoCustody, and usd). Endorsement changes arrive as customer.statusChanged and customer.updated webhooks. See Entities and relationships for the endorsement model.
Exchange rates and FX
Most OMS corridors move between USD and USD stablecoins, so the exchange rate sits at or very close to 1. The main cost of a payment is its fees, not the rate. Corridors that deliver CAD carry a real FX rate. A quote locks both for its short validity window.pricing.exchangeRate is the rate from the source asset to the destination asset, and it reconciles the two sides after fees:
pricing object, fee types, and expiry.
Settlement times
Typical production times from initiating a payment to the confirmation event. Inbound confirmations fire when the bank confirms receipt; the same timing applies to payouts.
Amounts above bank-internal thresholds can trigger a compliance review before release: a hold, not a rejection. Execution is never force-split across payments.
Cash networks
OMS supports cash deposits and withdrawals through a partner retail network. A cash-in generates a code the customer presents at a retail location; OMS monitors for the deposit and auto-creates acashToCrypto transaction when cash is received. Cash payouts (cryptoToCash) are delivered as a pickup: the amount must be a multiple of 20.00, up to a maximum of 400.00 per transaction.
Query available locations with GET /cash-locations, passing the cash network’s provider value and the customer’s latitude and longitude, plus an optional radius in miles and a flow of cash_in or cash_out. Add customerId to limit results to locations the customer is eligible to use. See the Cash-ins and cash-outs page for the full flow.
Network reference endpoint
GET /networks returns the live catalog of networks OMS routes on, with each network’s asset list, on-chain identity, and which OMS resources can use it in which direction. The response derives from the current routing configuration and your project’s setup, so it reflects what the running API accepts for you. The response is a list envelope ordered by network; page through it with limit, startingAfter, and endingBefore.
network token you send in request network fields, a category (crypto, fiatAccount, or cash), and a type (blockchain, bankRail, card, or physical). Blockchain networks add chainId (omitted for non-EVM), networkFamily (evm, solana, or tron), and one assets entry per active pair. assets[].contractAddress is omitted for a native asset; assets[].decimals is absent when the onchain scale is unknown for that pair.
supportedBy states, per OMS resource type, whether that network is usable as a source, as a destination, or both. externalAccount is asymmetric: the values are the external-account arm names that can attach on that side (for example, walletExternal for crypto destinations); an empty array means the arm is not selectable on that side.
supportedBy.card is always present and says whether a card transaction can use the network. On the card network, asSource means pull-from-card funding is available and asDestination means push-to-card payout is available. On any other network, asDestination means a card-funded transaction can deliver onto it and asSource means it can fund a push-to-card payout.
supportedBy.wallet is populated on every network where OMS can hold value for your project. It covers both the networks OMS directly serves and networks reachable through the custodial-wallet pair configuration (narrowed to the vendors your project is routed on). When the property is absent, wallet custody on that network is not established for your project; treat absence as unknown, not as false.
Fiat availability is scoped to the caller’s project. Rails your project does not have enabled are reported as unavailable on your response even when they are enabled globally.
Consume this endpoint at the boundary of your integration to drive picker UIs and configuration checks. The tables earlier on this page summarize the same catalog at doc-writing time.