FIXAccounts FIX

POST

The client sends Logon (35=A) to the server over TLS/TCP at fix.bitgo.com:5100 (or test). This is not an HTTP request.

Required before order entry or market-data application messages on a new session. One active order-entry session per Go Account (56=BITGO); market data uses a separate session (56=BITGO-MD).

SenderCompID (49) identifies the account; there is no separate Username (tag 553). Your access token goes in Password (554).

On success: server echoes Logon (35=A).

On failure: server sends Logout (35=5) with Text (58) describing the reason. The session does not reach the logged-on state. Common rejection texts:

Text (tag 58) Cause
invalid access token Token malformed, expired at Logon, or otherwise invalid
missing or empty access token (tag 554) Tag 554 absent or empty
invalid Go Account ID in TargetCompID: expected 32 hex chars Bad account ID format (swapped CompIDs)
unknown SenderCompID: expected BITGO or BITGO-MD Wrong session type in tag 56 (or swapped 49/56)
token missing trade_fix scope Token lacks FIX permission
not authorised for this account No spend permission on the account
rate limit exceeded on logon, retry shortly More than 10 Logon attempts per minute
authentication failed Generic auth failure
access token expired Token already expired at Logon
active session exists for this account Another FIX session is already active for this account
session enforcement failed Session store could not claim the account slot
server shutting down, please reconnect Acceptor is draining / shutting down

Mid-session token expiry and revocation use Logout (35=5) with session expired / access token revoked (see Logout page), not these Logon reject texts.

Token lifecycle: tokens are validated at Logon; expiry is then checked on each subsequent order. On expiry the server sends Logout with Text="session expired". Reconnect with a fresh trade_fix-scoped token.

Example (pipe-delimited FIX):

8=FIX.4.4|9=128|35=A|49=0123456789abcdef0123456789abcdef|56=BITGO|34=1|554=v2_your_access_token_here|141=Y|98=0|108=30|52=20260415-14:30:00.000|10=XXX|

Body Params

object

Logon (35=A) body fields. Standard header/trailer are also required on every message. Authenticate with Password (554); there is no Username (553). SenderCompID (49) identifies the account.
  • password string required
    Required. BitGo access token with trade_fix scope. Validated at Logon; expiry is re-checked on subsequent orders.
  • encryptMethod string enum required
    Required. Must be 0 (None). TLS encrypts the transport.
    0
  • heartBtInt integer enum required
    Required. Heartbeat interval in seconds. Must be 30 to match the server.
    30
  • resetSeqNumFlag string enum
    Optional. Must be Y when sent. Sequence numbers reset to 1 on every connection (stateless session model) regardless, as the server is configured with ResetOnLogon=Y.
    YN

Responses

200
Session established. Server echoes Logon (35=A).

Response Body

object

Logon (35=A) body fields. Standard header/trailer are also required on every message. Authenticate with Password (554); there is no Username (553). SenderCompID (49) identifies the account.
  • password string required
    Required. BitGo access token with trade_fix scope. Validated at Logon; expiry is re-checked on subsequent orders.
  • encryptMethod string enum required
    Required. Must be 0 (None). TLS encrypts the transport.
    0
  • heartBtInt integer enum required
    Required. Heartbeat interval in seconds. Must be 30 to match the server.
    30
  • resetSeqNumFlag string enum
    Optional. Must be Y when sent. Sequence numbers reset to 1 on every connection (stateless session model) regardless, as the server is configured with ResetOnLogon=Y.
    YN
default
Logout (35=5) with rejection reason in tag 58.
No response body