developers:fixapi:cancelreject

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
developers:fixapi:cancelreject [2025/09/12 01:35] – ↷ Page moved and renamed from developers:fixapi.cancelreject to developers:fixapi:cancelreject chaddevelopers:fixapi:cancelreject [2025/09/12 02:10] (current) chad
Line 1: Line 1:
-===== Cancel Reject ===== +====== ORDER CANCEL REJECT [35=9] ======
-**Rejecting Attempts to Amend or Cancel Orders**+
  
-The **Order Cancel Reject** message (`MsgType=9`) is used by the T4 FIX API to reject failed attempts to: +The Order Cancel Reject message notifies clients when cancel or replace requests fail.
-  * Cancel an order +
-  * Replace an order+
  
-Cancel Rejects are generated when: +===== Rejection Scenarios ===== 
-  * A client-side **Order Cancel Request**, **Order Cancel Replace Request**, or **List Cancel Request** fails +  * Invalid cancel request 
-  * A cancel reject originates from non-T4-FIX-API applications (e.g., CTS front-end) – unsolicited Cancel Rejects+  Invalid cancel/replace request   
 +  * List cancel request failure 
 +  * Unsolicited rejections from non-FIX sources
  
-Applies to: +===== Request Identification ===== 
-  * Outright futures +  * **ClOrdID (11)** - Failed request ID 
-  * Futures options +  * **CxlRejResponseTo (434)** - Request type: 
-  Spreads +    1 = Cancel Request 
-  Multi-leg strategies+    2 = Cancel/Replace Request 
 +    * 3 = List Cancel Request
  
-----+===== Target Order Identification ===== 
 +  * **OrigClOrdID (41)** Original order's ClOrdID 
 +  * **OrderID (37)** T4-assigned order ID 
 +  * **ListID (66)** Batch order identifier (if applicable)
  
-=== Identifying the Rejected Cancel or Cancel Replace === +===== Message Specification =====
-* **ClOrdID** (`Tag 11`) identifies the failed cancel or cancel replace request   +
-* If request originated outside T4 FIX API – `ClOrdID` equals the order’s `OrderID` (`Tag 37`)   +
-* For **List Cancel Request** – `ListID` (`Tag 66`) identifies the rejected list cancel+
  
-----+**Message Direction:** T4 → Client
  
-=== Identifying the Target Order === +^ Tag ^ Field Name ^ Type ^ Req'd ^ Description ^ 
-* **OrigClOrdID** (`Tag 41`) identifies the order that could not be canceled or replaced   +| | **Message Header** | | Y | MsgType = 9 | 
-* **OrderID** (`Tag 37`) also uniquely identifies the target order   +| 1 | Account | String | O | Account code | 
-* If order was entered outside T4 FIX API – `OrigClOrdID` `OrderID`   +| 11 | ClOrdID | String | Y | Failed request ID | 
-* For **List Cancel Requests** – `ListID` (`Tag 66`) identifies the **New Order List** whose cancel was rejected+41 | OrigClOrdID | String | Y | Target order's ClOrdID | 
 +| 37 | OrderID | String | O | T4-assigned order ID | 
 +| 66 | ListID | String | O | Batch order ID | 
 +| 39 | OrdStatus | Char | Y | Current order status | 
 +| 434 | CxlRejResponseTo | Char | Y | 1=Cancel, 2=Replace, 3=List Cancel 
 +| 102 | CxlRejReason | Int | O | 1=Unknown order, 2=Broker option | 
 +| 58 | Text | String | O | Rejection details | 
 +| 60 | TransactTime | UTCTimestamp | O | Rejection time | 
 +| 1028 | ManualOrderIndicator | Boolean | O | Y=Manual, N=Automated | 
 +| | **Message Trailer** | | Y | |
  
-----+===== Sample Messages =====
  
-=== Message Dictionary === +**Note:** Pipe (|) used for readability. Actual FIX messages use SOH (ASCII 01delimiter.
-^ Tag  ^ Field Name             ^ Req'd ^ Comments                                                                                         ^ +
-**Standard Header** | Y       | MsgType = 9                                                                                             | +
-| 1    | Account                | N     | Account code to which the cancel reject pertains                                                  | +
-| 11   | ClOrdID                | Y     | Client-side ID of the cancel/cancel replace request that was rejected                             | +
-| 41   | OrigClOrdID            | Y     | Client-side ID of the order that could not be canceled or replaced                                | +
-| 66   | ListID                 | N     | Client-side ID of the New Order List (only for batch orders)                                       | +
-| 37   | OrderId                | N     | CTS-assigned order ID                                                                              | +
-| 39   | OrdStatus              | Y     | 0=New, 1=Partially Filled, 2=Filled, 3=Done For Day, 4=Canceled, 5=Replaced, 6=Pending Cancel, 7=Stopped, 8=Rejected, 9=Suspended, A=Pending New, B=Calculated, C=Expired, E=Pending Replace, X=Undetermined | +
-| 60   | TransactTime           | N     | Time (UTCcancel/cancel replace was rejected                                                      | +
-| 434  | CxlRejResponseTo       | Y     | 1=Order Cancel Request, 2=Order Cancel-Replace Request, 3=List Cancel Request                      | +
-| 102  | CxlRejReason           | N     | 1=Unknown order, 2=Broker option                                                                   | +
-| 58   | Text                   | N     | Free-form text                                                                                     | +
-| 1028 | ManualOrderIndicator   | N     | Y=Manual order, N=Automated                                                                        | +
-| **Standard Trailer** | Y      |                                                                                                        |+
  
-==== Sample Messages ==== +**Invalid Price in Cancel/Replace:**
- +
- +
-Cancel Rejection of a Cancel Replace Request with an invalid price+
 <code> <code>
- +8=FIX.4.2|9=350|35=9|49=T4|56=T4Example|50=T4FIX|52=20121212-21:35:28.098| 
-[FIXCANCELREPLACE] 34=435|49=T4Example|56=T4|50=TraderName|52=20121212-21:35:28.083|1=Account1|11=fr-634909233280833034|41=fn-634909233209540909|37=EDDF2612-A6E5-426D-A7A1-0925EBA836B5|48=CME_20121200_ESZ2|55=ES|207=CME_Eq|54=1|38=1|40=2|44=143001|59=0|167=FUT|21=1|60=20121212-21:35:28.083|204=0| +1=Account1|11=fr-634909233280833034|41=fn-634909233209540909| 
-[FIXCANCELREPLACE] +37=EDDF2612-A6E5-426D-A7A1-0925EBA836B5|39=0|434=2|102=2| 
- +58=CME:FIX field incorrect 'Illegal Price: '143001.0 contract 'ESZ2' (ticks in 25, CAB of 0)'| 
-[MsgSeqNum] 34 = 435 +60=20121212-21:35:49.172|1028=N|10=234|
-[SenderCompID] 49 = T4Example +
-[TargetCompID] 56 = T4 +
-[SenderSubID] 50 = TraderName +
-[SendingTime] 52 = 20121212-21:35:28.083 +
-[Account] 1 = Account1 +
-[ClOrdID] 11 = fr-634909233280833034 +
-[OrigClOrdID] 41 = fn-634909233209540909 +
-[OrderID] 37 = EDDF2612-A6E5-426D-A7A1-0925EBA836B5 +
-[SecurityID] 48 = CME_20121200_ESZ2 +
-[Symbol] 55 = ES +
-[SecurityExchange] 207 = CME_Eq +
-[Side] 54 = 1 (BUY) +
-[OrderQty] 38 = 1 +
-[OrdType] 40 = 2 (LIMIT) +
-[Price] 44 = 143001 +
-[TimeInForce] 59 = 0 (DAY) +
-[SecurityType] 167 = FUT (FUTURE) +
-[HandlInst] 21 = 1 (AUTOMATED_EXECUTION_ORDER_PRIVATE_NO_BROKER_INTERVENTION) +
-[TransactTime] 60 = 20121212-21:35:28.083 +
-[CustomerOrFirm] 204 = 0 (CUSTOMER) +
- +
-[fixcancelreject] 34=2566|49=T4|56=T4Example|50=T4FIX|52=20121212-21:35:28.098|1=Account1|37=EDDF2612-A6E5-426D-A7A1-0925EBA836B5|11=fr-634909233280833034|41=fn-634909233209540909|39=0|434=2|102=2|58=CME:FIX field incorrect 'Illegal Price: '143001.0 contract 'ESZ2' (ticks in 25, CAB of 0)'|60=20121212-21:35:49.172|1028=N| +
-[FIXCANCELREJECT] +
- +
-[MsgSeqNum] 34 = 2566 +
-[SenderCompID] 49 = T4 +
-[TargetCompID] 56 = T4Example +
-[SenderSubID] 50 = T4FIX +
-[SendingTime] 52 = 20121212-21:35:28.098 +
-[Account] 1 = Account1 +
-[OrderID] 37 = EDDF2612-A6E5-426D-A7A1-0925EBA836B5 +
-[ClOrdID] 11 = fr-634909233280833034 +
-[OrigClOrdID] 41 = fn-634909233209540909 +
-[OrdStatus] 39 = 0 (NEW) +
-[CxlRejResponseTo] 434 = 2 (ORDER_CANCEL_REPLACE_REQUEST) +
-[CxlRejReason] 102 = 2 (BROKER_OPTION) +
-[Text] 58 = CME:FIX field incorrect 'Illegal Price: '143001.0 contract 'ESZ2' (ticks in 25, CAB of 0)' +
-[TransactTime] 60 = 20121212-21:35:49.172 +
-[ManualOrderIndicator] 1028 = N (NO) +
 </code> </code>
  
-Cancel Rejection of a Cancel Request of a previously canceled order +**Unknown Order Cancel:**
 <code> <code>
-[FIXCANCEL] 34=439|49=T4Example|56=T4|50=TraderName|52=20121212-21:37:11.508|1=Account1|11=fc-634909234315082852|37=EDDF2612-A6E5-426D-A7A1-0925EBA836B5|41=fn-634909233209540909|48=CME_20121200_ESZ2|54=1|55=ES|207=CME_Eq|60=20121212-21:37:11.508|167=FUT| +8=FIX.4.2|9=250|35=9|49=T4|56=T4Example|50=T4FIX|52=20121212-21:37:11.508| 
-[FIXCANCEL] +1=Account1|11=fc-634909234315082852|41=fn-634909233209540909|37=NONE| 
- +39=8|434=1|102=1|58=Undetermined Order|60=20121212-21:37:11.508|1028=N|10=234|
-[MsgSeqNum] 34 = 439 +
-[SenderCompID] 49 = T4Example +
-[TargetCompID] 56 = T4 +
-[SenderSubID] 50 = TraderName +
-[SendingTime] 52 = 20121212-21:37:11.508 +
-[Account] 1 = Account1 +
-[ClOrdID] 11 = fc-634909234315082852 +
-[OrderID] 37 = EDDF2612-A6E5-426D-A7A1-0925EBA836B5 +
-[OrigClOrdID] 41 = fn-634909233209540909 +
-[SecurityID] 48 = CME_20121200_ESZ2 +
-[Side] 54 = 1 (BUY) +
-[Symbol] 55 = ES +
-[SecurityExchange] 207 = CME_Eq +
-[TransactTime] 60 = 20121212-21:37:11.508 +
-[SecurityType] 167 = FUT (FUTURE) +
- +
- +
-[fixcancelreject] 34=2571|49=T4|56=T4Example|50=T4FIX|52=20121212-21:37:11.508|1=Account1|37=NONE|11=fc-634909234315082852|41=fn-634909233209540909|39=8|434=1|102=1|58=Undetermined Order|60=20121212-21:37:11.508|1028=N| +
-[FIXCANCELREJECT] +
- +
-[MsgSeqNum] 34 2571 +
-[SenderCompID] 49 = T4 +
-[TargetCompID] 56 = T4Example +
-[SenderSubID] 50 = T4FIX +
-[SendingTime] 52 = 20121212-21:37:11.508 +
-[Account] 1 = Account1 +
-[OrderID] 37 = NONE +
-[ClOrdID] 11 = fc-634909234315082852 +
-[OrigClOrdID] 41 = fn-634909233209540909 +
-[OrdStatus] 39 = 8 (REJECTED) +
-[CxlRejResponseTo] 434 = 1 (ORDER_CANCEL_REQUEST) +
-[CxlRejReason] 102 = 1 (UNKNOWN_ORDER) +
-[Text] 58 = Undetermined Order +
-[TransactTime] 60 = 20121212-21:37:11.508 +
-[ManualOrderIndicator] 1028 = N (NO)+
 </code> </code>
  
-[[developers:legacy_fix_api|T4 FIX API Home]] +===== Notes ===== 
- +  * For non-FIX ordersOrigClOrdID = OrderID 
- +  * CxlRejReason provides standard rejection codes 
- +  * Text field contains exchange-specific rejection details
  • developers/fixapi/cancelreject.1757640937.txt.gz
  • Last modified: 2025/09/12 01:35
  • by chad