ZagTrader

Order and cancel rejects

Business Message Reject (35=j): BusinessRejectReason (380) codes

The message passed session validation, but the application could not process it and there is no more specific reject message for that type. The counterparty answers with Business Message Reject (35=j), a reason in BusinessRejectReason (380) and the rejected type in RefMsgType (372).

What it means

Business Message Reject exists from FIX 4.2. It is used for application-level problems such as an unsupported message type, an application that is down, or a missing conditionally required field.

Messages with their own reject path do not use it: a rejected New Order Single gets an Execution Report with 39=8, a rejected cancel gets an Order Cancel Reject.

RefSeqNum (45) can carry the rejected message's sequence number and BusinessRejectRefID (379) the business ID it carried, such as the ClOrdID.

Common causes

  • 380=3 Unsupported message type: the counterparty does not handle this message, for example a Mass Cancel or a Quote Request on an order-only session.
  • 380=4 Application not available: the back end behind the FIX gateway is down.
  • 380=5 Conditionally required field missing: a field required by a rule, such as Price on a limit order.
  • 380=6 Not authorized (FIX 4.3 and later): the session is not entitled to this message or instrument.
  • 380=1 Unknown ID and 380=2 Unknown security: a referenced ID or instrument does not exist.

How to fix it

On the side that sent the message

  • Read BusinessRejectReason (380) and Text (58).
  • For 380=3, check the counterparty's rules of engagement for the supported message types.
  • For 380=4, retry later or call the counterparty: their gateway is up but the service behind it is not.

On the side that rejected it

Example

A Trade Capture Report (35=AE) sent on an order-routing session that does not support it.

  1. 1. Sell side: Trade Capture Report

    8=FIX.4.4|9=143|35=AE|49=SELLSIDE|56=BUYSIDE|34=1300|52=20261020-16:05:00.000|571=TR-0002|570=N|55=MSFT|32=1000|31=187.50|75=20261020|60=20261020-16:05:00.000|10=230|
  2. 2. Buy side: Business Message Reject with 380=3

    8=FIX.4.4|9=109|35=j|49=BUYSIDE|56=SELLSIDE|34=220|52=20261020-16:05:00.002|45=1300|372=AE|380=3|58=Unsupported message type|10=010|

SOH (0x01) is shown as |. BodyLength (9) and CheckSum (10) are calculated as if every | were SOH.

Open this example in the parser

Questions

Session Reject (35=3) or Business Message Reject (35=j)?
Session Reject is for messages that break the FIX rules: missing required tags, bad formats, wrong CompIDs. Business Message Reject is for valid messages that the application cannot act on.

Reference

Related errors

All FIX errors · FIX guides