FIX Standard Errors and Omissions 2026

This thread is intended to capture errors and omissions discovered in the FIX Standard during 2026, e.g. misspellings or gaffes in the description. These will eventually be reviewed by the Global Technical Committee (GTC) and be corrected with a standard Gap Analysis and a FIX Extension Pack.

Please report errors you may encounter when using the FIX Protocol. The GTC will use the same thread to capture issues it identifies.

Thank you,
GTC Project Management (gtcpm)

Fields IOIid and AvdId do not follow FIX field naming conventions using “ID

Orchestra 4.2
<fixr:field id="23" name="IOIid" type="String" added="FIX.2.7">
<fixr:field id="3" name="AdvRefID" type="String" added="FIX.2.7">
<fixr:field id="2" name="AdvId" type="String" added="FIX.2.7">

Orchestra 4.4
<fixr:field id="23" name="IOIID" type="String" added="FIX.2.7" abbrName="IOIID" baseCategory="Indication" baseCategoryAbbrName="ID">
<fixr:field id="3" name="AdvRefID" type="String" added="FIX.2.7" abbrName="AdvRefID">
<fixr:field id="2" name="AdvId" type="String" added="FIX.2.7" abbrName="AdvId">

Orchestra FIX Latest
<fixr:field type="String" baseCategory="Indication" baseCategoryAbbrName="ID" id="23" name="IOIID" abbrName="IOIID" added="FIX.2.7">
<fixr:field type="String" id="3" name="AdvRefID" abbrName="AdvRefID" added="FIX.2.7">
<fixr:field type="String" id="2" name="AdvId" abbrName="AdvId" added="FIX.2.7">

Required changes:

  1. Rename IOIidIOIID in FIX 4.2
  2. Rename AdvIdAdvID in FIX 4.2, FIX 4.4 and FIX Latest

Legacy versions of FIXimate [4.0-4.2] are incorrectly using message names OrderSingle and OrderList.

In the source documentation the MsgType comments refer to “Order - Single” and “Order - List” but the message descriptions clearly use New Order - Single and New Order -List.

This issue is also present in the Orchestra XML for 4.2 where the MsgType values do not match message names.

<fixr:codeSet name="MsgTypeCodeSet" id="35" type="String">
  <fixr:code name="NewOrderSingle" id="35014" value="D" sort="13" added="FIX.2.7">
    <fixr:annotation>
      <fixr:documentation purpose="SYNOPSIS">Order Single</fixr:documentation>
    </fixr:annotation>
  </fixr:code>
  <fixr:code name="NewOrderList" id="35015" value="E" sort="14" added="FIX.2.7">
    <fixr:annotation>
      <fixr:documentation purpose="SYNOPSIS">Order List</fixr:documentation>
    </fixr:annotation>
  </fixr:code>
</fixr:codeSet>
<fixr:message name="OrderSingle" id="14" msgType="D" category="SingleGeneralOrderHandling" added="FIX.2.7">
  <fixr:structure>
    <fixr:componentRef id="1001" presence="required" added="FIX.2.7">
      <fixr:annotation>
        <fixr:documentation>MsgType = D</fixr:documentation>
      </fixr:annotation>
    </fixr:componentRef>
  </fixr:structure>
</fixr:message>
<fixr:message name="OrderList" id="15" msgType="E" category="ProgramTrading" added="FIX.2.7">
  <fixr:structure>
    <fixr:componentRef id="1001" presence="required" added="FIX.2.7">
      <fixr:annotation>
        <fixr:documentation>MsgType = E</fixr:documentation>
      </fixr:annotation>
    </fixr:componentRef>
  </fixr:structure>
</fixr:message>

Martin, in the legacy versions of FIX those were the official message names. They are correct names for those versions.

Orchestra identifiers should map uniquely to a single semantic name and should not be reassigned or recycled.

Issue: Component IDs for StandardHeader and StandardTrailer were recycled in FIX 4.4. Component IDs 1001 and 1002 break the one-to-one mapping between identifiers and semantic names.

Orchestra FIX 4.2

<fixr:component name="StandardHeader" id="1001" category="Session" added="FIX.4.0">
<fixr:component name="StandardTrailer" id="1002" category="Session" added="FIX.4.0">

Orchestra FIX 4.4

<fixr:component category="Session" added="FIX.4.0" id="1024" name="StandardHeader" abbrName="Hdr">
<fixr:component category="Session" added="FIX.4.0" id="1025" name="StandardTrailer" abbrName="Trlr">
<fixr:component category="Common" added="FIX.4.4" id="1001" name="DiscretionInstructions" abbrName="DiscInstr">
<fixr:component category="Common" added="FIX.4.4" id="1002" name="FinancingDetails" abbrName="FinDetls">

Orchestra FIX Latest

<fixr:component category="Session" added="FIX.4.0" updated="FIX.Latest" updatedEP="271" id="1024" name="StandardHeader" abbrName="Hdr">
<fixr:component category="Session" added="FIX.4.0" id="1025" name="StandardTrailer" abbrName="Trlr">
<fixr:component category="Common" added="FIX.4.4" id="1001" name="DiscretionInstructions" abbrName="DiscInstr">
<fixr:component category="Common" added="FIX.4.4" updated="FIX.5.0SP2" updatedEP="161" id="1002" name="FinancingDetails" abbrName="FinDetls">

The Orchestra XML for FIX 4.2 should use consistent names for message.name and MsgTypeCodeSet/code.name.

Note the original source specification for FIX 2.7 refers to New Order Single.

In FIX 4.0 the description for code EncryptMethodCodeSet=4[PGPDES] was updated to include “defunct”. Can this code be marked as deprecated?

The following code definition appears in Orchestra 4.2, 4.4 and FIX.Latest:

<fixr:codeSet type="int" id="98" name="EncryptMethodCodeSet" added="FIX.2.7">
  ...
  <fixr:code value="4" sort="5" id="98005" name="PGPDES" added="FIX.3.0">
    <fixr:annotation>
      <fixr:documentation purpose="SYNOPSIS">
                    PGP / DES (Defunct)</fixr:documentation>
    </fixr:annotation>
  </fixr:code>

The release notes for FIX 4.0 only reference adding new codes:

5. Additional enumerations have been added to the EncryptMethod(98) field.

I stand corrected :+1:

The Orchestra XML for FIX 4.2 does not include a definition for SettlCurrFxRateCalcCodeSet, which was introduced in FIX 4.1.

<fixr:field type="char" id="156" name="SettlCurrFxRateCalc" added="FIX.4.1">
  <fixr:annotation>
    <fixr:documentation purpose="SYNOPSIS">Specifies whether or not SettlCurrFxRate should be multiplied or divided.</fixr:documentation>
  </fixr:annotation>
</fixr:field>

The Orchestra XML for FIX 4.2 does not include a definition for SettlDeliveryTypeCodeSet, which was introduced in FIX 4.1.

<fixr:field type="int" id="172" name="SettlDeliveryType" added="FIX.4.1">
  <fixr:annotation>
    <fixr:documentation purpose="SYNOPSIS">Identifies type of settlement</fixr:documentation>
  </fixr:annotation>
</fixr:field>

Agree, looks like the error was only corrected in FIX 4.4. SettlCurrFxRateCalc(156) should have a code set in FIX 4.2.

1 Like

Agree, looks like the error was only corrected in FIX 4.4. SettlDeliveryType(172) should have a code set in FIX 4.2.

1 Like

BidTypeCodeSet (added in FIX 4.2) is missing from the Orchestra XML for FIX 4.2. It is present in 4.2 and FIX.Latest Orchestra XML specs.

<fixr:field type="int" id="394" name="BidType" added="FIX.4.2">
  <fixr:annotation>
    <fixr:documentation purpose="SYNOPSIS">Code to identify the type of Bid Request.</fixr:documentation>
  </fixr:annotation>
</fixr:field>

BidDescriptorTypeCodeSet (added in FIX 4.2) is missing from the Orchestra XML for FIX 4.2. It is present in 4.2 and FIX.Latest Orchestra XML specs.

<fixr:field type="int" id="399" name="BidDescriptorType" added="FIX.4.2">
  <fixr:annotation>
    <fixr:documentation purpose="SYNOPSIS">Code to identify the type of BidDescriptor.</fixr:documentation>
  </fixr:annotation>
</fixr:field>

SideValueIndCodeSet (added in FIX 4.2) is missing from the Orchestra XML for FIX 4.2.

<fixr:field type="int" id="401" name="SideValueInd" added="FIX.4.2">
  <fixr:annotation>
    <fixr:documentation purpose="SYNOPSIS">Code to identify which "SideValue" the value refers to. SideValue1 and SideValue2 are used as opposed to Buy or Sell so that the basket can be quoted either way as Buy or Sell.</fixr:documentation>
  </fixr:annotation>
</fixr:field>

Orchestra XML for FIX 4.4 is missing codeSet pedigree, and code pedigree values are incorrect (should be FIX 4.2)

<fixr:codeSet type="int" id="401" name="SideValueIndCodeSet">
  <fixr:code value="1" id="401001" name="SideValue1" added="FIX.4.3">
    <fixr:annotation>
      <fixr:documentation purpose="SYNOPSIS">
     SideValue1
  </fixr:documentation>
    </fixr:annotation>
  </fixr:code>
  <fixr:code value="2" id="401002" name="SideValue2" added="FIX.4.3">
    <fixr:annotation>
      <fixr:documentation purpose="SYNOPSIS">
     SideValue 2
  </fixr:documentation>
    </fixr:annotation>
  </fixr:code>
</fixr:codeSet>

Orchestra XML for FIX Latest has correct codeSet pedigree, but code pedigree values are also incorrect (should be FIX 4.2)

<fixr:codeSet type="int" id="401" name="SideValueIndCodeSet" added="FIX.4.2">
  <fixr:code value="1" sort="1" id="401001" name="SideValue1" added="FIX.4.3">
    <fixr:annotation>
      <fixr:documentation purpose="SYNOPSIS">
                    Side Value 1</fixr:documentation>
    </fixr:annotation>
  </fixr:code>
  <fixr:code value="2" sort="2" id="401002" name="SideValue2" added="FIX.4.3">
    <fixr:annotation>
      <fixr:documentation purpose="SYNOPSIS">
                    Side Value 2</fixr:documentation>
    </fixr:annotation>
  </fixr:code>
</fixr:codeSet>

@martinat thank you for raising the issues above, which are quite similar in nature. It seems that the Basic and Unified Repository published for FIX 4.2 at the time were missing enumerations for a number of fields that do show a list in the specification. These inconsistencies were corrected in FIX 4.3, albeit with a pedigree showing the version it was corrected in.

The Orchestra representation of FIX 4.2 hence has the same error as the legacy repository formats and will be fixed in the Orchestra XML file. We will also analyse the pedigree issues and correct them.

ListStatusTypeCodeSet (added in FIX 4.2) is missing from the Orchestra XML for FIX 4.2.

    <fixr:field type="int" id="429" name="ListStatusType" added="FIX.4.2">
      <fixr:annotation>
        <fixr:documentation purpose="SYNOPSIS">Code to represent the price type.</fixr:documentation>
      </fixr:annotation>
    </fixr:field>

Pedigree information in FIX 4.4 and FIX Latest is incorrect, should be added FIX 4.2.

<fixr:codeSet type="int" id="429" name="ListStatusTypeCodeSet">
  <fixr:code value="1" id="429001" name="Ack" added="FIX.4.3">
    <fixr:annotation>
      <fixr:documentation purpose="SYNOPSIS">
     Ack
  </fixr:documentation>
    </fixr:annotation>
  </fixr:code>
  <fixr:code value="2" id="429002" name="Response" added="FIX.4.3">
    <fixr:annotation>
      <fixr:documentation purpose="SYNOPSIS">
     Response
  </fixr:documentation>
    </fixr:annotation>
  </fixr:code>
  <fixr:code value="3" id="429003" name="Timed" added="FIX.4.3">
    <fixr:annotation>
      <fixr:documentation purpose="SYNOPSIS">
     Timed
  </fixr:documentation>
    </fixr:annotation>
  </fixr:code>
  <fixr:code value="4" id="429004" name="ExecStarted" added="FIX.4.3">
    <fixr:annotation>
      <fixr:documentation purpose="SYNOPSIS">
     ExecStarted
  </fixr:documentation>
    </fixr:annotation>
  </fixr:code>
  <fixr:code value="5" id="429005" name="AllDone" added="FIX.4.3">
    <fixr:annotation>
      <fixr:documentation purpose="SYNOPSIS">
     AllDone
  </fixr:documentation>
    </fixr:annotation>
  </fixr:code>
  <fixr:code value="6" id="429006" name="Alert" added="FIX.4.3">
    <fixr:annotation>
      <fixr:documentation purpose="SYNOPSIS">
     Alert
  </fixr:documentation>
    </fixr:annotation>
  </fixr:code>
</fixr:codeSet>

Same issue applies to ListOrderStatusCodeSet

<fixr:field type="int" id="431" name="ListOrderStatus" added="FIX.4.2">
  <fixr:annotation>
    <fixr:documentation purpose="SYNOPSIS">Code to represent the status of a list order.</fixr:documentation>
  </fixr:annotation>
</fixr:field>

@martinat thanks again, here is the current list of fields that do not show enumerated values for FIX 4.2 in the legacy FIXimate:

  • SettlCurrFxRateCalc(156)
  • SettlDeliveryType(172)
  • BidType(394)
  • BidDescriptorType(399)
  • SideValueInd(401)
  • ListStatusType(429)
  • ListOrderStatus(431)

To be extended if necessary…

1 Like

Typo in code name IncorrectAveragegPrice for field AllocRejCode(88) in Orchestra XML FIX 4.2 and 4.4.

  <fixr:code value="2" id="88003" name="IncorrectAveragegPrice" added="FIX.2.7">
    <fixr:annotation>
      <fixr:documentation purpose="SYNOPSIS">
     incorrect average price
  </fixr:documentation>