Order Cancel/Replace Request (MsgType = G, FIXML = OrderModificationRequest)

The Order Cancel/Replace Request (G) is used to change the parameters of an existing order.

Do not use this message to cancel the remaining quantity of an outstanding order, use the Cancel Request (F) message for this purpose.

Cancel/Replace will be used to change any valid attribute of an open order (i.e. reduce/increase quantity, change limit price, change instructions, etc.) Subject to agreement between counterparties, it can be used to re-open a filled order by increasing OrderQty (38)

An immediate response to this message is required. It is recommended that an ExecutionRpt (8) with ExecType (150) =Pending Replace be sent unless the Order Cancel/Replace Request (G) can be immediately accepted ( ExecutionRpt (8) with ExecType (150) =Replace) or rejected ( Order Cancel Reject (9) message).

The Cancel/Replace Request (G) will only be accepted if the order can successfully be pulled back from the exchange floor without executing. Requests which cannot be processed will be rejected using the Cancel Reject (9) message. The Cancel Reject (9) message should provide the ClOrdID (11) and OrigClOrdID (41) values which were specified on the Cancel/Replace Request (G) message for identification.

Note that while it is necessary for the ClOrdID (11) to change and be unique, the broker's OrderID (37) field does not necessarily have to change as a result of the Cancel/Replace request (G) .

The protocol supports the chaining of multiple cancel/replace requests, though trading counterparties may not support this functionality. Care should be taken if the order sender wishes to send a Cancel/Replace Request (G) when there is one or more cancel/replaces which have not been accepted or rejected - in general:

In the event that the order sender wants to chain order cancel/replaces rapidly then they should ensure that each replace request contains the full details of the order as they would now like it to be. For example if an attempt is made to change the limit price and then an immediate request to change the quantity is issued then if the desired behavior is that both the limit price and quantity should be changed then the second request should include the revised limit price (in case the first replace request is rejected )

All of the application-level fields in the original order should be retransmitted with the original values in the Order Cancel/Replace Request (G) , except the fields that are being changed. Any field may be changed with this message except those in the Instrument component block and limited changes to the Side (54) field (noted below), however, buy-side firms should note that sell-side firms may further restrict which fields they allow to change; hence bilateral agreement is required. For example, some sell-side firms may not allow fields such as Side (54) , FutSettDate (64) , etc. to change. Sell-side firms should validate the Order Cancel/Replace Request (G) to ensure that the client is not requesting a change for a field that the sell-side cannot change; in this case the sell-side should send a Cancel Reject (9) message with CxlRejReason (102) = 2 (Broker/Exchange Option).

When modifying ExecInst (18) values in a replacement order, it is necessary to re-declare all ExecInst (18) in the replacement order. ExecInst (18) values will not be carried forward from the original order to the replacement unless re-declared.

Tag Field Name FIXML Req'd Comments
<Standard Message Header> Y MsgType = G
37 OrderID OrderID N Unique identifier of most recent order as assigned by sell-side (broker, exchange, ECN).
<Parties> N
229 TradeOriginationDate TradeOriginationDate N
41 OrigClOrdID OrigClOrdID Y ClOrdID (11) of the previous non rejected order (NOT the initial order of the day) when canceling or replacing an order.
11 ClOrdID ClOrdID Y Unique identifier of replacement order as assigned by institution or by the intermediary with closest association with the investor. Note that this identifier will be used in ClOrdID (11) field of the Cancel Reject (9) message if the replacement request is rejected.
526 SecondaryClOrdID SecondaryClOrdID N
583 ClOrdLinkID ClOrdLinkID N
66 ListID ListID N Required for List Orders
586 OrigOrdModTime OrigOrdModTime N TransactTime (60) of the last state change that occurred to the original order
1 Account Account N
581 AccountType AccountType N
589 DayBookingInst DayBookingInst N
590 BookingUnit BookingUnit N
591 PreallocMethod PreallocMethod N
78 NoAllocs NoAllocs N Number of repeating groups for pre-trade allocation
=> 79 AllocAccount AllocAccount C Required if NoAllocs (78) > 0. Must be first field in repeating group.
=> 467 IndividualAllocID IndividualAllocID N
=> <Nested Parties> N Used for NestedPartyRole (538) =Clearing Firm
=> 80 AllocQty AllocQty N
63 SettlmntTyp Settlement N
64 FutSettDate FutSettDate C Takes precedence over SettlmntTyp (63) value and conditionally required/omitted for specific SettlmntTyp (63) values.
544 CashMargin CashMargin N
635 ClearingFeeIndicator ClearingFeeIndicator N
21 HandlInst HandInst Y
18 ExecInst ExecInst N Can contain multiple instructions, space delimited. Replacement order must be created with new parameters (i.e. original order values will not be brought forward to replacement order unless redefined within this message).
110 MinQty MinQty N
111 MaxFloor MaxFloor N
100 ExDestination ExDestination N
386 NoTradingSessions NoTradingSessions N Specifies the number of repeating TradingSessionIDs
=> 336 TradingSessionID TradingSessionID C Required if NoTradingSessions (386) is > 0.
=> 625 TradingSessionSubID TradingSessionSubID N
<Instrument> Y Must match original order
54 Side Side Y Should match original order's side, however, if bilaterally agreed to the following groups could potentially be interchanged: Buy and Buy Minus; Sell, Sell Plus, Sell Short, and Sell Short Exempt, Cross, Cross Short, and Cross Short Exempt
60 TransactTime TransactTime Y Time this order request was initiated/released by the trader or trading system.
465 QuantityType QuantityType N
<Order Qty Data> Y
40 OrdType OrdType Y
423 PriceType PriceType N
44 Price Price C Required for limit OrdTypes. For F/X orders, should be the "all-in" rate (spot rate adjusted for forward points). Can be used to specify a limit price for a pegged order, previously indicated, etc.
99 StopPx StopPx C Required for OrdType (40) = 'Stop' or OrdType (40) = 'Stop limit'.
<Spread Or Benchmark Curve Data> N
<Yield Data> N
211 PegDifference PegDifference N Amount (signed) added to the price of the peg
388 DiscretionInst DiscretionInst C Code to identify the price a DiscretionOffset (389) is related to and should be mathematically added to. Required if DiscretionOffset (389) is specified.
389 DiscretionOffset DiscretionOffset N Amount (signed) added to the "related to" price specified via DiscretionInst (388) .
376 ComplianceID ComplianceID N
377 SolicitedFlag SolicitedFlag N
15 Currency Currency N Must match original order.
59 TimeInForce OrderDuration N Absence of this field indicates Day order
168 EffectiveTime EffectiveTime N Can specify the time at which the order should be considered valid
432 ExpireDate ExpireDate C Conditionally required if TimeInForce (59) = GTD and ExpireTime (126) is not specified.
126 ExpireTime ExpireTime C Conditionally required if TimeInForce (59) = GTD and ExpireDate (432) is not specified.
427 GTBookingInst GTBookingInst N States whether executions are booked out or accumulated on a partially filled GT order
<Commission Data> N
528 OrderCapacity OrderCapacity N
529 OrderRestrictions OrderRestrictions N
582 CustOrderCapacity CustOrderCapacity N
47 Rule80A Rule80A N (deprecated) Must match original order
121 ForexReq ForexReq N Indicates that broker is requested to execute a Forex accommodation trade in conjunction with the security trade.
120 SettlCurrency SettlCurrency C Required if ForexReq (121) = Y.
58 Text Text N
354 EncodedTextLen EncodedTextLen C Must be set if EncodedText (355) field is specified and must immediately precede it.
355 EncodedText EncodedText C Encoded (non-ASCII characters) representation of the Text (58) field in the encoded format specified via the MessageEncoding (347) field.
193 FutSettDate2 FutSettDate2 N Can be used with OrdType (40) = "Forex - Swap" to specify the "value date" for the future portion of a F/X swap.
192 OrderQty2 OrderQty2 N Can be used with OrdType (40) = "Forex - Swap" to specify the order quantity for the future portion of a F/X swap.
640 Price2 Price2 N Can be used with OrdType (40) = "Forex - Swap" to specify the price for the future portion of a F/X swap.
77 PositionEffect PositionEffect N For use in derivatives omnibus accounting
203 CoveredOrUncovered CoveredOrUncovered N For use with derivatives, such as options
210 MaxShow MaxShow N
114 LocateReqd LocateReqd C Required for short sell orders
480 CancellationRights CancellationRights N For CIV - Optional
481 MoneyLaunderingStatus MoneyLaunderingStatus N For CIV - Optional
513 RegistID RegistID N Reference to Registration Instructions (o) message for this Order.
494 Designation Designation N Supplementary registration information for this Order
158 AccruedInterestRate AccruedInterestRate N Can be specified on the order for Fixed Income Municipals
159 AccruedInterestAmt AccruedInterestAmt N Can be specified on the order for Fixed Income Municipals
118 NetMoney NetMoney N Can be specified on the order for Fixed Income Municipals
<Standard Message Trailer> Y