Reject and Business Message Reject
Message is “Reject” (35=3)
| Tag | Name | Required | Notes |
|---|---|---|---|
| 45 | RefSeqNum | Required | Sequence number of the rejected message |
| 371 | RefTagID | Optional | Tag that caused the reject, where known |
| 372 | RefMsgType | Optional | — |
| 373 | SessionRejectReason | Optional | 0=Invalid Tag Number·1=Required Tag Missing·2=Tag Not Defined For This Message Type·3=Undefined Tag·4=Tag Specified Without A Value·5=Value Is Incorrect·6=Incorrect Data Format For Value·9=CompID Problem·10=SendingTime Accuracy Problem·11=Invalid MsgType·13=Tag Appears More Than Once·14=Tag Specified Out Of Required Order·15=Repeating Group Fields Out Of Order·16=Incorrect NumInGroup Count For Repeating Group·99=Other |
| 58 | Text | Optional | Description of the error |
Reject (35=3) is the session-level reject defined by the FIX standard. OpenYield sends one when a received message breaks the FIX session rules: an invalid or undefined tag, a missing required tag, a tag without a value, an incorrect value or data format, a repeated or out-of-order tag, a wrong repeating group count, or an undefined MsgType. SessionRejectReason (373) gives the reason and, where it is known, RefTagID (371) gives the tag. Rejects should never appear in a production log but may occur during certification.
Message is “Business Message Reject” (35=j)
| Tag | Name | Required | Notes |
|---|---|---|---|
| 45 | RefSeqNum | Optional | Sequence number of the rejected message. Always sent by OpenYield |
| 372 | RefMsgType | Required | — |
| 380 | BusinessRejectReason | Required | 0=Other·3=Unsupported Message Type·5=Conditionally Required Field Missing |
| 58 | Text | Optional | — |
Business Message Reject (35=j) is the application-level reject defined by the FIX standard. OpenYield sends one when a message passes the session rules but cannot be processed, and the message has no reject of its own:
- BusinessRejectReason (380) 3, Unsupported Message Type: the message type is valid FIX, but OpenYield does not accept it on any session. Send each message only on the sessions this specification lists for it.
- BusinessRejectReason (380) 5, Conditionally Required Field Missing: the message lacks a field OpenYield needs, even where the FIX standard makes that field optional. For example, an order without SecurityID (48) or OrderQty (38) gets this reject.
A complete message that OpenYield cannot accept gets its own reject instead: an Execution Report with ExecType Rejected (150=8) and OrdStatus Rejected (39=8) for a new order, replace or cancel, or a Quote Status Report with QuoteStatus Rejected (297=5) for a quote.
A rejected message is not processed. OpenYield logs every Reject and Business Message Reject it sends or receives, and never rejects a Business Message Reject it receives. A high volume of malformed messages will slow the session and may be flagged as a denial-of-service (DoS) attempt, particularly on test servers and internet stunnel connections.