ZagTrader

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

Questions

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.

Reference

Related errors

All FIX errors · FIX guides