How to place a buy GTT OCO order on Zerodha
A GTT OCO (One Cancels the Other) order on Zerodha Kite is a single Good Till Triggered order that holds two trigger conditions on one position at the same time, an upper trigger that is usually a profit target and a lower trigger that is usually a stop-loss, and cancels the second leg the instant the first one fires. It lets a holder set both an exit-up and an exit-down level in one instruction and walk away, without deciding in advance which one the market will reach first.
The most common OCO is a sell-side pair on a held long position: a target sell above the current price and a stop-loss sell below it. Zerodha also permits a buy-side OCO, but only on F&O contracts, not on equity cash. This guide covers the OCO setup step by step on both the Kite app and Kite web, the trigger-and-limit logic for each leg, and the rules that govern OCO on derivatives.
Conflict-of-interest disclosure. This guide is published by the WebNotes Editorial Team for informational purposes and is written independently. WebNotes operates a Zerodha account-opening referral programme, disclosed on the pages that carry the referral link; this guide does not carry it and earns no referral commission on the procedure described here.
What OCO does and when to use it
A single GTT carries one trigger and one limit order. OCO carries two. The two triggers are linked: when either one fires and its limit order reaches the exchange, the other is cancelled automatically. That link is the point of OCO. On a long position you want protection on both sides at once, a target to book profit and a stop-loss to cap the loss, but you do not want both orders live at the exchange where a whipsaw could fill one and then the other. OCO solves this by letting only one leg ever reach the exchange.
Use OCO when you hold a position and want a target and a stop-loss in place together. Use a single GTT when you want only one of the two, for example a buy-on-dip with no upper leg, or a lone stop-loss.
Sell-side OCO on a held equity position
This is the standard case. You own the shares and want to exit either at a target above or at a stop below. Both legs are sell orders. A worked layout on a stock trading at Rs 500:
- Upper trigger (target sell): trigger Rs 560, limit Rs 558. When the last traded price touches Rs 560, Zerodha releases a sell limit at Rs 558.
- Lower trigger (stop-loss sell): trigger Rs 460, limit Rs 457. When the last traded price touches Rs 460, Zerodha releases a sell limit at Rs 457.
If the stock rises to Rs 560 first, the target leg fires and the stop-loss leg is cancelled. If it falls to Rs 460 first, the stop-loss leg fires and the target is cancelled. Both legs carry the same quantity because they sit on the same holding; Kite enforces this so you cannot accidentally arm a target for more shares than the stop covers.
Buy-side OCO on F&O
Zerodha permits a buy GTT OCO only on F&O contracts, not on equity cash. The two triggers on a buy-side OCO sit on either side of the price, and one fires the buy while cancelling the other. For index futures and options in a GTT OCO, only the NRML order type is allowed, because GTT itself supports only MTF, CNC and NRML product types and never MIS . That rules out an intraday OCO on derivatives. The GTT for F&O reference covers the derivative-specific rules in full, including the physical-delivery and execution-range cautions that come with a triggered F&O order.
Step-by-step procedure
The numbered box above gives the sequence for both surfaces. The detail below expands each leg.
1. Open the instrument and start a GTT
On the app, tap the scrip, open its order window and tap the GTT tab. On web, click the scrip’s three-dot or More menu and choose Create GTT, or open the order window and select GTT.
2. Select OCO
Tap or click OCO rather than Single. The ticket changes to show two legs, an upper trigger block and a lower trigger block, each with its own trigger price and limit price field.
3. Set the upper trigger (target)
Enter the upper trigger price above the current last traded price. Enter the limit price for that leg. On a sell target, place the limit slightly below the trigger so the released sell limit is competitive when the price reaches it.
4. Set the lower trigger (stop-loss)
Enter the lower trigger price below the current last traded price. Enter its limit price. On a sell stop-loss, place the limit slightly below the trigger; the further below, the more likely it fills if the price gaps down through the trigger, at the cost of a worse exit price.
5. Enter the quantity
Enter the quantity once. Both legs use the same number because they act on the same position. There is no way to set different quantities for the target and the stop in an OCO; if you want different sizes you need two separate single GTTs instead.
6. Create the OCO GTT
Review the two-leg summary, the trigger prices, the limit prices and the quantity. Slide CREATE GTT on the app or click Place on web. The OCO appears under Orders, then GTT, with status Active, counting as one GTT against your per-account cap rather than two.
7. Let one leg cancel the other
When the last traded price reaches either trigger during market hours, Zerodha releases that leg’s limit order to the exchange and cancels the other leg in the same step. You receive an app and email notification. If the released limit order fills, the GTT is marked triggered and executed. If a gap leaves it unfilled, the GTT is marked triggered and you must act manually; see why a GTT triggered but did not execute .
OCO counts as one GTT
An OCO occupies one slot against the per-account active-GTT cap, not two, even though it carries two triggers. Zerodha states the cap on its GTT support page, given as up to 500 active GTTs as of June 2026. Bracketing a portfolio with OCO pairs is therefore more economical against the cap than arming separate target and stop-loss single GTTs on every position.
Why OCO does not guarantee both protections fill
OCO guarantees only that one leg reaches the exchange, not that it fills. Each leg releases a limit order, not a market order. On a fast gap down through the stop-loss trigger, the released sell limit can rest above the market and stay unfilled, while the target leg is already cancelled, leaving the position exposed. This is the same limit-order risk that affects every GTT; OCO does not remove it. Traders who need a fill on the stop at any price use a live SL-M order during the session instead, accepting that it lasts only one day.
See also
- GTT order on Zerodha
- How to place a GTT order on Kite
- How to place a GTT on the Kite mobile app
- How to modify a GTT on Kite
- How to delete a GTT on Kite
- How to find your GTT orders on Kite
- Why a GTT triggered but did not execute
- Why a buy GTT was rejected
- How to fix a rejected sell GTT
- GTT for F&O on Zerodha
- GTT stop-loss when buying options
- Kite by Zerodha
- Zerodha
- CNC product code
- MIS product code
- NRML product code
- Limit order on Kite
- SL order on Kite
- SL-M order on Kite
- Trigger price versus limit price
- How to place an SL order on Kite
- How to place a limit order on Kite
- Order validity types
- Cover order on Zerodha
- Zerodha bracket order discontinuation
External references
- Zerodha support: How to place a buy GTT OCO order
- Zerodha support: How can I use the GTT feature?
- Zerodha support: What is the Good Till Triggered (GTT) feature?
- Zerodha GTT terms and conditions
- Zerodha Z-Connect: Introducing GTT, Good Till Triggered orders
References
- Zerodha support, How to place a buy GTT OCO order (as of 21 June 2026).
- Zerodha support, How can I use the GTT feature? (as of 21 June 2026).
- Zerodha support, What is the Good Till Triggered (GTT) feature? (as of 21 June 2026).
- Zerodha GTT terms and conditions, zerodha.com/tos/gtt (as of 21 June 2026).