Session-level rejects (35=3)
Tag specified without a value (373=4)
A field was sent as "tag=" with nothing after the equals sign. FIX does not allow empty values; a field without a value must be left out of the message.
What it means
Every FIX field needs at least one character of value. The receiver answers with a Reject carrying 373=4 and the empty tag in RefTagID (371).
There is no FIX way to send "empty" or "null". If a value is unknown, omit the field.
Common causes
- A serialiser that writes every field of an object, including null or empty strings.
- Template messages with placeholders that were never filled.
- An upstream system that sends blank account or text fields.
How to fix it
On the side that sent the message
- Skip fields whose value is null or an empty string when building the message.
- If the field is required, fix the source of the missing value rather than sending a blank.
On the side that raised the error
- To tolerate empty fields, QuickFIX has the ValidateFieldsHaveValues setting; set it to N. Accepting them hides a data problem upstream, so prefer fixing the sender.
Example
A New Order Single with an empty Account (1).
1. Buy side: Account sent as "1="
8=FIX.4.4|9=145|35=D|49=BUYSIDE|56=SELLSIDE|34=80|52=20261020-09:50:00.000|1=|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=196|
2. Sell side: Reject, RefTagID 1
8=FIX.4.4|9=117|35=3|49=SELLSIDE|56=BUYSIDE|34=951|52=20261020-09:50:00.002|45=80|371=1|372=D|373=4|58=Tag specified without a value|10=152|
SOH (0x01) is shown as |. BodyLength (9) and CheckSum (10) are calculated as if every | were SOH.
Open this example in the parserQuestions
- How do I send an empty value in FIX?
- You do not. Leave the field out of the message. If the field is required, the sender has to supply a real value.