Skip to main content
POST
Price a conversion, payout, or withdrawal

Authorizations

x-api-key
string
header
required

Body

application/json
source
object
required
destination
object
required
lockSide
enum<string>
required
Available options:
source,
destination
amount
string
required
markupBps
number

Your own margin on the order this quote prices, in basis points, to two decimal places. Conduit folds it into every option's rate, so endUserRate is the marked-up rate your customer receives and totalSpreadBps includes it. The order that redeems the option charges the same margin and accrues it to you, and it must not declare a margin of its own. Not available on a withdrawal quote, which nothing redeems; declare the margin on POST /v2/payouts instead. Requires markup to be enabled for your organization.

Required range: 0.01 <= x <= 99999.99Must be a multiple of 0.01
markupAmount
string

Your own margin on the order this quote prices, as a flat amount per transaction, in the quote's source asset. A value finer than that asset's precision is refused. A flat amount cannot sit inside a rate, so it behaves exactly as Conduit's own fixed fee, and which side it moves depends on lockSide. On a SOURCE-locked quote it is carved out of the principal, so your customer receives less and totalDebit is unchanged. On a DESTINATION-locked quote it is added, so totalDebit rises and your customer pays more. Either way it appears in every option's fees as an entry owned by you. The order that redeems the option charges the same margin and accrues it to you, and it must not declare a margin of its own. Not available on a withdrawal quote, which nothing redeems; declare the margin on POST /v2/payouts instead. Requires markup to be enabled for your organization.

customerId
string

The customer the quoted conversion is for. When present, Conduit checks that this customer may convert, and refuses the quote with CAPABILITY_SUSPENDED when the order would be refused. Not available on a withdrawal quote.

Pattern: ^cus_[0-9A-Za-z]{22}$
virtualAccountId
string

The virtual account the payout debits, as virtualAccountId on POST /v2/payouts. Only on a withdrawal quote. When present, each option is a rail Conduit can send this payout on from this account now. A rail that only a bank account still waiting for approval could send gets no option. Omit it to price every rail your organization is routed on. A virtual account outside your organization, or in a different asset, is refused with 404 VIRTUAL_ACCOUNT_NOT_FOUND.

Pattern: ^vac_[0-9A-Za-z]{22}$
recipientType
enum<string>

Who the payout pays, as destination.recipient.type on POST /v2/payouts. Only with virtualAccountId, else refused with 400 VALIDATION_ERROR. A rail is then offered only when the payout can route to this recipient type. Without it, a rail is offered when at least one recipient type can take it. It changes which rails are offered, not the fee of an option.

Available options:
individual,
business
destinationCountry
string

Presence discriminates the quote mode alongside whether source/destination share the same asset: different assets + no country prices a conversion; different assets + a country prices a conversion and a payout, unless both sides are fiat, which is refused; the same asset + a country prices a withdrawal; the same asset with no country is refused.

Response

id
string
required
Pattern: ^qte_[0-9A-Za-z]{22}$
sourceAssetRef
object
required
destinationAssetRef
object
required
lockSide
enum<string>
required
Available options:
source,
destination
amount
object
required

The amount this quote locked, in the asset of the side named by lockSide.

options
object[]
required
expiresAt
string<date-time>
required

ISO 8601 timestamp

Example:

"2026-01-15T09:30:00.000Z"

createdAt
string<date-time>
required

ISO 8601 timestamp

Example:

"2026-01-15T09:30:00.000Z"