Place Order
Category (30010)is required and must bespot.- For market orders, use
MarketUnit (30013)to specify whetherOrderQtyis denominated in base coin or quote coin. - For limit orders,
Price (44)is required. - When the order is rejected (
ExecType=8), theExecutionReportomits bothOrderID (37)andClOrdID (11)— correlate rejects to requests viaReqId (30006)or by send order.
Message Type
NewOrderSingle — MsgType D
Request Fields
| Tag | Field | Required | Type | Description |
|---|---|---|---|---|
| 30010 | Category | Y | String | Product type. Currently spot only |
| 55 | Symbol | Y | String | Symbol name, e.g. BTCUSDT (uppercase) |
| 54 | Side | Y | Char | 1 = Buy; 2 = Sell |
| 40 | OrdType | Y | Char | 1 = Market; 2 = Limit |
| 38 | OrderQty | Y | Qty | Order quantity. For market orders, the unit is specified by MarketUnit. |
| 44 | Price | N | Price | Order price. Required for Limit orders |
| 11 | ClOrdID | N | String | Client order ID (orderLinkId). Max 36 characters. Scoped to account (UID), not session — a ClOrdID held by an active order cannot be reused. ClOrdIDs of terminated orders are eligible for reuse after 360 days. |
| 59 | TimeInForce | N | Char | 1=GTC; 3=IOC; 4=FOK; P=PostOnly; R=RPI. Defaults to GTC for limit orders. Market orders are always IOC regardless of this field. |
| 30013 | MarketUnit | N | String | Unit for OrderQty in market orders: baseCoin (default for sell) or quoteCoin (default for buy) |
| 30014 | IsLeverage | N | Boolean | Y = margin trading; N = spot (default) |
| 30018 | SmpType | N | String | Self-Match Prevention: None, CancelTaker, CancelMaker, CancelBoth |
| 30019 | RpiTakerAccess | N | Boolean | Whether this order may match against RPI quotes. If Y, OrdType must be 1 (Market). |
| 30022 | SlippageToleranceType | N | String | Slippage unit for market orders: TickSize or Percent |
| 30034 | SlippageTolerance | N | String | Max slippage value, used with SlippageToleranceType |
| 30024 | OrderFilter | N | String | Order (default); tpslOrder; StopOrder |
| 99 | StopPx | N | Price | Trigger price for conditional orders. The trigger direction (above or below the current price) is determined automatically by the system based on the order side and StopPx relative to the market. |
| 30026 | TakeProfitPrice | N | Price | Take profit trigger price |
| 30027 | StopLossPrice | N | Price | Stop loss trigger price |
| 30028 | TpOrderType | N | String | TP order type when triggered: Market or Limit |
| 30029 | SlOrderType | N | String | SL order type when triggered: Market or Limit |
| 30030 | TpLimitPrice | N | Price | TP limit price (required when TpOrderType=Limit) |
| 30031 | SlLimitPrice | N | Price | SL limit price (required when SlOrderType=Limit) |
Response
The server responds with an ExecutionReport (8). The ExecType (150) field indicates the outcome:
| ExecType | OrdStatus | Meaning |
|---|---|---|
A (PendingNew) | A (PendingNew) | Order acceptance transitional state, returned immediately after NewOrderSingle; followed by 0 (New) or 8 (Rejected) as the terminal state |
0 (New) | 0 (New) | Order accepted and resting on the book |
F (Trade) | 1 / 2 | Order immediately filled (partial or full) |
8 (Rejected) | 8 (Rejected) | Order rejected; see OrdRejReason (103) and Text (58) |
Key response fields:
| Tag | Field | Description |
|---|---|---|
| 37 | OrderID | Server-assigned order ID. Absent when rejected |
| 11 | ClOrdID | Echo of your ClOrdID. Absent on rejection |
| 150 | ExecType | Execution event type |
| 39 | OrdStatus | Current order status |
| 103 | OrdRejReason | Rejection reason code (when ExecType=8) |
| 58 | Text | Status text. Typically OK on acceptance; error description on rejection |
| 151 | LeavesQty | Remaining unfilled quantity |
| 14 | CumQty | Total filled quantity |
| 6 | AvgPx | Average fill price |
| 60 | TransactTime | Last update time |
For fill details when the order is immediately matched (ExecType=F), see ExecutionReport.
Request Example
8=FIX.4.4|9=238|35=D|34=3|49=FIX_CLIENT|52=20260824-09:27:06.073|56=BYBIT_FIX_SERVER|
30002=1787563626073|30001=5000|
30010=spot|55=BTCUSDT|54=1|40=2|59=1|38=0.001|44=50000|
11=13eafa49-4688-4727-9136-021da28c9d0b|30006=5e14153d-363d-4937-b4ec-f4c64e526979|10=037|
Note: | represents SOH (0x01) in actual wire format.
PendingNew Ack (ExecType=A)
Compact ack delivered immediately after NewOrderSingle is submitted. In OnlyAcks mode this is the only response; in Everything mode it arrives first, followed by the full ExecType=0 (New) report.
- Rate-limit headers (
30005TraceId,30007BapiLimit,30008BapiLimitStatus,30009BapiLimitResetTimestamp) are returned on this initial ack only — subsequent state pushes omit them. - If the request carried
30006 ReqId, this ack echoes it back (e.g.30006=5e14153d-...); the subsequent state push does not carry30006.
8=FIX.4.4|9=269|35=8|34=2|49=BYBIT_FIX_SERVER|52=20260824-09:27:06.329|56=FIX_CLIENT|
30005=3cc714d627c389ed2911d77bc9cc1580|30006=5e14153d-363d-4937-b4ec-f4c64e526979|30007=20|30008=19|30009=1787563626328|
11=13eafa49-4688-4727-9136-021da28c9d0b|37=2288644008836434688|
150=A|39=A|58=OK|10=163|
Response Example (Accepted) (ExecType=0)
In Everything mode, after the PendingNew Ack the server pushes the full New order state via ExecutionReport (35=8). This push carries the full order fields but does not carry rate-limit headers or 30006 ReqId.
8=FIX.4.4|9=359|35=8|34=3|49=BYBIT_FIX_SERVER|52=20260824-09:27:06.333|56=FIX_CLIENT|
11=13eafa49-4688-4727-9136-021da28c9d0b|37=2288644008836434688|150=0|39=0|
30010=spot|55=BTCUSDT|54=1|40=2|38=0.001000|44=50000.0|59=1|30013=UNKNOWN|30014=N|
151=0.001|30041=50.0000000|14=0|30038=0.0000000|
60=20260824-09:27:06.328|30039=20260824-09:27:06.328|
30018=None|30019=N|30046=77286.8|10=085|
Response Example (Rejected) (ExecType=8)
On rejection, 37/11 are absent — correlate by 30006 ReqId or send order. 103 is a Bybit internal error code (e.g. 170140 = order value below the minimum).
8=FIX.4.4|9=248|35=8|34=2|49=BYBIT_FIX_SERVER|52=20260824-09:52:16.540|56=FIX_CLIENT|
30005=748c8e5b5094fd0e22cdac8441066c87|30006=6dac881c-8f85-4272-8e31-2917612d788e|30007=20|30008=19|30009=1787565136538|
150=8|39=8|103=170140|58=Order value exceeded lower limit.|10=239|