Before you start: the OMS API is in early access. Every endpoint, including the ones in this guide, requires an early-access API key. Request access before you begin.
source is always an OMS crypto wallet (walletId, asset, network), so there is no way to fund a quote from fiat. Instead, fiat enters through a fiat-in product that auto-creates the fiatToCrypto transaction once the money arrives:
- Cash-in: a customer deposits physical cash at a retail location, and OMS delivers USDC to the destination wallet. This is available in the OMS API today.
- Virtual accounts: each customer gets a dedicated bank account number; an ACH or wire deposit auto-converts to USDC. This is in early access.
destination to an OMS wallet (or an onchain address) and let OMS create the transaction for you. You never call POST /quotes for fiat-in.
Cash-in (available today)
Cash-in is the supported fiat-to-crypto path available in the OMS API today. You create a cash-in record that names the customer, the destination wallet, and the cash location where the customer will deposit. OMS returns estimated pricing upfront and finalizes it once the customer deposits cash at the counter.Create a cash-in
customerId: the customer making the deposit. Must have passed KYC.source.asset: alwaysusd.source.indicatedAmount: the expected deposit amount, used for upfront pricing estimates. Defaults to"100.00"if omitted. The actual amount is whatever the customer deposits at the counter.destination.wallet: one ofwallet(an OMS custodial wallet),blockchainAddress(an external onchain address), orexternalAccount(a saved blockchain address).destination.assetanddestination.network: the crypto asset and chain to deliver.cash.cashLocationIdandcash.cashLocationReference: the deposit location, obtained fromGET /cash-locations.
source and destination objects. When the customer deposits cash, OMS recalculates pricing on the actual amount, creates the fiatToCrypto transaction, and delivers USDC to the destination wallet.
For the full lifecycle, pricing fields, location lookup, and webhook events, see the Cash-in guide.
Virtual accounts (early access)
Virtual accounts give each customer a dedicated bank account number. When the customer sends an ACH or wire transfer to that number, OMS auto-converts the deposit to USDC and creates thefiatToCrypto transaction. This suits recurring funding, where a customer tops up the same account repeatedly rather than deposits cash.
Virtual account provisioning is not yet available in the OMS API. To be notified when it launches, register your interest.
Register interest
Share your use case and we’ll reach out when virtual account provisioning is available.
Key points
- Fiat-in never uses a quote. A quote’s source is always an OMS wallet, so fiat cannot fund a quote. Use cash-in or virtual accounts, which auto-create the
fiatToCryptotransaction. - Cash-in is available in the OMS API today. Virtual accounts are in early access.
- The destination is a wallet. Set
destination.walletto an OMS custodial wallet, an onchain address, or a saved blockchain address. - Card-funded on-ramps are on the roadmap. Debit-card funding is coming soon and is not yet a capability you can build against.