QuickFIX "Incorrect data format for value": Field Types and Fixes
Written and maintained by ZagTrader. Last reviewed . How this page is sourced and checked
QuickFIX converts each incoming field according to the type its data dictionary gives the tag. If the conversion fails, the message gets a Reject with 373=6 and the tag in RefTagID (371). The value is usually close to right: a timestamp in ISO style, a comma in a price, true instead of Y.
What QuickFIX accepts per type
| Dictionary type | Accepted | Rejected, for example |
|---|---|---|
| UTCTIMESTAMP | 20261020-09:30:00, optionally with .123, .123456 or more digits | 2026-10-20T09:30:00Z, 20261020 09:30:00 |
| PRICE, QTY, AMT, FLOAT, PERCENTAGE | Digits with one optional dot and an optional leading minus | 187,50, +187.5, 1.875E2, 1 000 |
| INT, SEQNUM, LENGTH, NUMINGROUP | Whole numbers | 100.0 |
| BOOLEAN | Y or N | true, 1, y |
| CHAR (FIX 4.1 and later) | One character | 10, an empty value |
| UTCDATEONLY, UTCTIMEONLY | 20261020, 09:30:00 | 2026-10-20 |
The rules for prices are the ones QuickFIX/J applies in its converter; QuickFIX/n and QuickFIX C++ apply the same kind of check. An empty value is a different error: 373=4, unless ValidateFieldsHaveValues=N.
Usual causes
- Timestamps written with a general date library instead of the FIX format, or in local time with a zone suffix. Both SendingTime (52) and TransactTime (60) must be UTC in
YYYYMMDD-HH:MM:SS(.sss). - Numbers formatted with the server's locale. A price written with the current culture can come out as
187,50. Format FIX numbers with an invariant locale. - Timestamp precision. A sender with nanosecond precision talks to a receiver that only accepts milliseconds. In QuickFIX/J set
TimeStampPrecision=MILLIS; in QuickFIX/nTimestampPrecision=Milliseconds. - A custom field whose type in your dictionary differs from what the counterparty sends, for example INT for an ID that contains letters. Change the type to STRING in your dictionary.
Fix it
- Take the tag from RefTagID (371) (or from the QuickFIX event line
Reject sent for message N: Incorrect data format for value:TAG). - Paste the rejected message into the parser to see the value next to the field's type for your FIX version.
- If you sent it, fix the formatting in your code or the precision setting. If you received it and the value is valid for the counterparty, fix the type in your dictionary.
Questions
- What timestamp format does QuickFIX expect?
- UTC as YYYYMMDD-HH:MM:SS, optionally with fractional seconds after a dot. No T, no Z and no time zone offset.
- Does QuickFIX accept true and false for boolean fields?
- No. FIX booleans are Y and N.
The FIX side of the problem
What the error means on any FIX engine, with example messages you can open in the parser:
Reference
Sources
- QuickFIX/J source: DataDictionary.java (field checks)
- QuickFIX/J user manual: Configuration
- QuickFIX/n documentation: Configuration
- QuickFIX C++ documentation: Validation
- QuickFIX C++ source: Session.cpp (reject handling, sequence texts)
Setting names, defaults and message texts were checked against the projects' source code and documentation on the review date shown at the top of the page. Behaviour can change between releases; check the version you run. This guide is independent and not affiliated with the QuickFIX projects.
More QuickFIX guides
- QuickFIX/J vs QuickFIX/n vs QuickFIX C++: Which One to Use
- QuickFIX Session Settings Explained: Configuration Reference
- QuickFIX with FIX 5.0 SP2: FIXT.1.1, Transport and Application Dictionaries
- Custom Fields and a Custom Data Dictionary in QuickFIX
- Repeating Groups in QuickFIX: Reading, Writing and Validation Errors
- QuickFIX Session Schedules: Daily vs Weekly Sessions, Time Zones and Sunday to Thursday Markets
- QuickFIX "Tag not defined for this message type": Causes and Fixes
- QuickFIX "Conditionally Required Field Missing": Why Your Handler Caused It
- QuickFIX "MsgSeqNum too low": Reset Sequence Numbers Safely and Fix the File Store
- QuickFIX Logon Problems: Session Not Found, CompID Mismatch and Rejected Logons
- QuickFIX SSL and TLS: Setup per Engine and Handshake Failures
- QuickFIX onMessage Not Called: Message Cracking Problems
- Reading and Analyzing QuickFIX Logs: messages.log and event.log