FIX Doctorsupport@fixdoctor.tech
FIX Knowledge Base

OrderCancelReject (35=9) – Causes and How to Fix Them

OrderCancelReject (35=9) indicates that a cancel request (35=F) or cancel/replace request (35=G) was rejected. Understanding the cause codes and common issues helps resolve cancel failures quickly.

Common Cause Codes

CodeDescription
0Unknown order (order not found)
1Broker/Exchange option
2Unknown ClOrdID
3Order already in Pending Cancel status
4Unable to process Order Mass Cancel Request
5OrigClOrdID does not match
99Other

Missing OrigClOrdID (Tag 41)

Problem: OrderCancelRequest (35=F) and OrderCancelReplaceRequest (35=G) require OrigClOrdID (41) to identify the original order being canceled or replaced.

8=FIX.4.4|9=123|35=F|11=CANCEL001|34=5|49=SENDER|52=20240101-10:00:00|56=TARGET|10=123|
❌ Missing: 41=OrigClOrdID

Fix: Include the original ClOrdID from the NewOrderSingle:41=ORDER12345

Correct Example:

8=FIX.4.4|9=123|35=F|11=CANCEL001|34=5|41=ORDER12345|49=SENDER|52=20240101-10:00:00|56=TARGET|10=123|
✓ Includes OrigClOrdID

Wrong Side

Problem: The Side (54) in the cancel request must match the Side of the original order.

Original Order: 35=D|11=ORDER123|54=1|... (Buy)
Cancel Request: 35=F|11=CANCEL001|41=ORDER123|54=2|... (Sell - WRONG)
❌ Side mismatch

Fix: Use the same Side as the original order: 54=1

Example Logs

Successful Cancel Flow:

1. NewOrderSingle: 35=D|11=ORDER123|54=1|55=AAPL|38=100|...
2. OrderCancelRequest: 35=F|11=CANCEL001|41=ORDER123|54=1|...
3. ExecutionReport: 35=8|150=4|39=4|... (Canceled)
✓ Cancel successful

Cancel Reject Example:

1. NewOrderSingle: 35=D|11=ORDER123|54=1|55=AAPL|38=100|...
2. OrderCancelRequest: 35=F|11=CANCEL001|41=ORDER999|54=1|... (Wrong OrigClOrdID)
3. OrderCancelReject: 35=9|434=2|58=Unknown ClOrdID|...
❌ Cancel rejected: Unknown ClOrdID

Troubleshooting

  1. Check OrigClOrdID: Verify that tag 41 matches the ClOrdID (11) from the original NewOrderSingle
  2. Verify Order Exists: Ensure the original order was accepted and has an ExecutionReport
  3. Check Order Status: Orders already filled (39=2) or canceled (39=4) cannot be canceled again
  4. Match Side: The Side (54) in the cancel must match the original order's Side
  5. Review Cause Code: Check tag 434 (CxlRejReason) in the OrderCancelReject for specific error
  6. Check Timing: Some exchanges reject cancels if the order is too close to execution

Analyze cancel rejects automatically: Upload your FIX logs to FIX Doctor to detect OrderCancelReject messages and identify the root causes.

Upload FIX Log