Description
The Business Message Reject message can reject an application-level message which fulfills session-level rules and cannot be rejected via any other means. Note if the message fails a session-level rule (e.g. body length is incorrect), a session-level Reject (35=3) message should be issued.
The only exception to this rule is when a transport other than the FIX session protocol is being used (transport independence). An appropriate reject message of the given session protocol or the Business Message Reject message should be used instead.
See the session-level Reject (35=3) message
It should *NOT* be used in the following situations:
|
Note the only exceptions to this rule are:
- In the event a business message is received, fulfills session-level rules, however, the message cannot be communicated to the business-level processing system. In this situation a BusinessMessageReject <j> with BusinessRejectReason <380> = "Application not available at this time" can be issued if the the system is unable to send the specific "reject" message listed above due to this condition.
- In the event a valid business message is received, fulfills session-level rules, however, the message type is not supported by the receipient. In this situation a BusinessMessageReject <j> with BusinessRejectReason <380> = "Unsupported Message Type" can be issued if the system is unable to send the specific "reject" message listed above because the receiving system cannot generate the related "reject" message.
- In the event a business message is received, fulfills session-level rules, but lacks a field conditionally required by the FIX specification. In this situation a BusinessMessageReject <j> with BusinessRejectReason <380> = "Conditionally Required Field Missing" can be issued if the system is unable to send the specific "reject" message listed above. One example of this would be a stop order missing StopPx. However, a Business Message Reject message MUST NOT be used to enforce proprietary rules more restrictive than those explicit in the FIX specification, such as a broker requiring an order to contain an Account, which the FIX specification considers an optional field.
Messages which can be referenced via the BusinessMessageReject <j> message are (the "ID" field BusinessRejectRefID <379> refers to noted in [ ]):
- IOI (35=6) (Indication of Interest) [IOIID <23>]
- Advertisement (35=7) [AdvId <2>]
- News <B> [Headline <148>]
- Email <C> [EmailThreadID <164>]
- OrderCancelReject (35=9) [ClOrdID <11>]
- AllocationInstructionAck <P> [AllocID <70>]
- AllocationReportAck <AT> [AllocID <70>]
- ListStatus <N> [ListID <66>]
- DontKnowTrade <Q> (DK) - may respond with OrderCancelReject (35=9) if attempting to cancel order [ExecID <17>]
- SettlementInstructions <T> [SettlInstID <162>]
- MarketDataSnapshotFullRefresh <W> [MDReqID <262>]
- MarketDataIncrementalRefresh <X> [MDReqID <262>]
- MarketDataRequestReject <Y> [MDReqID <262>]
- MassQuoteAck <b> [QuoteID <117>]
- SecurityDefinition <d> [SecurityResponseID <322>]
- SecurityStatus <f> [SecurityStatusReqID <324>]
- TradingSessionStatus <h> [TradSesReqID <335>]
- OrderMassCancelReport <r> [OrderID <37>]
- SecurityTypes <w> [SecurityResponseID <322>]
- SecurityList <y> [SecurityResponseID <322>]
- DerivativeSecurityList <AA> [SecurityResponseID <322>]
- QuoteRequestReject <AG> [QuoteReqID <131>]
- RFQRequest <AH> [RFQReqID <644>]
- QuoteStatusReport <AI> [QuoteID <117>]
- RegistrationInstructionsResponse <p> [RegistID <513>]
- TradeCaptureReport <AE> [TradeReportID <571>]
- ConfirmationAck <AU> [ConfirmID <664>]
- BidResponse <l> [BidID <390>]
- ListStrikePrice <m> [ListID <66>]
- SettlementInstructions <T> [SettlInstMsgID <777>]
- TradeCaptureReportRequestAck <AQ> [TradeRequestID <568>]
- TradeCaptureReportAck <AR> [TradeReportID <571>]
- PositionMaintenanceReport <AM> [PosMaintRptID <721>]
- RequestForPositionsAck <AO> [PosMaintRptID <721>]
- PositionReport <AP> [PosMaintRptID <721>]
- AssignmentReport <AW> [AsgnRptID <833>]
- CollateralResponse <AZ> [CollRespID <904>]
- CollateralInquiryAck <BG> [CollInquiryID <909>]
Scenarios for BusinessMessageReject <j>:
- 0 = Other
- 1 = Unknown ID
- 2 = Unknown Security
- 3 = Unsupported Message Type (receive a valid, but unsupported MsgType <35>)
- 4 = Application not available
- 5 = Conditionally Required Field Missing
Whenever possible, it is strongly recommended that the cause of the failure be described in the Text <58> field (e.g. "UNKNOWN SYMBOL: XYZ").
Structure
Tag | Field Name | Req'd | Comments | |
---|---|---|---|---|
Component Block - <StandardHeader> | Y | MsgType = j (lowercase) | ||
45 | RefSeqNum | N | MsgSeqNum of rejected message | |
372 | RefMsgType | Y | The MsgType of the FIX message being referenced. | |
1130 | RefApplVerID | N | Recommended when rejecting an application message that does not explicitly provide ApplVerID <1128> on the message being rejected. In this case the value from the DefaultApplVerID <1137> or the default value specified in the NoMsgTypes repeating group on the logon message should be provided. | |
1406 | RefApplExtID | N | Recommended when rejecting an application message that does not explicitly provide ApplExtID <1156> on the rejected message. In this case the value from the DefaultApplExtID <1407> or the default value specified in the NoMsgTypes repeating group on the logon message should be provided. | |
1131 | RefCstmApplVerID | N | Recommended when rejecting an application message that does not explicitly provide CstmApplVerID <1129> on the message being rejected. In this case the value from the DefaultCstmApplVerID <1408> or the default value specified in the NoMsgTypes repeating group on the logon message should be provided. | |
379 | BusinessRejectRefID | N | The value of the business-level "ID" field on the message being referenced. Required unless the corresponding ID field (see list above) was not specified. | |
380 | BusinessRejectReason | Y | Code to identify reason for a Business Message Reject message. | |
58 | Text | N | Where possible, message to explain reason for rejection | |
354 | EncodedTextLen | N | Must be set if EncodedText field is specified and must immediately precede it. | |
355 | EncodedText | N | Encoded (non-ASCII characters) representation of the Text field in the encoded format specified via the MessageEncoding field. | |
Component Block - <StandardTrailer> | Y |