Supported FIX Message Formats
The message formats shared here are based on the FIX Protocol 5.0 SP2 specification. If a message type or format validation failure occurs, then the BPX MTF will initiate a Reject or Business Message Reject message with the relevant reason.
Message Header and Trailer
Table 1 – Message Standard Header Supported Format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 8 | BeginString | Y | FIXT.1.1 Must be the first field in the message. |
| 9 | BodyLength | Y | Message length, in bytes, forward to the CheckSum Must be the second field in the message. |
| 35 | MsgType | Y | One of the supported message types shared within this document. Must be the third field in the message. |
| 1128 | ApplVerID | N | Application layer version used at message level. BPX MTF will validate the version for each message initiated by the Customer and reject unsupported versions. Supported Value Set: 9 = FIX50SP2 |
| 49 | SenderCompID | Y | CompID of the initiator of the message. |
| 56 | TargetCompID | Y | CompID of the recipient of the message. |
| 34 | MsgSeqNum | Y | Integer message sequence number. |
| 43 | PossDupFlag | N | Possible retransmission of message sent with the same MsgSeqNum(34) specified on currently initiated message. Supported Value Set: N = Original Transmission. Default value if field not specified.Y = Possible Duplicate. |
| 97 | PossResend | N | Possible retransmission of message sent with a different MsgSeqNum(34). Supported Value Set: N = Original Transmission. Default value if field not specified.Y = Possible Resend. |
| 52 | SendingTime | Y | Time of message transmission expressed in UTC (Universal Time Coordinated) |
| 122 | OrigSendingTime | N | Original time of message transmission when sending message in response to a Resend Request. If original time is unknown, then this should set to the SendingTime (52) specified on currently initiated message. Mandatory when PossDupFlag(43) is set to value Possible Duplicate(Y). |
Table 2 – Message Standard Trailer Supported Format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 10 | CheckSum | Y | See FIX trading standards for calculation definition. Must be the last field in the message. |
Session Management
Table 3 - Logon Message Supported Format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 35 | MsgType | Y | A |
| 98 | EncryptMethod | Y | Supported Value Set:0 = None |
| 108 | HeartBtInt | Y | Agreed heartbeat interval. Value must be equal to or between the range of 15 to 60 seconds |
| 141 | ResetSeqNumFlag | N | Indicates the Customer and BPX MTF should reset sequence numbers. Supported Value Set: N = No. Default value if field not specified.Y = Yes, reset sequence numbers |
| 554 | Password | N | Required field for Customer initiated Logon message. Field will not be populated in the BPX MTF initiated Logon response. |
| 925 | NewPassword | N | New password for the specified SenderCompID(49). Will be used for subsequent Logon validation by the BPX MTF if successfully changed. |
| 1137 | DefaultApplVerID | Y | Specifies the service pack release being applied, by default, to message at the session level. Supported Value Set: 9 = FIX50SP2 |
| 1409 | SessionStatus | N | Required field for BPX MTF initiated Logon response. Supported Value Set: 0 = Session active.1 = Session password changed. Session is confirmed active but this value will be used when the password is successfully changed as part of logon.2 = Session password due to expire. Session is confirmed active but this value will be used when the password is due to expire within the agreed duration specified in the Technical Onboarding documentation. |
Table 4 - Logout Message Supported Format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 35 | MsgType | Y | 5 |
| 1409 | SessionStatus | N | Required field for BPX MTF initiated Logout response. Supported Value Set: 3 = New password does not comply with policy defined in the Technical Onboarding documentation.4 = Session Logout complete.5 = Invalid password.6 = Account locked. This will occur after number of consecutive failed Logon attempt as defined in the Technical Onboarding documentation.7 = Logons are not allowed at the time of BPX MTF Logon validation.8 = Password Expired.9 = Received MsgSeqNum(34) is too low. At start of day the sequence number should be 1. For intraday session recovery the sequence number should be 1 increment above the previous Customer-tracked outbound sequence number. |
| 58 | Text | N | Required field when BPX MTF initiates a Logout message. Field includes reason for BPX MTF logout. |
Table 5 - Heartbeat Message Supported Format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 35 | MsgType | Y | 0 |
| 112 | TestReqID | N | Required field when either BPX MTF or Customer is responding to a Test Request message. Value will be equal to the TestReqID(112) specified in the Test Request message. |
Table 6 - Test Request Supported format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 35 | MsgType | Y | 1 |
| 112 | TestReqID | Y | Specified identifier to be returned in Heartbeat message response. |
Table 7 - Resend Request Message Supported Format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 35 | MsgType | Y | 2 |
| 7 | BeginSeqNo | Y | Sequence number of first message in range to be resent. |
| 16 | EndSeqNo | Y | Sequence number of last message in range to be resent. |
Table 8 - Sequence Reset Message Supported format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 35 | MsgType | Y | 4 |
| 123 | GapFillFlag | N | Indicator when responder is using sequence reset message resend gap fill mode. Supported Value Set: N = Sequence reset request. Default value if field not specified.Y = Gap fill message. |
| 36 | NewSeqNo | Y | Sequence number that will be used in next message initiated by sender of sequence reset message. |
Order Management and Execution Reports
Table 9 - New Order - Single Message Supported Format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 35 | MsgType | Y | D |
| 11 | ClOrdID | Y | Unique new order identifier specified by Customer. Uniqueness logic of identifier shared in Section 4.1 of this document. |
| 48 | SecurityID | Y | Security identifier value in type matching SecurityIDSource(22). |
| 22 | SecurityIDSource | Y | Security identifier type. Supported Value Set: 4 = ISIN |
| 54 | Side | Y | Order side. Supported Value Set: 1 = Buy2 = Sell |
| 60 | TransactTime | Y | Timestamp considered to be the order entry time. |
| 38 | OrderQty | Y | Order size. |
| 40 | OrdType | Y | Type of order. Supported Value Set: 2 = Limit |
| 44 | Price | Y | Limit price. |
| 59 | TimeInForce | N | Order open duration. Supported Value Set: 0 = DayDefault value if field not specified. 1 = Good Till Cancel (GTC) |
| 528 | OrderCapacity | Y | Designation of Customer placing the order. Supported Value Set: A = AgencyP = PrincipalR = Riskless Principal |
Table 10 - Order Cancel Request Message Supported Format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 35 | MsgType | Y | F |
| 41 | OrigClOrdID | N | ClOrdID(11) previous order identifier specified by Customer for order to be cancelled. Required if OrderID(37) not specified. |
| 37 | OrderID | N | BPX MTF generated previous order identifier for order to be cancelled. Required if OrigClOrdID(41) not specified. |
| 11 | ClOrdID | Y | Unique cancel order identifier specified by Customer. Uniqueness logic of identifier shared in Section 4.1 of this document. |
| 48 | SecurityID | Y | Security identifier value in type matching SecurityIDSource(22). This should match the corresponding value within the order to be cancelled. |
| 22 | SecurityIDSource | Y | Security identifier type. Supported Value Set: 4 = ISIN |
| 54 | Side | Y | Order side. This should match the corresponding value within the order to be cancelled. Supported Value Set: 1 = Buy2 = Sell |
| 60 | TransactTime | Y | Timestamp considered to be the order cancel request time. |
Table 11 - Order Cancel/Replace Request Message Supported Format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 35 | MsgType | Y | G |
| 41 | OrigClOrdID | N | ClOrdID(11) previous order identifier specified by Customer for order to be modified. Required if OrderID(37) not specified. |
| 37 | OrderID | N | BPX MTF generated previous order identifier for order to be modified. Required if OrigClOrdID(41) not specified. |
| 11 | ClOrdID | Y | Unique modify order identifier specified by Customer. Uniqueness logic of identifier shared in Section 4.1 of this document. |
| 48 | SecurityID | Y | Security identifier value in type matching SecurityIDSource(22). This should match the corresponding value within the order to be modified. |
| 22 | SecurityIDSource | Y | Security identifier type. Supported Value Set: 4 = ISIN |
| 54 | Side | Y | Order side. This should match the corresponding value within the order to be modified. Supported Value Set: 1 = Buy2 = Sell |
| 60 | TransactTime | Y | Timestamp considered to be the order modify request time. |
| 38 | OrderQty | Y | Order size. |
| 40 | OrdType | Y | Type of order. Supported Value Set: 2 = Limit |
| 44 | Price | Y | Limit price. |
| 59 | TimeInForce | N | Order open duration. Supported Value Set: 0 = Day. Default value if field not specified.1 = Good Till Cancel (GTC) |
Table 12 - Execution Report Message Supported Format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 35 | MsgType | Y | 8 |
| 37 | OrderID | Y | BPX MTF generated order ID. This will be unique across versions of each order and across orders. |
| 11 | ClOrdID | Y | Equal to ClOrdID(11) value provided by Customer when submitting an initial single order entry request. |
| 41 | OrigClOrdID | N | Equal to ClOrdID(11) that was submitted with the order cancel or modification request. This corresponds to the ClOrdID (11) value of the order before cancelling or modifying the order. |
| 880 | TrdMatchID | N | BPX MTF generated trade unique identifier. Required if ExecType(150) equals F(Trade). |
| 17 | ExecID | Y | BPX MTF generate unique identifier of Execution Report message. |
| 19 | ExecRefID | N | ExecID(17) of execution that is either cancelled or amended. Required when BPX MTF cancels or amends a previously sent trade execution report. |
| 150 | ExecType | Y | Type of execution report. Supported Value Set: 0 = New4 = Cancelled5 = Replaced8 = RejectedF = TradeH = Trade Cancel |
| 39 | OrdStatus | Y | Current status of order. Supported Value Set: 0 = New1 = Partially Filled2 = Filled4 = Cancelled8 = Rejected |
| 103 | OrdRejReason | N | Reject code identifier. Required when ExecType(150) equals 8(Rejected). Supported Value Set: 2 = BPX MTF closed3 = Order exceeds limit6 = Duplicate ClOrdID(11)13 = Incorrect quantity16 = Price exceeds current price band18 = Invalid price increment99 = OtherText(58) field will include additional reject reason details. |
| 48 | SecurityID | Y | Related order value. |
| 22 | SecurityIDSource | Y | Related order value. |
| 54 | Side | Y | Related order value. |
| 38 | OrderQty | N | Related order value. |
| 40 | OrdType | Y | Related order value. |
| 44 | Price | N | Related order value. |
| 59 | TimeInForce | N | Related order value. |
| 32 | LastQty | N | Quantity bought or sold on this (last) fill. Required field when ExecType(150) equals F(Trade) |
| 31 | LastPx | N | Price of this (last) fill. Required field when ExecType(150) equals F(Trade) |
| 151 | LeavesQty | Y | Remain open order size. Will be 0 when OrdStatus(39) equals Filled(2), Cancelled(4) or Rejected(8). |
| 14 | CumQty | Y | Total executed quantity across full chain of orders. |
| 60 | TransactTime | Y | The BPX MTF generated transaction time for the Execution Report. |
| 58 | Text | N | Populated with reject reason if applicable. Required when ExecType(150) equals 8(Rejected). |
Table 13 - Order Cancel Reject Message Supported Format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 35 | MsgType | Y | 9 |
| 37 | OrderID | Y | BPX MTF generated previous order identifier for order cancel reject. Populated as "NONE" when CxlRejReason(102) equals 1(Unknown Order). |
| 41 | OrigClOrdID | N | OrigClOrdID (41) included in the order cancel or modification request being rejected. (i.e ClOrdID(11) which could not be canceled/replaced) |
| 11 | ClOrdID | Y | Unique order identifier specified by Customer for order related to order cancel reject. |
| 39 | OrderStatus | Y | Order status of order related to order cancel reject. Populated as value 8(Rejected) when CxlRejReason(102) equals 1(Unknown Order). |
| 434 | CxlRejResponseTo | Y | Type of original request this cancel reject is related to. Supported Value Set: 1 = Order cancel request2 = Order cancel/replace request |
| 102 | CxlRejReason | N | Cancel reject code. Supported Value Set: 1 = Unknown order6 = Duplicate ClOrdID(11) received8 = Price exceeds current price band18 = Invalid price increment99 = OtherText(58) field will include additional reject reason details. |
| 58 | Text | Y | Supporting error message for Reject reason. |
Trading Session Status Updates
Table 14 - Trading Session Status Message Supported Format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 35 | MsgType | Y | h |
| 1301 | MarketID | Y | Market identifier. |
| 336 | TradingSessionID | Y | Trading session code. Supported Value Set: 1 = Day |
| 340 | TradSesStatus | Y | Market trading status code. Supported Value Set: 1 = Halt2 = Open3 = Closed |
Application and Business Rejects
Table 15 - Reject Message Supported Format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 35 | MsgType | Y | 3 |
| 45 | RefSeqNum | Y | MsgSeqNum(34) of the rejected message being referenced in the Reject message. |
| 371 | RefTagID | N | Required if initial message format validation passes but a specific field fails validation. Tag number of the FIX message field being referenced within the Reject message. |
| 372 | RefMsgType | N | MsgType(35) of the rejected message being referenced in the Reject message. |
| 1130 | RefApplVerID | N | BPX MTF initiated Reject will respond with supported version agreed with BPX Customer for SenderCompID during technical onboarding. Supported Value Set: 9 = FIX50SP2 |
| 373 | SessionRejectReason | Y | Reject will include one of the supported codes as well as a supporting error message in the Text(58) field. Supported Value Set: 0 = Invalid tag number.1 = Required tab missing.2 = Undefined tag for message type.3 = Undefined tag.4 = Tag specified with missing value.5 = Value is incorrect for linked tag.For example, out of accepted range. 6 = Incorrect value data format.11 = Invalid or unsupported MsgType(35)13 = Duplicate tag.14 = Tag specified out of order.17 = Value includes field delimiter (<SOH> character)18 = Invalid or unsupported application version.99 = OtherText(58) field will include reject reason details. |
| 58 | Text | Y | Supporting error message for Reject reason. |
Table 16 - Business Message Reject Message Supported Format
| Tag | Field Name | Required (Y/N) | Supported Values |
|---|---|---|---|
| 35 | MsgType | Y | j |
| 45 | RefSeqNum | Y | MsgSeqNum(34) of the rejected message being referenced in the Business Message Reject. |
| 371 | RefTagID | N | If a message is rejected due to an issue with a particular field its tag number will be indicated. |
| 372 | RefMsgType | Y | MsgType(35) of the rejected message being referenced in the Business Message Reject. |
| 1130 | RefApplVerID | N | BPX MTF initiated Business Message Reject will respond with supported version agreed with BPX Customer for SenderCompID during technical onboarding. Supported Value Set: 9 = FIX50SP2 |
| 380 | BusinessRejectReason | Y | Business Message Reject will include one of the supported codes as well as a supporting error message in the Text(58) field. Supported Value Set: 0 = Other2 = Unknown security3 = Unsupported message type5 = Conditional required field missing8 = Throttle limit exceeded |
| 58 | Text | Y | Supporting error message for Business Message Reject reason. |