Create an order
Create an order with the quote_id returned by get a quote and a to_address on the destination chain. Optionally provide a refund_address; otherwise, refunds go to the original sender.
The response includes deposit_address, amount_in, and deposit_deadline. Send the specified amount to that address before the deadline to begin execution.
Repeating the request with the same quote_id and addresses returns the existing order. Changing the addresses after the quote has been used is rejected. No separate idempotency key is required.
Request example
const response = await fetch("https://api.rift.trade/order", {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
body: JSON.stringify({
quote_id: "00000000-0000-4000-8000-000000000001",
}),
});
const data = await response.json();
console.log(data);Parameters
Required parameters
quote_idstringThe id of a quote from POST /quote. The quote must not have
expired, and a quote binds to one order.
uuid
to_addressstringAddress on the to chain that receives the output. Validated against
that chain's address format.
Optional parameters
refund_addressstring | nullAddress on the from chain that receives a refund if the order cannot
be completed. Optional; when not set, the refund goes to the original
sender.
Show child attributes
Any of: string 1
string
Any of: null 2
null
Responses
The order awaiting its deposit
application/json
{
"id": "019a3c7e-6d2f-7b41-8c3e-2a9f4d5e6b70",
"quote_id": "019a3c7e-5b1a-7c3e-9a51-6f3d2b8e4a10",
"vault_id": "4f8e2c1a-93b7-4d6e-a5f0-7c2b9e8d1a34",
"from": "bitcoin.btc",
"to": "ethereum.usdc",
"amount_in": "0.01",
"amount_out": null,
"payout_tx": null,
"format": "formatted",
"deposit_address": "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq",
"to_address": "0x8ba1f109551bd432803012645ac136ddd64dba72",
"refund_address": null,
"venue_allowlist": [],
"venue_blocklist": [],
"integrator_id": null,
"integrator_fee_bps": null,
"integrator_fee_recipient": null,
"integrator_fee": null,
"integrator_fee_tx": null,
"status": "awaiting_deposit",
"deposit_deadline": "2026-11-07T19:00:12Z",
"created_at": "2026-10-31T19:00:12Z"
}formatstringrequiredThe format every amount and asset name in this response is written in, inherited from the quote.
Allowed: "raw""formatted"
idstringrequiredIdentifier used in GET /order/{id}.
uuid
quote_idstringrequiredThe quote this order was created from.
uuid
vault_idstringrequiredInternal identifier of the vault holding the deposit address.
uuid
fromstringrequiredAsset to deposit, written per format.
tostringrequiredAsset delivered, written per format.
amount_instringrequiredAmount of from to deposit, exactly as quoted.
amount_outstring | nullWhat the order settled: the amount of to that reached to_address
when the status is delivered, or the amount of from that reached
refund_address when it is refunded. Absent until then.
payout_txstring | nullThe transaction that paid amount_out, to to_address when the status
is delivered and to refund_address when it is refunded: a
transaction hash, or a txid on Bitcoin. Null until then.
deposit_addressstringrequiredAddress on the from chain to send amount_in to.
to_addressstringrequiredAddress on the to chain that receives the output.
refund_addressstring | nullAddress on the from chain that receives a refund if the order cannot
be completed. Null when none was given; it is then set to the deposit's
sender address once a refund begins.
Show child attributes
Any of: string 1
string
Any of: null 2
null
venue_allowliststring[]requiredVenues quoting was restricted to; empty when it was not.
Show child attributes
string · "aave", "across", "cctp", "chainflip", "cowswap", "euler", "flytrade", "hyperliquid", "kyberswap", "lifi", "mayan", "metric", "morpho", "near_intents", "nordstern", "okx", "relay", "rift_otc", "transit", "tydro", "ultrayield", "uniswap", "unit", "velora", "weth_contract", "xstocks"
venue_blockliststring[]requiredVenues excluded from quoting; empty when none were.
Show child attributes
string · "aave", "across", "cctp", "chainflip", "cowswap", "euler", "flytrade", "hyperliquid", "kyberswap", "lifi", "mayan", "metric", "morpho", "near_intents", "nordstern", "okx", "relay", "rift_otc", "transit", "tydro", "ultrayield", "uniswap", "unit", "velora", "weth_contract", "xstocks"
integrator_idstring | nullThe integrator_id of the quote this order was created from, or null.
Show child attributes
Any of: string 1
string
Any of: null 2
null
integrator_fee_bpsinteger | nullThe integrator_fee_bps of the quote this order was created from, or
null.
Show child attributes
Any of: integer 1
integer
Any of: null 2
null
integrator_fee_recipientstring | nullThe integrator_fee_recipient of the quote this order was created
from, or null.
Show child attributes
Any of: string 1
string
Any of: null 2
null
integrator_feestring | nullAmount of to paid to integrator_fee_recipient, written per
format. Null until the order is delivered, and for an order without
a fee; a refund pays no fee.
integrator_fee_txstring | nullThe transaction that paid integrator_fee. On EVM chains and Bitcoin
the fee is paid in the same transaction as amount_out, so this equals
payout_tx; on HyperCore it is its own. Null when no fee was paid.
statusstringrequiredawaiting_deposit until funds arrive at deposit_address; funded
once they are seen; executing while the route runs; delivered when
amount_out has reached to_address; refunded when execution gave
up and amount_out was sent back to refund_address instead;
expired when nothing arrived by deposit_deadline; frozen when the
order was halted by policy, when execution gave up with no refund
destination, or when the refund itself failed, and needs an operator.
Allowed: "awaiting_deposit""funded""underfunded""expired""executing""delivered""refunded""frozen"
deposit_deadlinestringrequiredInstant after which deposits are no longer watched for and the order expires. Seven days after creation.
date-time
created_atstringrequiredWhen the order was created.
date-time

