NoPartyIDs (FIX tag 453)

NumInGroupFIX 4.4FIX 5.0 SP2group counter

NoPartyIDs (tag 453) is a NumInGroup field defined in FIX 4.4 and FIX 5.0 SP2. It appears in 44 message types, always optionally. Its datatype is NumInGroup, which makes it a repeating-group counter: its value is the number of entries that follow, not a quantity in its own right.

At a glance

Tag
453
Name
NoPartyIDs
Datatype
NumInGroup (int)
Dialects
FIX 4.4 and FIX 5.0 SP2
Messages
44

What the specification says

Number of PartyID (448), PartyIDSource (447), and PartyRole (452) entries

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

A real message using tag 453

ExecutionReport · FIX 4.4
TagFieldWire valueMeaning
8BeginStringFIX.4.4
9BodyLength163
35MsgType8Execution Report
49SenderCompIDBOARTEAM
56TargetCompIDCOUNTERPARTY
34MsgSeqNum2
52SendingTime20240101-12:00:00.000
37OrderIDORD-10042
453NoPartyIDs2 entries2repeating group
448PartyIDEXAMPLE
448PartyIDEXAMPLE
17ExecIDEXEC-88117
150ExecType0New
39OrdStatus0New
54Side1Buy
151LeavesQty0
14CumQty1000000
6AvgPx1.09215
10CheckSum252
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 453 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 5.0 SP2Where in the message
AdjustedPositionReportBLOptionalinside the Parties component
AllocationInstructionJOptionalOptionalinside the Parties component
AllocationInstructionAckPOptionalOptionalinside the Parties component
AllocationInstructionAlertBMOptionalinside the Parties component
AllocationReportASOptionalOptionalinside the Parties component
AllocationReportAckATOptionalOptionalinside the Parties component
ApplicationMessageRequestBWOptionalinside the Parties component
ApplicationMessageRequestAckBXOptionalinside the Parties component
AssignmentReportAWOptionalOptionalinside the Parties component
CollateralAssignmentAYOptionalOptionalinside the Parties component
CollateralInquiryBBOptionalOptionalinside the Parties component
CollateralInquiryAckBGOptionalOptionalinside the Parties component
CollateralReportBAOptionalOptionalinside the Parties component
CollateralRequestAXOptionalOptionalinside the Parties component
CollateralResponseAZOptionalOptionalinside the Parties component
ConfirmationAKOptionalOptionalinside the Parties component
ContraryIntentionReportBOOptionalinside the Parties component
CrossOrderCancelReplaceRequesttOptionalOptionalinside SideCrossOrdModGrp › Parties
CrossOrderCancelRequestuOptionalOptionalinside SideCrossOrdCxlGrp › Parties
ExecutionReport8OptionalOptionalinside the Parties component
IOI6Optionalinside the Parties component
ListCancelRequestKOptionalinside the Parties component
MarketDataIncrementalRefreshXOptionalinside MDIncGrp › Parties
MarketDataRequestVOptionalinside the Parties component
MarketDataRequestRejectYOptionalinside the Parties component
MarketDataSnapshotFullRefreshWOptionalinside MDFullGrp › Parties
MassQuoteiOptionalOptionalinside the Parties component
MassQuoteAcknowledgementbOptionalOptionalinside the Parties component
MultilegOrderCancelReplaceACOptionalOptionalinside the Parties component
NewOrderCrosssOptionalOptionalinside SideCrossOrdModGrp › Parties
NewOrderListEOptionalOptionalinside ListOrdGrp › Parties
NewOrderMultilegABOptionalOptionalinside the Parties component
NewOrderSingleDOptionalOptionalinside the Parties component
OrderCancelReplaceRequestGOptionalOptionalinside the Parties component
OrderCancelRequestFOptionalOptionalinside the Parties component
OrderMassActionReportBZOptionalinside the Parties component
OrderMassActionRequestCAOptionalinside the Parties component
OrderMassCancelReportrOptionalinside the Parties component
OrderMassCancelRequestqOptionalinside the Parties component
OrderMassStatusRequestAFOptionalOptionalinside the Parties component
OrderStatusRequestHOptionalOptionalinside the Parties component
PositionMaintenanceReportAMOptionalOptionalinside the Parties component
PositionMaintenanceRequestALOptionalOptionalinside the Parties component
PositionReportAPOptionalOptionalinside the Parties component
QuoteSOptionalOptionalinside the Parties component
QuoteCancelZOptionalOptionalinside the Parties component
QuoteRequestROptionalOptionalinside QuotReqGrp › Parties
QuoteRequestRejectAGOptionalOptionalinside QuotReqRjctGrp › Parties
QuoteResponseAJOptionalOptionalinside the Parties component
QuoteStatusReportAIOptionalOptionalinside the Parties component
QuoteStatusRequestaOptionalOptionalinside the Parties component
RFQRequestAHOptionalinside the Parties component
RegistrationInstructionsoOptionalOptionalinside the Parties component
RegistrationInstructionsResponsepOptionalOptionalinside the Parties component
RequestForPositionsANOptionalOptionalinside the Parties component
RequestForPositionsAckAOOptionalOptionalinside the Parties component
SettlementInstructionRequestAVOptionalOptionalinside the Parties component
SettlementInstructionsTOptionalOptionalinside SettlInstGrp › Parties
SettlementObligationReportBQOptionalinside SettlObligationInstructions › Parties
StreamAssignmentReportCDOptionalinside StrmAsgnRptGrp › Parties
StreamAssignmentRequestCCOptionalinside StrmAsgnReqGrp › Parties
TradeCaptureReportAEOptionalOptionalinside TrdCapRptSideGrp › Parties
TradeCaptureReportAckAROptionalinside TrdCapRptAckSideGrp › Parties
TradeCaptureReportRequestADOptionalOptionalinside the Parties component

Wire format

The number of entries in the repeating group that follows. The next field on the wire is the group's delimiter tag. @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 453 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);// NoPartyIDs is a group counter, so the entries live on message.groups —// NOT on message.fields. message.fields[453] is undefined.const entries = message.groups[453] ?? [];for (const entry of entries) {  // entry.fields is keyed by tag; entry.groups holds nested groups}

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