Skip to main content
Every transaction that involves a currency conversion or a fiat rail requires a quote. A quote locks the exchange rate and fee structure for a short window, giving you a guaranteed price before committing to execution.

Quote lifecycle

POST /quotes  →  open
                   └── POST /transactions  →  accepted
                   └── (time passes)       →  expired
StatusMeaning
openRate locked. Awaiting transaction creation.
acceptedA transaction has been created from this quote.
expiredPricing window closed. Create a new quote.

What a quote contains

A quote response includes:
  • source: the asset being sent, with amountGross, amountNet, and a feesDeducted breakdown
  • destination: the asset being received, with the same fee structure
  • rates: exchangeRate (spot) and effectiveRate (post-fee)
  • fixedAmountSide: which side you specified (source or destination)
  • expiresAt: when the rate lock expires

Fee structure

Fees are always reported on both sides of the trade. Each side carries:
{
  "amountGross": "100.00",
  "amountNet": "99.42",
  "feesDeducted": {
    "total": "0.58",
    "developer": "0.20",
    "oms": "0.35",
    "gas": "0.03"
  }
}
The core equation: source.amountNet × rates.exchangeRate = destination.amountGross. Developer fees are configurable per integration. Set them on your OMS account or pass them in the quote request. OMS never shows your fee margin to the end user.

Gas sponsorship

Set sponsorGas: true on the quote request to cover network gas for your users. Gas costs move out of the transaction fee breakdown and into sponsorGasCost on your account, a separate, out-of-band developer cost. This is the standard pattern for custodial wallets where users should not be aware of blockchain mechanics.

Fixed-amount quoting

You can fix either side:
  • fixedAmountSide: "source": user sends an exact amount, destination is calculated
  • fixedAmountSide: "destination": user receives an exact amount, source is calculated
This maps cleanly to common UX patterns: “I want to send 100"vs."Iwantmyrecipienttoreceiveexactly100" vs. "I want my recipient to receive exactly 100.”

When quotes are not required

Auto-created transactions from deposit addresses, virtual accounts, and cash-ins skip the quote step. OMS uses live pricing at the moment funds arrive. The same fee structure applies, but pricing is not locked in advance.