FIXOrders FIX

POST

The client sends NewOrderSingle (35=D) to the server over TLS/TCP. This is not an HTTP request.

Place a new trade order on the order-entry session (56=BITGO). Order types and business validation match Prime REST order placement — including Market, Limit, TWAP, SteadyPace, and Stop. See Place Order for the full REST order catalog; the same order types are supported over FIX.

Both buy and sell support base- and quote-denominated sizing via OrderQty (38) and Currency (15). The server responds with one or more ExecutionReports (35=8) on the same session.

Examples (pipe-delimited FIX):

Market buy $250 notional (funded):

8=FIX.4.4|9=156|35=D|49=0123456789abcdef0123456789abcdef|56=BITGO|34=5|52=20260415-14:30:00.123|11=ord-001|55=TBTC-TUSD*|54=1|40=1|38=250|15=TUSD*|60=20260415-14:30:00.123|10=XXX

Limit buy GTC (funded):

8=FIX.4.4|9=194|35=D|34=33|49=0123456789abcdef0123456789abcdef|52=20260511-11:57:46.396|56=BITGO|11=limit-gtc-funded-001|15=TBTC|38=0.001|40=2|44=83220.0|54=1|55=TBTC-TUSD*|59=1|60=20260511-13:00:02.000|5001=1|10=XXX

TWAP sell 60min (time-sliced):

8=FIX.4.4|9=234|35=D|49=0123456789abcdef0123456789abcdef|56=BITGO|34=8|52=20260415-15:07:16.163|11=ord-003|55=TBTC-TUSD*|54=2|38=0.002|15=TBTC|40=1|847=T|60=20260415-15:07:16.163|957=3|958=Duration|960=60|958=IsTimeSliced|960=true|958=Interval|960=5|10=XXX

Stop market sell:

8=FIX.4.4|9=166|35=D|49=0123456789abcdef0123456789abcdef|56=BITGO|34=9|52=20260415-15:10:00.000|11=ord-006|55=TBTC-TUSD*|54=2|40=3|38=0.001|15=TBTC|99=48000|60=20260415-15:10:00.000|10=XXX

SteadyPace buy:

8=FIX.4.4|9=245|35=D|49=0123456789abcdef0123456789abcdef|56=BITGO|34=12|52=20260415-15:12:00.000|11=ord-004|55=TBTC-TUSD*|54=1|38=0.001|15=TBTC|40=1|847=S|60=20260415-15:12:00.000|957=3|958=Interval|960=5|958=IntervalUnit|960=minute|958=SubOrderSize|960=0.0002|10=XXX

Margin market buy $250:

8=FIX.4.4|9=164|35=D|49=0123456789abcdef0123456789abcdef|56=BITGO|34=10|52=20260415-14:30:00.789|11=ord-008|55=TBTC-TUSD*|54=1|40=1|38=250|15=TUSD*|5001=2|60=20260415-14:30:00.789|10=XXX

Body Params

object

NewOrderSingle (35=D) body fields. Field descriptions mark Required / Optional / Conditional.
  • account string
    Optional. Per-message trading account. When present, validated against the session Go Account ID (from SenderCompID). Mismatch → ExecutionReport reject.
  • clOrdID string required
    Required. Client-assigned order ID (≤ 256 chars; UUID recommended). Duplicate → reject 103=6.
  • symbol string required
    Required. Trading pair / product (e.g. TBTC-TUSD*, ETH-USD*).
  • side string enum required
    Required. 1 = Buy, 2 = Sell.
    12
  • orderQty string required

    Required. Order quantity in the currency of tag 15. Must be > 0. Precision follows the product Base Increment / Quote Increment for that currency.

    QuantityCurrency (15) Side Meaning
    Base (e.g. BTC) Buy Buy N base units
    Base (e.g. BTC) Sell Sell N base units
    Quote (e.g. USD) Buy Buy N quote notional of base
    Quote (e.g. USD) Sell Sell base for N quote notional

    Size orders with OrderQty (38) and Currency (15).

  • currency string required
    Required. Currency of OrderQty (38). Must be the product base or quote currency; determines base-unit vs quote-notional sizing. Both buy and sell are supported for base- and quote-denominated sizes. When absent or empty, defaults to the product base currency. Must match against currencies in List Currencies and be consistent with Product (55).
  • ordType string enum required

    Required. 1 = Market, 2 = Limit, 3 = Stop (market when triggered), 4 = Stop Limit.

    When TargetStrategy (847) is absent: 1→Sweep, 2→Limit, 3/4→Stop. Tag 847 is not allowed with 40=3 or 40=4.

    1234
  • transactTime string required
    Required. Client order-creation time (UTC). Format YYYYMMDD-HH:MM:SS[.sss[sss]].
  • price string

    Conditional.

    • Required when OrdType = Limit (40=2) (strategy Limit).
    • Optional for TWAP / SteadyPace. When present, acts as a limit cap.
    • Optional for Stop (40=3/40=4): present → stop-limit; absent → stop-market. Send Price with 40=4 (Stop Limit).

    Must be > 0 when present. Precision: product QuoteDisplayPrecision.

  • stopPx string
    Conditional. Trigger price. Required when OrdType is Stop or Stop Limit (40=3 or 40=4). Use only with Stop / Stop Limit orders.
  • timeInForce string enum
    Optional. 1 = GTC (default for Limit and Stop when omitted). 3 = IOC (Limit and Market orders only). 4 = FOK (Fill or Kill). 6 = GTD (requires ExpireTime 126).
    1346
  • expireTime string
    Conditional. Expiration timestamp (UTC). Required when TimeInForce = GTD (59=6). Must not be set unless 59=6.
  • effectiveTime string
    Optional. Scheduled activation time (UTC). Maps to REST ScheduledDate.
  • targetStrategy string enum
    Optional. Execution strategy. 1 = Market/Sweep (requires 40=1), 2 = Limit (requires 40=2), T = TWAP (40=1 or 40=2), S = SteadyPace (40=1 or 40=2). When absent, derived from OrdType. Not allowed with 40=3 or 40=4.
    12TS
  • noStrategyParameters integer
    Conditional. Count of strategy-parameter entries (repeating group with 958/959/960). Required for TWAP (847=T) and SteadyPace (847=S). Tag 959 is optional between each 958/960 pair.
  • strategyParameterName string

    Conditional (inside group 957). Parameter name.

    TWAP (847=T):

    Name Required Notes
    Duration Yes Minutes (integer ≥ 1)
    IsTimeSliced No true / false (default false)
    Interval Conditional Minutes; required when IsTimeSliced=true; Duration must be divisible by Interval
    BoundsControl No narrow / standard / wide (lowercase); used when not time-sliced

    SteadyPace (847=S):

    Name Required Notes
    Interval Yes Integer > 0
    SubOrderSize Yes Decimal; must be < total order qty/funds and at least the product minimum sub-order size (dynamic; the reject text states the current minimum)
    IntervalUnit No second / minute / hour (lowercase; default minute)
    Variance No Decimal 0.0–1.0

    Limit (847=2 or derived from 40=2):

    Name Required Notes
    Duration No Minutes (integer ≥ 1); creates a limit-with-duration order
  • strategyParameterType string enum
    Optional. Accepted for FIX compliance but ignored by the server on inbound orders; parameter types are inferred from the parameter name (958). Any listed value may be sent or the tag omitted entirely.
    1614
  • strategyParameterValue string
    Conditional (with 958). Parameter value. BoundsControl and IntervalUnit must be lowercase on the wire.
  • fundingType string enum
    Optional. BitGo custom tag. 1 = Funded (default when absent), 2 = Margin.
    12

Responses

200
Accepted or working; further ExecutionReports may follow.

Response Body

object

ExecutionReport (35=8). Server → client. Lifecycle events for NewOrderSingle, cancels, fills, rejects, and OrderStatusRequest (150=I).

Correlate with ClOrdID (11) and OrderID (37). ExecType=F is used for all fills. Use OrdStatus (39) and LeavesQty (151) for working vs terminal state — not 150=F alone. Terminal Filled (39=2, typically 151=0) is usually on the following Order Status report (150=I), not on the last fill.

  • account string
    Optional Trading account ID (Go account ID)
  • avgPx string required
    Required. Average fill price (0 if unfilled).
  • clOrdID string required
    Required. Client order id. NONE on cancel reports (PendingCancel / Canceled) and when the order has no client id.
  • cumQty string required
    Required. Total quantity filled so far.
  • currency string
    Optional. Quantity currency for tag 38.
  • execID string required
    Required. Unique id for this ExecutionReport.
  • lastPx string
    Conditional. This fill's price. Present only when ExecType = F (Trade). Omitted otherwise.
  • lastQty string
    Conditional. This fill's quantity. Present only when ExecType = F (Trade). Omitted otherwise.
  • orderID string required
    Required. BitGo order UUID. NONE on some reject reports.
  • orderQty string
    Optional. Original order quantity echoed from the NewOrderSingle.
  • ordStatus string enum required
    Required. Current order state: A Pending New, 0 New, 1 Partially Filled, 2 Filled, 4 Canceled, 6 Pending Cancel, 8 Rejected.
    012468A
  • ordType string enum
    Optional. Echoed from the original NewOrderSingle.
    1234
  • origClOrdID string
    Optional / Conditional. Set on cancel-related ERs to the original NOS ClOrdID.
  • price string
    Optional. Limit price echoed from the original NewOrderSingle.
  • side string enum required
    Required. 1 Buy, 2 Sell. 7 Undisclosed may appear on some reject reports.
    127
  • symbol string required
    Required. Product echoed from the NewOrderSingle. N/A on some reject reports.
  • text string
    Optional / Conditional. Human-readable reject detail. Present on rejects (150=8).
  • timeInForce string enum
    Optional. Echoed from the original NewOrderSingle.
    1346
  • transactTime string required
    Required. UTC business timestamp for this report.
  • stopPx string
    Optional. Stop/trigger price echoed from the original NewOrderSingle.
  • ordRejReason integer enum
    Conditional. Present only when ExecType = 8 (Rejected). 1 Unknown symbol, 2 Market unavailable, 3 OrderExceedsLimit, 6 Duplicate ClOrdID, 15 UnknownAccount, 99 Other (see Text).
    12361599
  • execType string enum required
    Required. Event type: A PendingNew, 0 New, F Trade (partial or full), 6 PendingCancel, 4 Canceled, 8 Rejected, I Order Status (response to 35=H, and terminal status summary after a full fill).
    0468AFI
  • leavesQty string required
    Required. Quantity still open. Use together with OrdStatus (39) for working vs terminal state. On terminal Canceled reports (150=4 / 39=4) this stays at the open quantity at cancel time; it is not reset to 0 (39=4 is canceled even when 151 > 0). On fills, 151=0 with 39=1 is not yet terminal Filled — wait for 39=2 (typically on 150=I).
  • effectiveTime string
    Optional. Scheduled activation time echoed from NOS.
  • grossTradeAmt string
    Optional. Cumulative filled quote quantity (equivalent to REST filledQuoteQuantity).
  • targetStrategy string enum
    Optional. Algo strategy echoed from the original order (T TWAP, S SteadyPace).
    TS
  • noStrategyParameters integer
    Optional. Strategy param group count echoed from NOS for algo orders.
  • strategyParameterName string
    Optional. Parameter name within group 957.
  • strategyParameterType string enum
    Optional. Populated by the server on echoed strategy parameters: 1 = Int, 6 = Float, 14 = String, based on the parameter's inferred type.
    1614
  • strategyParameterValue string
    Optional. Parameter value within group 957.
  • fundingType string enum
    Optional. 1 Funded, 2 Margin. Echoed from the original order.
    12
default
Rejected (150=8, 39=8). Check ordRejReason (103) and text (58).
No response body