auth- The account signersubaccount- The Trading Account objectmarket- The SpotMarket objectprice- Order price in raw quote units, aligned totick_size`<u64>`orig_size- Order size in raw base units, aligned tolot_size`<u64>`is_bid- True for a bid (buy), false for an ask (sell)time_in_force- Time in force`<u8>`: 0 = GoodTillCanceled, 1 = PostOnly, 2 = ImmediateOrCancelbuilder_address- Optional builder/referrer address`<Option<address>>`builder_fees- Optional builder fee cap`<Option<u64>>`
A spot market address is not interchangeable with a perp market address. A spot BTC market and a perp BTC market are separate markets with separate addresses — pass the spot market you want. Spot has no reduce-only flag, client order ID, or TP/SL parameters.
Time in Force Options
0(GoodTillCanceled) - Order stays active until it is filled or manually canceled1(PostOnly) - Order only adds liquidity to the order book (becomes a maker order). If the order would execute immediately, it is canceled2(ImmediateOrCancel) - Order executes immediately at the best available price. Any unfilled portion is canceled
Collateral and Funding
Spot orders are fully collateralized before they reach the book: a bid escrows the quote asset, an ask escrows the base asset. Funds are sourced from the subaccount’s primary fungible store (PFS) first, then the remainder from collateral-backed storage (CBS) when the asset is CBS-supported. If the CBS withdrawal is rate-limited, the order is queued inspot_pending_cbs_queue and placed once process_pending_withdrawals drains the request — so a successful transaction does not always mean the order is immediately resting on the book.
To trade directly from a wallet instead of a Trading Account, use place_spot_order, which takes the same arguments without the subaccount parameter.
Example:

