ExecInst (FIX tag 18)

MultipleValueStringFIX 4.4FIX 4.2FIX 5.0 SP2

ExecInst (tag 18) is a MultipleValueString field defined in FIX 4.4, FIX 4.2 and FIX 5.0 SP2. It appears in 11 message types, always optionally. It is an enumerated field with 40 defined values.

At a glance

Tag
18
Name
ExecInst
Datatype
MultipleValueString (String)
Dialects
FIX 4.4, FIX 4.2 and FIX 5.0 SP2
Messages
11
Valid values
40

What the specification says

FIX 4.4

Instructions for order handling on exchange trading floor. If more than one instruction is applicable to an order, this field can contain multiple instructions separated by space.

FIX 4.2

Instructions for order handling on exchange trading floor. If more than one instruction is applicable to an order, this field can contain multiple instructions separated by space.

FIX 5.0 SP2

Instructions for order handling on exchange trading floor. If more than one instruction is applicable to an order, this field can contain multiple instructions separated by space. *** SOME VALUES HAVE BEEN REPLACED - See "Replaced Features and Supported Approach" *** (see Volume : "Glossary" for value definitions)

Descriptions are quoted from the FIX Orchestra sources under the Apache 2.0 licence.

A real message using tag 18

NewOrderSingle · FIX 4.4
TagFieldWire valueMeaning
8BeginStringFIX.4.4
9BodyLength116
35MsgTypeDOrder – Single
49SenderCompIDBOARTEAM
56TargetCompIDCOUNTERPARTY
34MsgSeqNum2
52SendingTime20240101-12:00:00.000
11ClOrdIDORD-10042
18ExecInst1Not held
54Side1Buy
60TransactTime20240101-12:00:00.000
40OrdType1Market
10CheckSum205
Edit and decode it yourself

Shown with | separators for readability. On the wire FIX uses SOH (0x01), an invisible control byte — and because BodyLength and CheckSum are computed over the actual bytes, the two forms have different checksums. Both are valid and both decode here.

Open in the full decoder →

Generated from the FIX 4.4 dictionary and verified at build time: it parses and validates with no issues. Open the decoder to try your own message.

Valid values

A value outside this list is not a parse error — the message still decodes — but validate() reports it as validate/value-not-in-enum.

ValueMeaningSymbolic nameDialects
1Not heldNOT_HELD / NotHeldFIX 4.4, FIX 4.2, FIX 5.0 SP2
2WorkWORK / WorkFIX 4.4, FIX 4.2, FIX 5.0 SP2
3Go alongGO_ALONG / GoAlongFIX 4.4, FIX 4.2, FIX 5.0 SP2
4Over the dayOVER_THE_DAY / OverTheDayFIX 4.4, FIX 4.2, FIX 5.0 SP2
5HeldHELD / HeldFIX 4.4, FIX 4.2, FIX 5.0 SP2
6Participate don't initiatePARTICIPATE_DONT_INITIATE / ParticipateDoNotInitiateFIX 4.4, FIX 4.2, FIX 5.0 SP2
7Strict scaleSTRICT_SCALE / StrictScaleFIX 4.4, FIX 4.2, FIX 5.0 SP2
8Try to scaleTRY_TO_SCALE / TryToScaleFIX 4.4, FIX 4.2, FIX 5.0 SP2
9Stay on bidsideSTAY_ON_BIDSIDE / StayOnBidSide / STAY_ON_BID_SIDEFIX 4.4, FIX 4.2, FIX 5.0 SP2
0Stay on offersideSTAY_ON_OFFERSIDE / StayOnOfferSide / STAY_ON_OFFER_SIDEFIX 4.4, FIX 4.2, FIX 5.0 SP2
ANo cross (cross is forbidden)NO_CROSS / NoCrossFIX 4.4, FIX 4.2, FIX 5.0 SP2
BOK to crossOK_TO_CROSS / OKToCrossFIX 4.4, FIX 4.2, FIX 5.0 SP2
CCall firstCALL_FIRST / CallFirstFIX 4.4, FIX 4.2, FIX 5.0 SP2
DPercent of volume "(indicates that the sender does not want to be all the volume on the floor vs. a specific percentage)"PERCENT_OF_VOLUME / PercentOfVolumeFIX 4.4, FIX 4.2, FIX 5.0 SP2
EDo not increase - DNIDO_NOT_INCREASE / DoNotIncrease / DO_NOT_INCREASE_DNIFIX 4.4, FIX 4.2, FIX 5.0 SP2
FDo not reduce - DNRDO_NOT_REDUCE / DoNotReduce / DO_NOT_REDUCE_DNRFIX 4.4, FIX 4.2, FIX 5.0 SP2
GAll or none - AONALL_OR_NONE / AllOrNone / ALL_OR_NONE_AONFIX 4.4, FIX 4.2, FIX 5.0 SP2
HReinstate on System Failure (mutually exclusive with Q)REINSTATE_ON_SYSTEM_FAILUREFIX 4.4, FIX 5.0 SP2
IInstitutions onlyINSTITUTIONS_ONLY / InstitutionsOnlyFIX 4.4, FIX 4.2, FIX 5.0 SP2
JReinstate on Trading Halt (mutually exclusive with K)REINSTATE_ON_TRADING_HALTFIX 4.4, FIX 5.0 SP2
KCancel on Trading Halt (mutually exclusive with L)CANCEL_ON_TRADING_HALTFIX 4.4, FIX 5.0 SP2
LLast peg (last sale)LAST_PEG / LastPegFIX 4.4, FIX 4.2, FIX 5.0 SP2
MMid-price peg (midprice of inside quote)MID_PRICE_PEG / MidPricePegFIX 4.4, FIX 4.2, FIX 5.0 SP2
NNon-negotiableNON_NEGOTIABLE / NonNegotiableFIX 4.4, FIX 4.2, FIX 5.0 SP2
OOpening pegOPENING_PEG / OpeningPegFIX 4.4, FIX 4.2, FIX 5.0 SP2
PMarket pegMARKET_PEG / MarketPegFIX 4.4, FIX 4.2, FIX 5.0 SP2
QCancel on System Failure (mutually exclusive with H)CANCEL_ON_SYSTEM_FAILUREFIX 4.4, FIX 5.0 SP2
RPrimary peg (primary market - buy at bid/sell at offer)PRIMARY_PEG / PrimaryPegFIX 4.4, FIX 4.2, FIX 5.0 SP2
SSuspendSUSPEND / SuspendFIX 4.4, FIX 4.2, FIX 5.0 SP2
UCustomer Display Instruction (Rule11Ac1-1/4)CUSTOMER_DISPLAY_INSTRUCTION / CustomerDisplayInstructionFIX 4.4, FIX 4.2, FIX 5.0 SP2
VNetting (for Forex)NETTING / NettingFIX 4.4, FIX 4.2, FIX 5.0 SP2
WPeg to VWAPPEG_TO_VWAP / PegToVWAPFIX 4.4, FIX 4.2, FIX 5.0 SP2
XTrade AlongTRADE_ALONGFIX 4.4, FIX 5.0 SP2
YTry to StopTRY_TO_STOPFIX 4.4, FIX 5.0 SP2
ZCancel if Not BestCANCEL_IF_NOT_BESTFIX 4.4, FIX 5.0 SP2
aTrailing Stop PegTRAILING_STOP_PEGFIX 4.4, FIX 5.0 SP2
bStrict Limit (No Price Improvement)STRICT_LIMITFIX 4.4, FIX 5.0 SP2
cIgnore Price Validity ChecksIGNORE_PRICE_VALIDITY_CHECKSFIX 4.4, FIX 5.0 SP2
dPeg to Limit PricePEG_TO_LIMIT_PRICEFIX 4.4, FIX 5.0 SP2
eWork to Target StrategyWORK_TO_TARGET_STRATEGYFIX 4.4, FIX 5.0 SP2
TFixed Peg to Local best bid or offer at time of orderFixedPegToLocalBestBidOrOfferAtTimeOfOrder / FIXED_PEG_TO_LOCAL_BEST_BID_OR_OFFER_AT_TIME_OF_ORDERFIX 4.2, FIX 5.0 SP2
fIntermarket sweepINTERMARKET_SWEEPFIX 5.0 SP2
gExternal routing allowedEXTERNAL_ROUTING_ALLOWEDFIX 5.0 SP2
hExternal routing not allowedEXTERNAL_ROUTING_NOT_ALLOWEDFIX 5.0 SP2
iImbalance onlyIMBALANCE_ONLYFIX 5.0 SP2
jSingle execution requested for block tradeSINGLE_EXECUTION_REQUESTED_FOR_BLOCK_TRADEFIX 5.0 SP2
kBest executionBEST_EXECUTIONFIX 5.0 SP2
lSuspend on system failureSUSPEND_ON_SYSTEM_FAILUREFIX 5.0 SP2
mSuspend on trading haltSUSPEND_ON_TRADING_HALTFIX 5.0 SP2
nReinstate on connection lossREINSTATE_ON_CONNECTION_LOSSFIX 5.0 SP2
oCancel on connection lossCANCEL_ON_CONNECTION_LOSSFIX 5.0 SP2
pSuspend on connection lossSUSPEND_ON_CONNECTION_LOSSFIX 5.0 SP2
qReleaseRELEASE_FROM_SUSPENSIONFIX 5.0 SP2
rExecute as delta neutral using volatility providedEXECUTE_AS_DELTA_NEUTRAL_USING_VOLATILITY_PROVIDEDFIX 5.0 SP2
sExecute as duration neutralEXECUTE_AS_DURATION_NEUTRALFIX 5.0 SP2
tExecute as FX neutralEXECUTE_AS_FX_NEUTRALFIX 5.0 SP2

Where tag 18 appears

Requiredness is a property of the message, not of the field: the same tag can be optional in one message and conditionally required in another.

MessageMsgTypeFIX 4.4FIX 4.2FIX 5.0 SP2Where in the message
CrossOrderCancelReplaceRequesttOptionalOptionaldirectly on the message body
ExecutionReport8OptionalOptionalOptionaldirectly on the message body
MarketDataIncrementalRefreshXOptionalOptionalOptionalinside the MDIncGrp component
MarketDataSnapshotFullRefreshWOptionalOptionalOptionalinside the MDFullGrp component
MultilegOrderCancelReplaceACOptionalOptionaldirectly on the message body
NewOrderCrosssOptionalOptionaldirectly on the message body
NewOrderListEOptionalOptionalOptionalinside the ListOrdGrp component
NewOrderMultilegABOptionalOptionaldirectly on the message body
NewOrderSingleDOptionalOptionalOptionaldirectly on the message body
OrderCancelReplaceRequestGOptionalOptionalOptionaldirectly on the message body
TradeCaptureReportAEOptionalOptionalinside the TrdCapRptSideGrp component
TradeCaptureReportAckAROptionalinside TrdCapRptAckSideGrp › TradeReportOrderDetail

Wire format

Several values in one field, separated by spaces. Decoders return an array. @boarteam/fix splits the value on its delimiter and returns an array of strings.

Read tag 18 in TypeScript

decode.tsts
import { createFixEngine } from "@boarteam/fix";import { dictionary } from "@boarteam/fix-dict-fix44";const fix = createFixEngine(dictionary);const { message, issues } = fix.parse(raw);const execInst = message.fields[18]?.raw;// e.g. "1" — Not held// The dictionary also carries the labels:const label = fix.dictionary  .fieldByTag(18)  ?.enumValues?.find((e) => e.value === execInst)  ?.description;

Other MultipleValueString fields

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-fix44