Reject and Business Message Reject

Message is “Reject” (35=3)

bothbothTRMDOBRQDC
TagNameRequiredNotes
45RefSeqNumRequiredSequence number of the rejected message
371RefTagIDOptionalTag that caused the reject, where known
372RefMsgTypeOptional—
373SessionRejectReasonOptional0=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
58TextOptionalDescription 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)

bothbothTRMDOBRQDC
TagNameRequiredNotes
45RefSeqNumOptionalSequence number of the rejected message. Always sent by OpenYield
372RefMsgTypeRequired—
380BusinessRejectReasonRequired0=Other·3=Unsupported Message Type·5=Conditionally Required Field Missing
58TextOptional—

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.