FIX 5.0 SP2

The FIX 5.0 SP2 dictionary as shipped in @boarteam/fix-dict-fix50sp2. On the wire it rides the FIXT.1.1 transport: BeginString (tag 8) says FIXT.1.1, and the application version travels in ApplVerID (1128) or the session's DefaultApplVerID (1137).

What it contains

Fields
1452
Messages
115
Components
176
Datatypes
28

Transport and application are separate layers

From FIX 5.0 on, the session layer is its own protocol: FIXT.1.1 owns the envelope and the admin messages (Logon, Heartbeat, Reject…), while FIX 5.0 SP2 defines the business messages. The shipped dictionary is self-contained — envelope, session and application messages in one file — so parse and validate work exactly like they do for FIX 4.4. For layer-attributed validation (was this finding the session's fault or the application's?), @boarteam/fix also accepts the split pair: the transport-only @boarteam/fix-dict-fixt11 plus this dictionary.

How it differs

Against FIX 4.4: FIX 5.0 SP2 carries 540 fields, 23 message types and 73 components that FIX 4.4 does not define. The other way round, FIX 4.4 has 1 message type and 2 components with no FIX 5.0 SP2 counterpart.

Against FIX 4.2: FIX 5.0 SP2 carries 1082 fields, 69 message types and 174 components that FIX 4.2 does not define. The other way round, FIX 4.2 has 35 fields with no FIX 5.0 SP2 counterpart.

540 fields appear in FIX 5.0 SP2 and in neither of the other two versions covered here — the most used:

23 message types appear only in FIX 5.0 SP2 — among them:

73 component blocks exist only in FIX 5.0 SP2, for example ApplIDReportGrp, ApplIDRequestAckGrp, ApplIDRequestGrp, ApplicationSequenceControl, BaseTradingRules, ComplexEventDates.

These are presence counts only. Every entity page shows per-version presence and requiredness side by side, FIX 5.0 SP2 included. For the 4.x delta, see FIX 4.4 vs FIX 4.2.

Decode FIX 5.0 SP2 in TypeScript

decode.tsts
import { createFixEngine } from "@boarteam/fix";import { dictionary } from "@boarteam/fix-dict-fix50sp2";const fix = createFixEngine(dictionary);const { message, issues } = fix.parse(raw);message.beginString;          // "FIXT.1.1" — the transport speaks in tag 8message.fields[1128]?.value;  // ApplVerID "9" = FIX 5.0 SP2, when presentissues;                       // FixIssue[] — never an exception

Decode this in your own code

The same engine that produced the decoded example above is an Apache-2.0 npm package with zero runtime dependencies. It runs in Node and in the browser, and parse() returns problems as data instead of throwing.

npm i @boarteam/fix @boarteam/fix-dict-fix50sp2