EncodedSecurityDescLen (FIX tag 350)

LengthFIX 4.4FIX 4.2

EncodedSecurityDescLen (tag 350) is a Length field defined in FIX 4.4 and FIX 4.2. It appears in 59 message types, always optionally.

At a glance

Tag
350
Name
EncodedSecurityDescLen
Datatype
Length (int)
Dialects
FIX 4.4 and FIX 4.2
Messages
59

What the specification says

FIX 4.4

Byte length of encoded (non-ASCII characters) EncodedSecurityDesc (35) field.

FIX 4.2

Byte length of encoded (non-ASCII characters) EncodedSecurityDesc field.

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

A real message using tag 350

NewOrderSingle · FIX 4.4
TagFieldWire valueMeaning
8BeginStringFIX.4.4
9BodyLength117
35MsgTypeDOrder – Single
49SenderCompIDBOARTEAM
56TargetCompIDCOUNTERPARTY
34MsgSeqNum2
52SendingTime20240101-12:00:00.000
11ClOrdIDORD-10042
350EncodedSecurityDescLen7
54Side1Buy
60TransactTime20240101-12:00:00.000
40OrdType1Market
10CheckSum003
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.

Where tag 350 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.2Where in the message
Advertisement7ConditionalOptionalinside the Instrument component
AllocationInstructionJConditionalOptionalinside the Instrument component
AllocationReportASConditionalinside the Instrument component
AssignmentReportAWConditionalinside the Instrument component
CollateralAssignmentAYConditionalinside the Instrument component
CollateralInquiryBBConditionalinside the Instrument component
CollateralInquiryAckBGConditionalinside the Instrument component
CollateralReportBAConditionalinside the Instrument component
CollateralRequestAXConditionalinside the Instrument component
CollateralResponseAZConditionalinside the Instrument component
ConfirmationAKConditionalinside the Instrument component
CrossOrderCancelReplaceRequesttConditionalinside the Instrument component
CrossOrderCancelRequestuConditionalinside the Instrument component
DerivativeSecurityListAAConditionalinside RelSymDerivSecGrp › Instrument
DontKnowTradeQConditionalOptionalinside the Instrument component
EmailCConditionalOptionalinside InstrmtGrp › Instrument
ExecutionReport8ConditionalOptionalinside the Instrument component
IOI6ConditionalOptionalinside the Instrument component
ListStrikePricemConditionalOptionalinside InstrmtStrkPxGrp › Instrument
MarketDataIncrementalRefreshXConditionalOptionalinside MDIncGrp › Instrument
MarketDataRequestVConditionalOptionalinside InstrmtMDReqGrp › Instrument
MarketDataSnapshotFullRefreshWConditionalOptionalinside the Instrument component
MassQuoteiConditionalOptionalinside QuotSetGrp › QuotEntryGrp › Instrument
MassQuoteAcknowledgementbConditionalOptionalinside QuotSetAckGrp › QuotEntryAckGrp › Instrument
MultilegOrderCancelReplaceACConditionalinside the Instrument component
NewOrderCrosssConditionalinside the Instrument component
NewOrderListEConditionalOptionalinside ListOrdGrp › Instrument
NewOrderMultilegABConditionalinside the Instrument component
NewOrderSingleDConditionalOptionalinside the Instrument component
NewsBConditionalOptionalinside InstrmtGrp › Instrument
OrderCancelReplaceRequestGConditionalOptionalinside the Instrument component
OrderCancelRequestFConditionalOptionalinside the Instrument component
OrderMassCancelReportrConditionalinside the Instrument component
OrderMassCancelRequestqConditionalinside the Instrument component
OrderMassStatusRequestAFConditionalinside the Instrument component
OrderStatusRequestHConditionalOptionalinside the Instrument component
PositionMaintenanceReportAMConditionalinside the Instrument component
PositionMaintenanceRequestALConditionalinside the Instrument component
PositionReportAPConditionalinside the Instrument component
QuoteSConditionalOptionalinside the Instrument component
QuoteCancelZConditionalOptionalinside QuotCxlEntriesGrp › Instrument
QuoteRequestRConditionalOptionalinside QuotReqGrp › Instrument
QuoteRequestRejectAGConditionalinside QuotReqRjctGrp › Instrument
QuoteResponseAJConditionalinside the Instrument component
QuoteStatusReportAIConditionalinside the Instrument component
QuoteStatusRequestaConditionalOptionalinside the Instrument component
RFQRequestAHConditionalinside RFQReqGrp › Instrument
RequestForPositionsANConditionalinside the Instrument component
RequestForPositionsAckAOConditionalinside the Instrument component
SecurityDefinitiondConditionalOptionalinside the Instrument component
SecurityDefinitionRequestcConditionalOptionalinside the Instrument component
SecurityListyConditionalinside SecListGrp › Instrument
SecurityListRequestxConditionalinside the Instrument component
SecurityStatusfConditionalOptionalinside the Instrument component
SecurityStatusRequesteConditionalOptionalinside the Instrument component
TradeCaptureReportAEConditionalinside the Instrument component
TradeCaptureReportAckARConditionalinside the Instrument component
TradeCaptureReportRequestADConditionalinside the Instrument component
TradeCaptureReportRequestAckAQConditionalinside the Instrument component

Wire format

A byte count for the length-prefixed field that follows it. Count bytes, not characters — a multi-byte UTF-8 value makes the two differ. @boarteam/fix parses the value as a number and reports parse/invalid-int when it does not lex as one; the raw string is kept either way.

Read tag 350 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 field = message.fields[350];field?.name;   // "EncodedSecurityDescLen"field?.raw;    // the verbatim wire stringfield?.value;  // coerced to a number

Other Length 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