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. 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. 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. 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 parserQuestions
- 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.