ZagTrader

Session-level rejects (35=3)

CompID problem (373=9)

SenderCompID (49) or TargetCompID (56) on a message does not match the session it arrived on. The receiver rejects it with 373=9, logs out and disconnects.

What it means

A FIX session is identified by its BeginString and the pair of CompIDs. Every message must carry the same CompIDs as the Logon, seen from the sender's side: your SenderCompID is the counterparty's TargetCompID.

At logon, an unknown CompID pair usually gets no reply at all: the acceptor has no session to match and closes the connection. The 373=9 Reject appears when a message on an established session carries different CompIDs.

Common causes

  • SenderCompID and TargetCompID swapped.
  • Case or whitespace differences: BuySide is not BUYSIDE.
  • A UAT CompID used against production, or the reverse.
  • One process serving several sessions and stamping the wrong CompIDs on a message.
  • Changing SenderCompID (49) to act for a client instead of using OnBehalfOfCompID (115) (OnBehalfOfCompID) or DeliverToCompID (128) (DeliverToCompID).

How to fix it

On the side that sent the message

  • Compare your CompIDs with the counterparty's session sheet character for character, including any SenderSubID (50) and TargetSubID (57) they check.
  • Use OnBehalfOfCompID and DeliverToCompID for routing through an intermediary; keep 49 and 56 for the session.

On the side that raised the error

  • Log the CompIDs you received next to the ones configured, so the mismatch is visible in one line.

Example

A message arrives with SenderCompID BUYSIDE2 on the BUYSIDE session.

  1. 1. Buy side: New Order Single with a wrong SenderCompID

    8=FIX.4.4|9=144|35=D|49=BUYSIDE2|56=SELLSIDE|34=120|52=20261020-10:05:00.000|11=ORD-1001|21=1|55=MSFT|54=1|60=20261020-09:30:00.000|38=1000|40=2|44=187.50|59=0|10=169|
  2. 2. Sell side: Reject with 373=9

    8=FIX.4.4|9=105|35=3|49=SELLSIDE|56=BUYSIDE|34=1101|52=20261020-10:05:00.002|45=120|371=49|372=D|373=9|58=CompID problem|10=112|
  3. 3. Sell side: Logout

    8=FIX.4.4|9=79|35=5|49=SELLSIDE|56=BUYSIDE|34=1102|52=20261020-10:05:00.003|58=CompID problem|10=156|

SOH (0x01) is shown as |. BodyLength (9) and CheckSum (10) are calculated as if every | were SOH.

Open this example in the parser

Questions

Why does my Logon get no answer at all?
If the acceptor has no session for your CompID pair, it usually closes the connection without a Logout. Check CompIDs, the port and the IP allow-list with the counterparty.

Reference

Related errors

All FIX errors · FIX guides