FIXOrders FIX

FIXMsgType 35=D
FIX 4.4 Gateway TLS/TCP

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.

Message fields

TagFieldRequiredDescription
1 Account Optional

Optional. Per-message trading account. When present, validated against the session Go Account ID (from SenderCompID). Mismatch → ExecutionReport reject.

11 ClOrdID Required

Required. Client-assigned order ID (≤ 256 chars; UUID recommended). Duplicate → reject 103=6.

55 Symbol Required

Required. Trading pair / product (e.g. TBTC-TUSD*, ETH-USD*).

54 Side Required

Required. 1 = Buy, 2 = Sell.

38 OrderQty 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).

15 Currency (QuantityCurrency) 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).

40 OrdType 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.

60 TransactTime Required

Required. Client order-creation time (UTC). Format YYYYMMDD-HH:MM:SS[.sss[sss]].

44 Price Optional

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.

99 StopPx Optional

Conditional. Trigger price. Required when OrdType is Stop or Stop Limit (40=3 or 40=4). Use only with Stop / Stop Limit orders.

59 TimeInForce Optional

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).

126 ExpireTime Optional

Conditional. Expiration timestamp (UTC). Required when TimeInForce = GTD (59=6). Must not be set unless 59=6.

168 EffectiveTime Optional

Optional. Scheduled activation time (UTC). Maps to REST ScheduledDate.

847 TargetStrategy Optional

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.

957 NoStrategyParameters Optional

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.

958 StrategyParameterName Optional

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
959 StrategyParameterType Optional

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.

960 StrategyParameterValue Optional

Conditional (with 958). Parameter value. BoundsControl and IntervalUnit must be lowercase on the wire.

5001 FundingType Optional

Optional. BitGo custom tag. 1 = Funded (default when absent), 2 = Margin.

Response messages

  • On success
    Accepted or working; further ExecutionReports may follow.
  • On reject
    Rejected (150=8, 39=8). Check ordRejReason (103) and text (58).

Examples

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