stopPrice. The moment it does, the stop converts to a market order and executes at the best available price. It’s the classic tool for cutting a loss or protecting a profit when you can’t watch the market.
A stop guarantees execution once triggered, not a price. In a fast or gapping market the fill can be worse than the stop level. If you need a price ceiling/floor on the triggered order, use a Stop-Limit order instead.
When to use it
- Stop-loss: you’re long AAPL at 150 and want to exit if it falls to 145 → a
SELLstop atstopPrice: "145.00". - Protect a gain: trail your exit up as the position profits.
- Breakout entry: buy only once price breaks above resistance → a
BUYstop above the current price.
Which way does the stop trigger?
| Side | Stop triggers when price… | Typical placement |
|---|---|---|
SELL / SELL_SHORT | falls to or below stopPrice | below the current price (stop-loss on a long) |
BUY / BUY_TO_COVER | rises to or above stopPrice | above the current price (breakout / cover a short) |
How it works
- You
POST /v1/orderswithtype: "STOP"and astopPrice— noprice. - The order is accepted and waits, inactive, off the visible book.
- When the market touches
stopPrice, it becomes a market order and routes immediately. - It fills (
FILLED/PARTIALLY_FILLED), streamed asaccount.orderevents.
Request
| Field | Type | Required | Description |
|---|---|---|---|
type | string | yes | Must be "STOP". |
stopPrice | string | yes | The trigger price as a decimal string. When the market reaches it, the order activates as a market order. |
price | string | — | Do not send. A stop order has no limit price — it triggers into a market order. |
side | string | yes | BUY, SELL, SELL_SHORT, or BUY_TO_COVER. |
qty | string | yes | Number of shares as a decimal string. |
Example — stop-loss: sell 100 AAPL if it drops to 145
cURL
Request body
Response
NEW here means the stop is armed and waiting — it is not yet executing.
Watch it trigger and fill
Until the trigger is hit you’ll see the order resting. WhenstopPrice is touched, it converts and fills — delivered as account.order events:
account.order — triggered & filled
avgPrice (144.92) came in below the stopPrice (145.00) — that’s the market-order behavior after triggering. See the Limit order → Listen for updates section for the connect/subscribe handshake, or the full Account Updates WebSocket reference.
Next steps
Stop-limit order
Add a price limit so the triggered order can’t fill worse than you allow.
Limit order
Full REST + WebSocket round-trip walkthrough.
Try it live
Interactive reference for
POST /v1/orders.Order Flow
How all order types fit together.