EncodedText (FIX tag 355)

dataFIX 4.4FIX 4.2

EncodedText (tag 355) is a data field defined in FIX 4.4 and FIX 4.2. It appears in 71 message types, always optionally. It is length-prefixed — tag 354 carries the byte count, so the value may contain the SOH separator without breaking the message.

At a glance

Tag
355
Name
EncodedText
Datatype
data
Dialects
FIX 4.4 and FIX 4.2
Messages
71
Length field
tag 354

What the specification says

FIX 4.4

Encoded (non-ASCII characters) representation of the Text (58) field in the encoded format specified via the MessageEncoding (347) field. If used, the ASCII (English) representation should also be specified in the Text field.

FIX 4.2

Encoded (non-ASCII characters) representation of the Text field in the encoded format specified via the MessageEncoding field. If used, the ASCII (English) representation should also be specified in the Text field.

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

A real message using tag 355

NewOrderSingle · FIX 4.4
TagFieldWire valueMeaning
8BeginStringFIX.4.4
9BodyLength129
35MsgTypeDOrder – Single
49SenderCompIDBOARTEAM
56TargetCompIDCOUNTERPARTY
34MsgSeqNum2
52SendingTime20240101-12:00:00.000
11ClOrdIDORD-10042
54Side1Buy
60TransactTime20240101-12:00:00.000
40OrdType1Market
354EncodedTextLen7
355EncodedTextEXAMPLE
10CheckSum241
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 355 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
Advertisement7ConditionalOptionaldirectly on the message body
AllocationInstructionJConditionalOptionaldirectly on the message body
AllocationInstructionAckPConditionalOptionaldirectly on the message body
AllocationReportASConditionaldirectly on the message body
AllocationReportAckATConditionaldirectly on the message body
AssignmentReportAWConditionaldirectly on the message body
BidRequestkConditionalOptionaldirectly on the message body
BidResponselConditionalOptionalinside the BidCompRspGrp component
BusinessMessageRejectjConditionalOptionaldirectly on the message body
CollateralAssignmentAYConditionaldirectly on the message body
CollateralInquiryBBConditionaldirectly on the message body
CollateralInquiryAckBGConditionaldirectly on the message body
CollateralReportBAConditionaldirectly on the message body
CollateralRequestAXConditionaldirectly on the message body
CollateralResponseAZConditionaldirectly on the message body
ConfirmationAKConditionaldirectly on the message body
ConfirmationAckAUConditionaldirectly on the message body
ConfirmationRequestBHConditionaldirectly on the message body
CrossOrderCancelReplaceRequesttConditionalinside the SideCrossOrdModGrp component
CrossOrderCancelRequestuConditionalinside the SideCrossOrdCxlGrp component
DerivativeSecurityListAAConditionalinside the RelSymDerivSecGrp component
DerivativeSecurityListRequestzConditionaldirectly on the message body
DontKnowTradeQConditionalOptionaldirectly on the message body
EmailCConditionalOptionalinside the LinesOfTextGrp component
ExecutionReport8ConditionalOptionaldirectly on the message body
IOI6ConditionalOptionaldirectly on the message body
ListCancelRequestKConditionalOptionaldirectly on the message body
ListExecuteLConditionalOptionaldirectly on the message body
ListStatusNConditionalOptionalinside the OrdListStatGrp component
ListStatusRequestMConditionalOptionaldirectly on the message body
ListStrikePricemOptionalOptionalinside the UndInstrmtStrkPxGrp component
Logout5ConditionalOptionaldirectly on the message body
MarketDataIncrementalRefreshXConditionalOptionalinside the MDIncGrp component
MarketDataRequestRejectYConditionalOptionaldirectly on the message body
MarketDataSnapshotFullRefreshWConditionalOptionalinside the MDFullGrp component
MassQuoteAcknowledgementbConditionaldirectly on the message body
MultilegOrderCancelReplaceACConditionaldirectly on the message body
NewOrderCrosssConditionalinside the SideCrossOrdModGrp component
NewOrderListEConditionalOptionalinside the ListOrdGrp component
NewOrderMultilegABConditionaldirectly on the message body
NewOrderSingleDConditionalOptionaldirectly on the message body
NewsBConditionalOptionalinside the LinesOfTextGrp component
OrderCancelReject9ConditionalOptionaldirectly on the message body
OrderCancelReplaceRequestGConditionalOptionaldirectly on the message body
OrderCancelRequestFConditionalOptionaldirectly on the message body
OrderMassCancelReportrConditionaldirectly on the message body
OrderMassCancelRequestqConditionaldirectly on the message body
PositionMaintenanceReportAMConditionaldirectly on the message body
PositionMaintenanceRequestALConditionaldirectly on the message body
PositionReportAPConditionaldirectly on the message body
QuoteSConditionaldirectly on the message body
QuoteRequestRConditionaldirectly on the message body
QuoteRequestRejectAGConditionaldirectly on the message body
QuoteResponseAJConditionaldirectly on the message body
QuoteStatusReportAIConditionaldirectly on the message body
Reject3ConditionalOptionaldirectly on the message body
RequestForPositionsANConditionaldirectly on the message body
RequestForPositionsAckAOConditionaldirectly on the message body
SecurityDefinitiondConditionalOptionaldirectly on the message body
SecurityDefinitionRequestcConditionalOptionaldirectly on the message body
SecurityListyConditionalinside the SecListGrp component
SecurityListRequestxConditionaldirectly on the message body
SecurityStatusfConditionaldirectly on the message body
SecurityTypeRequestvConditionaldirectly on the message body
SecurityTypeswConditionaldirectly on the message body
SettlementInstructionsTConditionaldirectly on the message body
TradeCaptureReportAEConditionalinside the TrdCapRptSideGrp component
TradeCaptureReportAckARConditionaldirectly on the message body
TradeCaptureReportRequestADConditionaldirectly on the message body
TradeCaptureReportRequestAckAQConditionaldirectly on the message body
TradingSessionStatushConditionalOptionaldirectly on the message body

Wire format

Raw bytes, length-prefixed by a partner field. The value may legally contain the SOH separator, which is why the length matters. @boarteam/fix reads the partner length field first and takes exactly that many bytes, so an embedded separator does not truncate the value.

Read tag 355 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);// Length-prefixed: tag 354 carries the byte count, so the// value may contain the SOH separator without breaking the message.const length = message.fields[354]?.value;const encodedText = message.fields[355]?.raw;

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