FIX (Financial Information eXchange) is a standard protocol that can be used to enter orders, submit cancel requests, and receive fills. FIX API users typically have existing software that runs FIX for order management. This page explains how to connect to the Prime FIX protocol.
FIX API Endpoint URL tcp+ssl://fix.prime.coinbase.com:4198

Getting Started

To get started quickly with FIX, take a look at the sample FIX application on Coinbase Samples.

Connecting

Before logging onto a FIX session, clients must establish a secure connection to the FIX gateway (fix.prime.coinbase.com:4198). TCP SSL If your FIX implementation does not support establishing a native TCP SSL connection, you must setup a local proxy such as stunnel to establish a secure connection to the FIX gateway. See the SSL Tunnels section for more details and examples.
Note: All Prime infrastructure is located in AWS US-east 1 region. For optimal performance and latency, its recommended that client deploy their applications in AWS US-EAST 1.

Maintenance Window

Sessions are forcibly logged out every day between 5pm ET and 5:05pm ET for a maintenance window. All users are required to restart their sessions during this time and reset sequence numbers to 1. During this period, orders will execute normally and clients will receive all Execution Reports upon reconnecting via FIX API, after the maintenance window completes. Upon reconnecting, all FIX clients are required to restart their sessions and reset sequence numbers to 1. It is recommended that clients leverage the Websocket ‘orders’ channel and REST /orders endpoint to ensure clients have the ability to reconcile trading activity during this maintenance period. For any GTD or ‘day-type’ orders, it’s recommended to set ExpireTime to 5 minutes before daily maintenance window (e.g. 4:55pm EST)

Replay

Our server supports message replay and sequence number renegotiation as specified in FIX Session Layer Online, under Initial synchronization of messages in a FIX connection. For active sessions using replay — replay files are available for 24 hours, starting at 5pm ET and ending 5pm ET the next day (between the sequence number reset times). For inactive sessions — Prime FIX servers have an additional message queuing mechanism that holds a rolling 24 hrs worth of messages that are delivered to you once a FIX connection for a portfolio is re-established. This is outside of replay and is not impacted by the sequence number reset times.

Rate Limiting

Requests are limited to 50 calls per second/FIX session. We allow up to 7 sessions/portfolio but only 1 per API Key. For more, see Rate Limits.

SSL Tunnels

fix.prime.coinbase.com:4198 only accepts TCP connections secured by SSL. If your FIX client library cannot establish an SSL connection natively, you must run a local proxy that establishes a secure connection and allow unencrypted local connections.

Configure Stunnel

Example of stunnel configuration (stunnel.conf):
foreground = yes
debug = info

[Coinbase]
client = yes
accept = 4198
connect = fix.prime.coinbase.com:4198
verify = 4
CAfile = resources/fix-prime.coinbase.com.pem

Pull Down Prime Certificate

Command to pull down Prime Certificate for CAfile:
openssl s_client -showcerts -connect fix.prime.coinbase.com:4198 < /dev/null | openssl x509 -outform PEM > fix-prime.coinbase.com.pem
   openssl x509 -outform PEM > fix-prime.coinbase.com.pem

Run stunnel.conf

Command to run your stunnel.conf file:
stunnel resources/stunnel.conf

Configure [SESSION]

Sample [Session] Section in FIX configuration file:
[SESSION]
BeginString=FIX.4.2
SenderCompID=3e74e5c7-56a1-556a-b044-19936c5a728a
TargetCompID=COIN
HeartBtInt=30
SocketConnectPort=4198
SocketConnectHost=127.0.0.1
FileStorePath=./Sessions/