Skip to main content

Overview

This guide covers every breaking change and behavioral difference you need to address when migrating your Coinbase Prime FIX integration from version 4.2 to FIX 5.0 SP2. Changes are organized by area so you can work through your codebase systematically.

Biggest Changes

  • FIX 5.0 SP2 uses a transport-layer split (FIXT.1.1) that separates session-level and application-level protocol versioning. This is the most foundational change and affects your session config before anything else.
  • We now have published dictionaries. See the FIX 5.0 order entry docs for the detailed specification.
  • Multiple security type support is the other major structural addition. SecurityType (167) is now required on every outbound order related message:
    • Add SecurityType (167) to every NewOrderSingle, OrderCancelRequest, OrderCancelReplaceRequest, and OrderStatusRequest
    • For all existing spot orders, set SecurityType = SPOT.
  • Fill reporting now follows the FIX standard. In FIX 4.2, all fills used ExecType = 1 (Partial Fill) regardless of whether the order was fully complete, and multi-fill orders received OrdStatus = 1 (Partial Fill) on their final fill. FIX 5.0 SP2 corrects both:
    • ExecType (150) is now F (Trade) on every fill
    • OrdStatus (39) now correctly reflects the true state of the order at the time of each fill — 1 (Partial Fill) while open quantity remains, 2 (Filled) on the final fill

What Has Not Changed

  • Connection endpoint. FIX 5.0 order entry is serviced at the same URL and port as FIX 4.2: tcp+ssl://fix.prime.coinbase.com:4198
  • Message types. All message types from FIX 4.2 are present in FIX 5.0. Some have tag and value level changes which are noted in full detail below.

1. Session / Logon (35=A)

2. NewOrderSingle (35=D)

3. OrderCancelRequest (35=F)

4. OrderCancelReplaceRequest (35=G)

5. OrderStatusRequest (35=H)

6. ExecutionReport (35=8)

Sent by Prime on fills and order status changes.

Fill Status Behavior

This is one of the most significant changes in FIX 5.0 SP2 Execution Reports and affects any code that branches on ExecType or OrdStatus to determine fill state.

ExecType (150)

FIX 5.0 SP2 aligns with the FIX standard — ExecType = F (Trade) is sent on every fill regardless of whether it is the first, intermediate, or final fill of an order.

OrdStatus (39)

FIX 5.0 SP2 also changes the final-fill OrdStatus for multi-fill orders. In 4.2, the final fill of a multi-fill order carried OrdStatus = 1 (Partial Fill). In 5.0, OrdStatus always reflects the true state of the order at the time of the fill.

How to Detect Fills in FIX 5.0 SP2

7. Migration Checklist

Session / Logon
  • Set BeginString = FIXT.1.1
  • Set DefaultApplVerID = 9
  • Move API key from AccessKey (9407) → Username (553)
NewOrderSingle (35=D)
  • Add SecurityType (167) to every order (SPOT for existing spot orders)
  • Remove HandlInst (21)
  • Replace MaxShow (210) with DisplayQty (1138) on iceberg orders
  • Market orders: Remove TargetStrategy (847) = M
  • Limit orders: Remove TargetStrategy (847) = L
  • TWAP orders: Change TargetStrategy (847) from T → 1001
  • VWAP orders: Change TargetStrategy (847) from V → 1
  • Stop-Limit orders: Remove TargetStrategy (847) = SL
  • PEG orders: Remove TargetStrategy (847) = P
OrderCancelRequest (35=F)
  • Add SecurityType (167)
OrderCancelReplaceRequest (35=G)
  • Remove HandlInst (21)
  • Add SecurityType (167)
OrderStatusRequest (35=H)
  • Add SecurityType (167)
ExecutionReport (35=8)
  • Handle new SecurityType (167) field — ensure your handler does not reject it as unexpected
  • Handle new Fill detection and status changes