GTT (Good Till Triggered) order on Zerodha
The GTT (Good Till Triggered) is a proprietary order management feature introduced by Zerodha that allows traders and investors to set conditional buy or sell orders that remain active for up to one year, independent of daily market sessions. Unlike standard orders placed on Kite, which are cancelled at the end of each trading day, a GTT order persists in Zerodha’s own infrastructure until a user-defined price condition is met, at which point Zerodha submits a regular limit order to the exchange on the trader’s behalf.
GTT is a flagship Zerodha feature designed for long-term investors who want to set systematic buy targets and stop-loss levels without needing to log in to Kite every day. It addresses one of the core limitations of standard exchange order types, the fact that DAY orders expire at session close and must be re-entered daily.
Background and rationale
Before GTT, a long-term investor who wanted to buy a stock at a price 20% below the current market price had two choices: place a buy limit order every day (which required daily manual effort) or place a [GTT-equivalent order using external tools or alerts], none of which would automatically execute. Zerodha launched GTT in 2019 as a platform-level solution to this problem.
The feature is not an exchange-recognised order type. GTT orders are stored on Zerodha’s servers. When the trigger condition is satisfied (based on the last traded price on the exchange), Zerodha’s backend automatically places a regular limit order to the exchange. The order placed at the exchange is a standard limit order, subject to all normal exchange rules.
How a GTT order works, step by step
- The trader opens the GTT interface on Kite (accessible from the instrument’s detail page or from the dedicated GTT orders list).
- The trader selects the GTT type: single trigger (one condition) or OCO (One Cancels Other) (two conditions, one target, one stop loss).
- The trader enters the trigger price and the order details (quantity, limit price).
- Zerodha saves the GTT on its servers. It is visible in the GTT orders list on Kite.
- Zerodha’s engine monitors the last traded price on the exchange throughout each trading session. The GTT remains dormant between sessions.
- When the LTP satisfies the trigger condition, Zerodha’s server places a limit order at the specified limit price to the exchange.
- The exchange processes the limit order like any other limit order: it fills if the market allows, rests in the order book if not.
- If the limit order fills, the GTT is marked as “triggered and executed.” If the limit order partially fills or fails to fill (for example, because the price moved past the limit), the GTT is marked “triggered” and the trader must take manual action.
GTT order types
Single trigger GTT
A single trigger GTT has one condition: when the LTP reaches a specified level, one limit order is placed. This can be used for:
- Buy target: Set a buy trigger below the current market price to accumulate a stock at a lower level.
- Stop-loss exit: Set a sell trigger below the current price on a position already held.
- Breakout entry: Set a buy trigger above the current price to enter on a momentum breakout (though this is more commonly done intraday with standard order types).
OCO (One Cancels Other) GTT
The OCO variant allows the trader to set two simultaneous trigger conditions:
- Upper trigger: Typically a profit target (sell trigger above the current price).
- Lower trigger: Typically a stop-loss (sell trigger below the current price).
When either condition fires, Zerodha places the corresponding limit order. Critically, if one leg of the OCO fires and its limit order is successfully placed, the other leg is automatically cancelled. This prevents both the target and the stop-loss from firing simultaneously.
A common OCO configuration for a long position:
- Current price: Rs 100
- Target (upper trigger): Rs 120, limit sell at Rs 119
- Stop-loss (lower trigger): Rs 88, limit sell at Rs 87
If the stock rises to Rs 120, Zerodha places a sell limit at Rs 119 and cancels the Rs 88 stop. If the stock falls to Rs 88 first, Zerodha places a sell limit at Rs 87 and cancels the Rs 120 target.
GTT validity and limits
Duration. GTT orders remain active for up to one year from the date of creation. After one year, the GTT expires automatically and the trader must recreate it. Zerodha sends notifications (email and app) as the expiry approaches.
Maximum GTT orders per account. Zerodha imposes a limit on the number of active GTT orders per account. As of the most recent published guidance, the limit is 50 active GTT orders per account at any time. Traders managing large portfolios with many individual stop-loss levels may find this constraining.
Instruments supported. GTT is available for:
- NSE and BSE equity (cash segment), both CNC (delivery) and MIS (intraday) product codes.
- NSE and BSE equity F&O.
- GTT is not available for currency derivatives or commodity derivatives on MCX.
Product codes. GTT orders are placed with the CNC product code for delivery positions. MIS is available for intraday GTT triggers, though this is less commonly used given that MIS positions are squared off intraday anyway.
Trigger validation and monitoring
Zerodha’s GTT engine checks the last traded price against trigger conditions during market hours only. The system does not monitor prices during pre-market, post-market, or between sessions. This means:
- A GTT trigger can only fire during normal trading hours (9:15 AM – 3:30 PM for NSE equity).
- If a stock gaps down past a sell trigger at open, the trigger will fire at the first trade at or below the trigger price during the continuous session.
- GTT does not fire based on after-hours data or indicative prices from the pre-open session.
The trigger uses the LTP (last traded price), not the bid or ask. A brief dip to the trigger price on a single small trade is sufficient to fire the GTT.
What happens when a GTT fires
When the trigger condition is satisfied, Zerodha’s server places a limit order to the exchange within seconds. The trader receives a notification on the Kite app and via email.
The resulting limit order on the exchange is a normal DAY limit order. If the market has moved significantly past the limit price, the order may not fill. For example, a sell GTT with trigger Rs 88 and limit Rs 87 may fire but the stock may already be trading at Rs 80, leaving the sell limit at Rs 87 unexecuted (since it is priced above the market with no buyers at Rs 87).
In this situation, the GTT is marked as “triggered” with the limit order placed but unfilled. The trader must manually close the position or modify the limit order.
GTT versus daily SL orders
| Dimension | GTT | Daily SL order |
|---|---|---|
| Duration | Up to 1 year | Single trading day only |
| Exchange involvement | Zerodha stores; exchange sees only limit order when fired | Exchange stores pending SL |
| Segments supported | Equity cash, F&O | All segments including currency, commodity |
| OCO capability | Yes (GTT OCO) | No |
| Limit on count | 50 active per account | Exchange order limits |
| Monitoring | Zerodha server, market hours only | Exchange, market hours only |
| Reliability | Depends on Zerodha servers | Depends on exchange infrastructure |
GTT for long-term systematic investing
One of the most popular use cases for GTT among Zerodha’s retail investor base is systematic accumulation: setting buy GTTs at various lower price levels for high-conviction stocks and waiting for the market to offer those prices without the need for daily monitoring.
For example, an investor who tracks a stock trading at Rs 1,000 and wants to buy more at Rs 850 and Rs 750 can place two single-trigger GTTs with a one-year validity. If the stock corrects to Rs 850 within a year, the first GTT fires. If it corrects to Rs 750, the second fires. This requires no daily action.
Combined with the CNC product code, GTT-triggered purchases are settled as delivery trades, with shares credited to the demat account on T+1 settlement.
Charges and brokerage
GTT itself carries no additional charge from Zerodha. Brokerage applies only when the GTT fires and the resulting limit order is executed. For equity delivery trades (CNC), Zerodha charges zero brokerage. For equity intraday (MIS) and F&O, the standard Rs 20 flat fee per executed order applies. STT, stamp duty, exchange transaction charges, and GST apply as with any executed trade.
Risk factors and limitations
Server-side storage. GTT orders are on Zerodha’s servers, not on the exchange. A technical failure at Zerodha, server downtime, a software bug, or a network outage, could prevent a GTT from firing even if the market reaches the trigger. Traders relying on GTT as their sole stop-loss mechanism for large positions should be aware of this systemic risk.
One-year expiry. GTT orders expire after one year and must be manually renewed. An investor who places a GTT and forgets about it will find it silently expired. Zerodha sends reminder notifications, but the renewal obligation rests with the trader.
Limit order non-fill after trigger. As described above, a gap move past both trigger and limit price will result in an unfired limit order. Unlike an SL-M order, which would fill at market, a GTT always places a limit order, which may not fill if the market has moved past the limit.
50-order cap. The 50-order cap can be limiting for traders who want individual stop-losses on a portfolio of 50+ positions. Each OCO GTT counts as one GTT, so an OCO set covers both target and stop simultaneously.
No partial fill handling. If the limit order placed by a GTT is partially filled, the GTT itself is considered triggered. The partially unfilled quantity requires manual follow-up; there is no mechanism for the GTT to re-submit for the remaining quantity.
Corporate actions. GTT orders are not automatically adjusted for corporate actions such as stock splits, bonuses, or rights issues. A sell GTT at Rs 200 on a stock that declares a 2:1 bonus split will fire at Rs 200 post-split, which is effectively twice the pre-split target. Traders should review and adjust GTT trigger levels after corporate actions.
Regulatory context
GTT is a broker-level facility, not an exchange-recognised order type. SEBI’s regulations on intermediary obligations require brokers to clearly disclose the risks of conditional order services to clients. Zerodha’s GTT service is covered under its standard client-broker agreement and terms of service. The exchange receives only the final limit order when triggered; SEBI circular requirements for order transparency apply to that limit order, not to the GTT mechanism itself.
Comparison with GTT-equivalent features on other brokers
Several Indian brokers offer similar features, Groww’s “Auto Trigger,” Angel One’s “Smart Orders,” and Upstox’s “Trigger Orders”, all following the same broker-side storage approach. The functional differences between these implementations are primarily in the maximum order count, the validity period, and the instruments supported.
References
- Zerodha support article: “What is GTT (Good Till Triggered)?”, support.zerodha.com/category/trading-and-markets/gtt.
- Zerodha GTT product page, zerodha.com/feature/gtt.
- SEBI circular on broker client agreement obligations, SEBI/HO/MIRSD/2020 series.
- NSE circular on trading member obligations regarding conditional order services, NSE/CMPT/2020 series.
- Zerodha blog: “Introducing GTT, Good Till Triggered orders”, zerodha.com/z-connect.
- SEBI investor protection circular, SEBI/HO/IMD/2021 series.