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
| Code | Description |
|---|---|
| 0 | Unknown order (order not found) |
| 1 | Broker/Exchange option |
| 2 | Unknown ClOrdID |
| 3 | Order already in Pending Cancel status |
| 4 | Unable to process Order Mass Cancel Request |
| 5 | OrigClOrdID does not match |
| 99 | Other |
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
- Check OrigClOrdID: Verify that tag 41 matches the ClOrdID (11) from the original NewOrderSingle
- Verify Order Exists: Ensure the original order was accepted and has an ExecutionReport
- Check Order Status: Orders already filled (39=2) or canceled (39=4) cannot be canceled again
- Match Side: The Side (54) in the cancel must match the original order's Side
- Review Cause Code: Check tag 434 (CxlRejReason) in the OrderCancelReject for specific error
- 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