Differences
This shows you the differences between two versions of the page.
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 chad | developers: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 | + | The Order Cancel Reject message |
- | * 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 | + | * Invalid cancel request |
- | * A cancel reject originates | + | |
+ | | ||
+ | * Unsolicited rejections | ||
- | 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/ |
+ | * 3 = List Cancel Request | ||
- | ---- | + | ===== Target Order Identification ===== |
+ | * **OrigClOrdID (41)** | ||
+ | * **OrderID (37)** | ||
+ | * **ListID (66)** | ||
- | === 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: |
- | === 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 | + | | 1 | Account | String | O | Account code | |
- | * If order was entered outside T4 FIX API – `OrigClOrdID` | + | | 11 | ClOrdID | String | Y | Failed request ID | |
- | * For **List Cancel | + | | 41 | OrigClOrdID | String | Y | Target |
+ | | 37 | OrderID | ||
+ | | 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 01) delimiter. |
- | ^ Tag ^ Field Name ^ Req'd ^ Comments | + | |
- | | **Standard Header** | Y | MsgType = 9 | | + | |
- | | 1 | Account | + | |
- | | 11 | ClOrdID | + | |
- | | 41 | OrigClOrdID | + | |
- | | 66 | ListID | + | |
- | | 37 | OrderId | + | |
- | | 39 | OrdStatus | + | |
- | | 60 | TransactTime | + | |
- | | 434 | CxlRejResponseTo | + | |
- | | 102 | CxlRejReason | + | |
- | | 58 | Text | N | Free-form text | | + | |
- | | 1028 | ManualOrderIndicator | + | |
- | | **Standard Trailer** | Y | | | + | |
- | ==== Sample Messages ==== | + | **Invalid Price in Cancel/Replace:** |
- | + | ||
- | + | ||
- | Cancel Rejection of a Cancel Replace | + | |
< | < | ||
- | + | 8=FIX.4.2|9=350|35=9|49=T4|56=T4Example|50=T4FIX|52=20121212-21: | |
- | [FIXCANCELREPLACE] 34=435|49=T4Example|56=T4|50=TraderName|52=20121212-21: | + | 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 ' | |
- | [MsgSeqNum] 34 = 435 | + | 60=20121212-21: |
- | [SenderCompID] 49 = T4Example | + | |
- | [TargetCompID] 56 = T4 | + | |
- | [SenderSubID] 50 = TraderName | + | |
- | [SendingTime] 52 = 20121212-21: | + | |
- | [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: | + | |
- | [CustomerOrFirm] 204 = 0 (CUSTOMER) | + | |
- | + | ||
- | [fixcancelreject] 34=2566|49=T4|56=T4Example|50=T4FIX|52=20121212-21: | + | |
- | [FIXCANCELREJECT] | + | |
- | + | ||
- | [MsgSeqNum] 34 = 2566 | + | |
- | [SenderCompID] 49 = T4 | + | |
- | [TargetCompID] 56 = T4Example | + | |
- | [SenderSubID] 50 = T4FIX | + | |
- | [SendingTime] 52 = 20121212-21: | + | |
- | [Account] 1 = Account1 | + | |
- | [OrderID] | + | |
- | [ClOrdID] 11 = fr-634909233280833034 | + | |
- | [OrigClOrdID] 41 = fn-634909233209540909 | + | |
- | [OrdStatus] | + | |
- | [CxlRejResponseTo] | + | |
- | [CxlRejReason] | + | |
- | [Text] | + | |
- | [TransactTime] | + | |
- | [ManualOrderIndicator] | + | |
</ | </ | ||
- | Cancel | + | **Unknown Order Cancel:** |
< | < | ||
- | [FIXCANCEL] 34=439|49=T4Example|56=T4|50=TraderName|52=20121212-21: | + | 8=FIX.4.2|9=250|35=9|49=T4|56=T4Example|50=T4FIX|52=20121212-21: |
- | [FIXCANCEL] | + | 1=Account1|11=fc-634909234315082852|41=fn-634909233209540909|37=NONE| |
- | + | 39=8|434=1|102=1|58=Undetermined Order|60=20121212-21: | |
- | [MsgSeqNum] 34 = 439 | + | |
- | [SenderCompID] 49 = T4Example | + | |
- | [TargetCompID] 56 = T4 | + | |
- | [SenderSubID] 50 = TraderName | + | |
- | [SendingTime] 52 = 20121212-21: | + | |
- | [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: | + | |
- | [SecurityType] 167 = FUT (FUTURE) | + | |
- | + | ||
- | + | ||
- | [fixcancelreject] 34=2571|49=T4|56=T4Example|50=T4FIX|52=20121212-21: | + | |
- | [FIXCANCELREJECT] | + | |
- | + | ||
- | [MsgSeqNum] 34 = 2571 | + | |
- | [SenderCompID] 49 = T4 | + | |
- | [TargetCompID] 56 = T4Example | + | |
- | [SenderSubID] 50 = T4FIX | + | |
- | [SendingTime] 52 = 20121212-21: | + | |
- | [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: | + | |
- | [ManualOrderIndicator] 1028 = N (NO) | + | |
</ | </ | ||
- | [[developers:legacy_fix_api|T4 FIX API Home]] | + | ===== Notes ===== |
- | + | * For non-FIX orders: OrigClOrdID = OrderID | |
- | + | * CxlRejReason provides standard rejection codes | |
- | + | * Text field contains exchange-specific rejection details |