Coinbase Exchange runs order entry, market data and drop copy on FIX 5.0 SP2 over a FIXT.1.1 session layer, across four separate gateways. The FIX 4.2 order entry gateway shut down on 3 June 2025. This page covers which of Coinbase's five FIX interfaces you are looking at, how the session model works, and the behaviours that break integrations — sequence recovery, cancel diagnosis, book divergence — including the places where Coinbase's own documentation contradicts itself.
Coinbase runs FIX under five products. They do not share versions, hosts or semantics, and Coinbase documents each product separately, so the choice of product is assumed rather than explained.
| Product | FIX baseline | What it is |
|---|---|---|
| Coinbase Exchange | FIX 5.0 SP2 | Institutional spot venue — the subject of this page |
| Coinbase Prime | FIX 4.2; FIX 5.0 SP2 in beta, requires account enablement | Prime brokerage |
| Coinbase International Exchange | FIX 5.0 | Separate venue with its own hosts, sessions and rate limits |
| Coinbase Derivatives | FIX 4.4, plus a custom SBE API | Derivatives venue, requires firm certification |
| Coinbase Advanced Trade | No FIX interface | REST and WebSocket only |
The same tag number can carry different meanings across these. Before mapping a single field, confirm which product the credentials belong to.
FIX 5.0 order entry reached production in October 2023 and ran alongside 4.2 until 3 June 2025. Three changes outlive the migration itself:
Anything published before mid-2025 that shows 8=FIX.4.2 and port 4198 for Coinbase Exchange describes a gateway that no longer answers.
Coinbase splits function across gateways rather than multiplexing one session.
Order entry carries orders, cancels, modifies, single-order status queries and execution reports. Market data carries subscriptions and book updates and cannot place orders; it comes in two variants, one that sends snapshots and one that does not. Drop copy is read-only and streams execution reports for activity that happened elsewhere — an OrderStatusRequest sent there returns a BusinessMessageReject (35=j).
All four share one authentication scheme, and each simultaneous connection needs its own API key — reusing a key across concurrent connections returns an error.
Drop copy exists in two forms, and the documentation scopes them differently. The dedicated gateway delivers reports for every order placed through any FIX session or the REST API under your API key. The in-session flag — DropCopyFlag (9406) = Y on an order entry session — is described as returning reports across all active sessions on the same profile. The flag is off by default on FIX 5.0; in FIX 4.2 it defaulted to on until 30 October 2023.
The heartbeat ceiling differs by gateway. Order entry caps HeartBtInt (108) at 30 seconds, sends a test request at roughly 1.5x the interval and terminates the session at roughly 2x. Market data and drop copy cap it at 300 seconds. Both default to 10.
Logon carries MsgSeqNum (34) = 1 in both directions, enforced since 22 September 2022, and TargetCompID (56) is the literal string Coinbase.
The message is HMAC-signed. The prehash string joins SendingTime, MsgType, MsgSeqNum, SenderCompID (the API key), TargetCompID and the passphrase with the SOH separator and no trailing delimiter; RawData (96) carries the base64 signature and RawDataLength (95) its byte count.
Four formatting rules reject messages that otherwise look correct. Sequence numbers with leading zeros fail. SendingTime fractional seconds must be exactly three digits — neither absent nor nine. SendingTime must land inside a five-minute window, so clock drift kills the session rather than one message. CheckSum is validated on every inbound message.
This is where Coinbase's own documentation disagrees with itself, so recovery logic has to be written against a contradiction.
Two live pages contradict each other on message replay. The connectivity page states that resend requests are not supported and that every connection starts a new session with new sequence numbers. The order entry specification documents ResendRequest (35=2) in full: a maximum range of 1000 messages per request, one request in flight per session, administrative messages always replaced by SequenceReset-GapFill, and a session resume procedure using ResetSeqNumFlag (141) = N with paging in blocks of 1000. The changelog records resend and gap-fill going to production for FIX 5.0 order entry on 20 December 2023.
The same sentence denying resend support appears verbatim on the Coinbase International Exchange FIX page, which points to shared boilerplate rather than a statement written about Exchange order entry. Coinbase has not reconciled the two. Build for both: request replay, and treat a gap-fill-only response or a clean sequence reset as a normal outcome rather than an error.
Two retention windows are stated on the same page. The ResendRequest section says the gateway keeps four hours of history and gap-fills non-administrative messages older than four hours. The session resume section says administrative messages and anything older than one hour are not replayed. The two figures are given for different procedures, and Coinbase does not say how they interact, so recovery logic should not assume the longer one.
Sessions end on a schedule. All FIX 5.0 sessions are logged out every Saturday at 1PM ET (6PM UTC). Deployments land Monday, Wednesday and Thursday at roughly 2PM ET, announced by a logout, with no deploys on US federal holidays.
Sequence numbers reset asymmetrically. Client-to-Coinbase numbers always reset after a disconnect. Coinbase-to-client numbers reset if ResetSeqNumFlag (141) is unset or Y, or if the same API key has been away for more than a day. The ceiling is 2147483647, and resetting before you reach it is the client's responsibility.
Coinbase puts the cancel reason in Text (58) on the execution report. The codes live in a changelog entry from May 2022, not in the FIX reference:
| Code | Reason |
|---|---|
| 101 | Time in force |
| 102 | Self-trade prevention |
| 103 | Admin |
| 104 | Price bound order protection |
| 105 | Insufficient funds |
| 106 | Insufficient liquidity |
| 107 | Broker |
Rejects are coded separately. OrdRejReason (103) uses 0 Broker, 1 Unknown Symbol, 5 Unknown Order; CxlRejReason (102) uses 1 Unknown Order, 2 Broker.
A fourth case looks like neither. ExecType (150) = D (Restated) with ExecRestatementReason (378) = 5 means the order was partially cancelled without your asking, because self-trade prevention decremented it. SelfTradeType (7928) decides that behaviour per order: D decrement and cancel (the default), 0 cancel the oldest resting order, N cancel the newest aggressing order, B cancel both.
Cancel requests have their own failure mode. A successful OrderMassCancelReport is an acknowledgement, not a result — only the cancel execution reports confirm anything. Orders sent but not acknowledged by the matching engine are not guaranteed to be cancelled, and the same caveat applies to cancel-on-disconnect.
Snapshots are a gateway choice, not a message flag.MarketDataSnapshotFullRefresh (35=W) comes only from the snapshot-enabled gateway. On the snapshot-disabled gateway you get incrementals only and seed the book yourself: subscribe, queue incoming 35=X, pull an order book snapshot from the REST API, discard queued messages at or below the snapshot sequence, replay the rest.
Coinbase announced deprecation of the snapshot-enabled gateway, then postponed it until further notice on 16 October 2024. The announcement has not been withdrawn.
Re-subscribing does not re-deliver a snapshot. Send a second MarketDataRequest (35=V) for a symbol you already hold and nothing comes back. Recovery requires an explicit unsubscribe, then a fresh subscribe.
A subscription that fails outright returns MarketDataRequestReject (35=Y) with MDReqRejReason (281): 0 unknown symbol, 1 duplicate MDReqID, 3 unsupported MarketDepth, 7 other.
Not every L3 message is a book event. A 35=X without MDEntryID (278) is the matching engine acknowledging an order before matching — useful for knowing an order is in flight, wrong to apply to the book. Only messages carrying MDEntryID belong there. Change messages for an MDEntryID you never saw introduced can be dropped.
MDUpdateAction (279) carries three values: 0 New, 1 Change, 2 Delete. Text (58) qualifies them — changes report CHANGE_REASON_STP, CHANGE_REASON_MODIFY_ORDER or CHANGE_REASON_REMAINDER_AFTER_MODIFICATION; deletes report CANCELED or FILLED. RptSeq (83) sequences per symbol.
Two tags will not be where a normalized model expects them: AggressorSide is Coinbase custom tag 5797, sent only on trades, and Funds (29004) reports the quote currency a market order consumed.
OrderStatusRequest (35=H) queries one order at a time. Identify it by ClOrdID (11), OrderID (37) or both; when both are present, ClOrdID wins, and Symbol (55) is required. Wildcards have not been supported since 2019, so there is no query that returns everything.
Two failure modes look different on the wire. An order that cannot be found still returns an ExecutionReport with ExecType (150) = I, OrdStatus (39) = 8 and OrdRejReason (103) = 5. A malformed request — a missing Symbol, say — returns a BusinessMessageReject (35=j) instead.
Two identifiers carry the reconciliation:
The second one sits in a single row of the standard header table and is easy to miss. It aligns private execution with the public tape without relying on timestamps.
Coinbase Exchange runs a request-for-quote auction over the same FIX session, open to firms it has approved as liquidity providers. The provider sends RFQRequest (35=AH) after every successful logon; without it, that session receives no quote requests.
Coinbase sends QuoteRequest (R) with ValidUntilTime (62); providers answer with Quote (S), one-way or two-way, and only the winning side trades. QuoteStatusReport (AI) reports the outcome on QuoteStatus (297): 5 rejected, 7 expired unmatched, 16 accepted in the auction, 17 accepted but not selected, 19 selected for execution. The response window narrowed to 250 ms in August 2023, and the provider fee arrives on MiscFeeAmt (137) as a percentage — 0.0005 means 5 bps.
Endpoints and limits change. Verify them against the live docs before building.
Verified September 2026.
| Order entry | tcp+ssl://fix-ord.exchange.coinbase.com:6121 |
| Market data, snapshot enabled | tcp+ssl://fix-md.exchange.coinbase.com:6121 |
| Market data, snapshot disabled | tcp+ssl://fix-md.exchange.coinbase.com:6122 |
| Drop copy | tcp+ssl://fix-dc.exchange.coinbase.com:6122 |
| MiCA clients | Separate hosts on dma.prime.coinbase.com, ports 7110, 7120, 7121, 7122 |
| Transport | TLSv1.2 only; TLS 1.0 and 1.1 refused since 20 October 2025; no static IPs |
| Logons per second per API key | 2 |
| Requests per second | 100 |
| Disconnect threshold | above 200 messages per second |
| Connections per profile | 75 |
| Connections per user | 175 |
| Orders per batch | 15 |
| Order types | Market, Limit, Stop Limit, Take Profit Stop Loss |
| Time in force | GTC, IOC, FOK, GTD |
| Market data depths | L3 order-by-order, L2 top-10 per side, L1 top of book |
| Symbol format | Dash-separated, e.g. BTC-USD |
Reference data comes from SecurityList (35=y), carrying Symbol (55), Currency (15), MinTradeVol (562), MinPriceIncrement (969), MinSizeIncrement (29003) and MDSecurityTradingStatus (1682). Note that MinTradeVol here is a minimum notional in quote currency, not a minimum base quantity.
Axon Trade builds trading infrastructure for institutional and professional traders — FIX API connectivity, real-time normalized market data, and order execution across digital asset venues. Everything above is one venue's dialect, and absorbing that dialect so it never reaches the client's trading system is the work Axon does.
The client side is a single, slightly modified FIX 4.4 session shared across 30+ exchanges, with a canonical slash symbology — ETH/USDT — identical for market data and execution on every one of them. One trading session is the entry point for all of an organization's accounts and all of its exchanges, so adding a venue is a configuration change rather than a new gateway, a new dialect and a new parser. Administrative work — creating accounts, managing exchange keys, extracting trading history, configuring access to trading and FIX sessions — runs over a separate REST API rather than through the trading path.
On Coinbase specifically. Axon connects to Coinbase through two session types, trading and market data. The trading session carries NewOrderSingle, OrderCancelRequest, OrderCancelReplaceRequest, RequestForPositions, MassOrderStatusRequest and TradingSessionStatus. Two of those have no equivalent on Coinbase's own FIX API, which offers single-order status queries only and dropped wildcard status requests in 2019.
Market data from Coinbase arrives normalized in FIX 4.4 — a full L2 book plus trades, delivered as a book snapshot followed by incremental updates.
Reference data arrives through SecurityList (35=y) requested per exchange, carrying Symbol (55), SecurityExchange (207), price precision on 5001, size precision on 5002, MinTradeVol (562), UnderlyingSymbol (311) and UnderlyingCFICode (463) — one shape on every venue. On the feed, MarketDataRequest (35=V) is all-or-nothing across multiple symbols and multiple exchanges in one request, MDUpdateAction (279) carries NEW, CHANGE, DELETE and RESET with deletes always explicit and updates applied in delete-update-new order, AggressorSide (2446) is optional, and RptSeq (83) is per instrument. Maintenance is a 10-minute daily window per datacenter rather than a weekly full logout.
Integration runs against a demo environment before anything touches production, at no charge.
None of this removes the need to understand what Coinbase does — a desk still has to know that a triggered stop cannot be modified, or that a mass cancel acknowledgement is not a cancellation. It removes the need to re-learn it in a different dialect on every venue.
What FIX version does Coinbase Exchange use
Coinbase Exchange uses FIX 5.0 SP2 on a FIXT.1.1 session layer for order entry, market data and drop copy. The application version is declared on tag 1137 with the value 9.
Does Coinbase Exchange still support FIX 4.2
No. The FIX 4.2 order entry gateway was deprecated on 3 June 2025 and no longer appears among supported endpoints.
How many FIX APIs does Coinbase have
Five products expose different interfaces. Coinbase Exchange, Coinbase Prime, Coinbase International Exchange and Coinbase Derivatives each run their own FIX gateway on their own baseline, and Coinbase Advanced Trade offers REST and WebSocket only.
Does Coinbase Exchange FIX support message replay
The order entry specification documents ResendRequest with a maximum of 1000 messages per request, while the connectivity page states that resend requests are not supported. The two pages disagree and an integration should tolerate either behaviour.
How do I find out why Coinbase cancelled my order
The cancel reason arrives in tag 58 on the execution report, coded 101 for time in force, 102 for self-trade prevention, 103 for admin, 104 for price bound order protection, 105 for insufficient funds, 106 for insufficient liquidity and 107 for broker.
Why did my Coinbase order shrink without a cancel request
Self-trade prevention decremented it. The execution report carries ExecType D for restated with ExecRestatementReason 5, and the behaviour is chosen per order on tag 7928.
What is the difference between the snapshot enabled and snapshot disabled market data gateways
The snapshot enabled gateway sends Market Data Snapshot Full Refresh messages on subscription. The snapshot disabled gateway sends incrementals only, so the client builds the initial book from a REST order book snapshot and replays queued incrementals.
How many API keys do I need for Coinbase Exchange FIX
One per simultaneous connection. Reusing a single key across concurrent connections returns an error, and a profile supports up to 75 connections.
Why is my Coinbase FIX logon rejected with a signature error
Check three things — sequence numbers with leading zeros, SendingTime fractional seconds that are not exactly three digits, and a system clock outside the five minute SendingTime window.
Can I reconcile Coinbase FIX fills against the public market data feed
Tag 83 in the order entry header carries the market data feed sequence number for the same event, so fills can be aligned with the public feed without matching on timestamps.
Verified against Coinbase Developer Platform documentation in September 2026. Specific strings and limits should be re-checked against the live docs before reuse.
FIX 5.0 SP2 field semantics follow the FIX specification published by the FIX Trading Community.
Axon Trade provides advanced trading infrastructure for institutional and professional traders, offering high-performance FIX API connectivity, real-time market data, and smart order execution solutions. With a focus on low-latency trading and risk-aware decision-making, Axon Trade enables seamless access to multiple digital asset exchanges through a unified API.
Explore Axon Trade’s solutions:
Contact Us for more info.