Why a GTT triggered but did not execute on Zerodha
A GTT (Good Till Triggered) order on Zerodha can trigger and still not execute because the trigger does not place a market order; it releases a limit order at your chosen limit price, and that limit order fills only if the market offers a matching price. When the last traded price has already moved past the limit, when the account lacks the funds or margin the released order needs, or when a circuit locks the stock, the order rests unfilled or is rejected, and the GTT is marked triggered but not executed.
This is the single most common point of confusion with GTT. The status “triggered” confirms only that the price condition was met and Zerodha sent an order to the exchange. It does not confirm a fill. This article sets out exactly what message the status shows, why each cause produces a no-fill, and how to resolve and avoid it. The GTT reference article covers the product as a whole; this page isolates the trigger-without-execution case.
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 matter described here.
What the status means
When a GTT fires, Zerodha’s server places a regular limit order at the exchange on your behalf and the GTT moves to status Triggered. If the exchange fills that limit order, the GTT becomes Triggered and executed. If the order is rejected or rests unfilled and the day ends, the GTT stays at Triggered with no execution against it. The trigger is the condition; the limit order is the action; the fill is a separate event the exchange controls. A GTT that triggered without executing has done two of those three and stopped at the third.
A GTT releases a limit order, not a market order
Every GTT, single or OCO, target or stop-loss, releases a limit order when it fires. The trigger decides when the order goes out; the limit price decides the worst price it will accept. A limit sell at Rs 87 will not sell below Rs 87; a limit buy at Rs 452 will not buy above Rs 452. If the market is not offering a price within that limit at the moment the order arrives, the order rests in the order book waiting, and may never fill that day. This is by design and is the root of most trigger-without-execution cases. A market order would fill at whatever price is available; a GTT never sends one.
Cause one: the price gapped or ran past the limit
The dominant reason. Consider a sell GTT with trigger Rs 88 and limit Rs 87 on a stock that closes at Rs 90 and opens the next day at Rs 80 on bad news. The trigger condition, last traded price at or below Rs 88, is satisfied at the open, so Zerodha releases the sell limit at Rs 87. But the stock is already trading at Rs 80, far below Rs 87, and no buyer will pay Rs 87 for it. The sell limit rests above the market and does not fill. The GTT shows triggered; the position is not sold.
The same happens to a buy GTT in a fast move up: a buy limit at Rs 452 released after the price has jumped to Rs 470 finds no seller at Rs 452. The wider the gap between the trigger and the actual market at fire time, the more likely the limit order sits idle. Gap-driven no-fills cluster around results announcements, news events and the open after a heavy overnight move.
Cause two: not enough funds or margin
A GTT can be created without funds in the account, but the released order needs them. When a buy GTT fires, the exchange checks for the funds or margin the buy requires at that instant. If idle cash was swept back to your bank overnight, or you spent it on other trades, the account can be short, and the exchange rejects the released order outright. Zerodha states plainly that a buy GTT rejected for insufficient funds is not retried when money later arrives: the order will not be placed automatically once funds are available, and a new GTT must be created. The same applies on the sell side if the shares are no longer in the demat account, for example sold or pledged after the GTT was set; the released sell is rejected for short holding.
Cause three: a circuit or trading halt
If the stock is locked at its upper or lower circuit limit , trades clear in one direction only or not at all. A released sell limit on a stock locked at the lower circuit finds no buyers, because everyone is selling; the order rests unfilled until the circuit releases or the day ends. A trading halt, surveillance freeze or a trade-to-trade settlement restriction can produce the same outcome, the trigger fires but the released order cannot clear in the prevailing market state.
Cause four: the released order’s own rejection grounds
Once released, the limit order is an ordinary exchange order and is subject to every ordinary rejection ground. It can hit the price band if the limit lies outside the day’s permissible range, fail an RMS check, or be blocked by a freeze quantity cap if the GTT quantity exceeds the exchange’s per-order freeze limit. In these cases the GTT triggered, the order was sent, and the exchange declined it. The rejection reason on the released order, visible in the order book for that day, names the specific cause.
Why the order vanishes the next day
A triggered GTT that does not fill leaves behind a CNC limit order with Day validity for the remainder of that session. At end of day the exchange treats it like any other unfilled Day order and cancels it. That is why a trader looking for the failed order the next morning cannot find it: it was a one-day order that lapsed, not a standing order that persists. The GTT itself does not revive; the standing instruction ended when it triggered.
No automatic retry
This is the rule most worth internalising. A GTT fires once. Whether it is rejected for funds, left unfilled by a gap, or blocked by a circuit, it does not try again on a later day. Zerodha confirms that an order which triggered but did not execute must be placed again. There is no queue, no second attempt, no resurrection when conditions improve. If you still want the trade, you create a new GTT.
How to make execution more likely
The lever is the limit price. The further the limit sits from the trigger on the executable side, the more room the released order has to fill through a gap.
| Side | Trigger versus limit | Effect |
|---|---|---|
| Buy GTT | Limit set above the trigger | Buys up to the limit; a wider gap absorbs an upward jump |
| Sell GTT | Limit set below the trigger | Sells down to the limit; a wider gap absorbs a downward gap |
Setting a buy limit well above the trigger makes the released order behave closer to a market order while keeping a worst-price cap, so it fills through a fast move instead of resting above it. The trade-off is a worse fill price in a calm market. For a stop-loss that must exit at any price, a live SL-M order during the session is the alternative, accepting that it lasts only one day, since GTT always sends a limit and never a market order.
Resolution checklist
- Read the released order’s rejection reason in that day’s order book if it was rejected; it names funds, holding, price band, RMS or freeze quantity.
- If it was a funds rejection, add funds or keep a buffer so cash is not swept before the trigger can realistically hit, then recreate the GTT.
- If it was a gap no-fill, decide whether you still want the trade at the current price; the old GTT is gone and will not retry.
- Recreate the GTT with a wider limit-to-trigger gap if you want a higher fill probability next time.
- For a stop you cannot afford to miss, hold a live SL-M during the session rather than relying on a GTT limit.
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 place a buy GTT OCO order
- How to modify a GTT on Kite
- How to diagnose a GTT that did not trigger
- Why a GTT did not trigger even though conditions were met
- 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
- Limit order on Kite
- Market order on Kite
- SL order on Kite
- SL-M order on Kite
- Trigger price versus limit price
- Circuit limits and price bands
- How to fix a price band rejection on Zerodha
- How to fix an RMS rejection on Zerodha
- How to fix a freeze quantity rejection
- Trade-to-trade stocks on Zerodha
- CNC product code
- Order validity types
External references
- Zerodha support: Why was my GTT order triggered but not executed?
- Zerodha support: Why can’t I see my GTT order after it triggered but was not executed?
- Zerodha support: Why was my buy GTT order rejected?
- Zerodha support: What is the Good Till Triggered (GTT) feature?
- Zerodha GTT terms and conditions
References
- Zerodha support, Why was my GTT order triggered but not executed? (as of 21 June 2026).
- Zerodha support, Why can’t I see my GTT order after it triggered but was not executed till EOD? (as of 21 June 2026).
- Zerodha support, Why was my buy GTT order rejected? (as of 21 June 2026).
- Zerodha GTT terms and conditions, zerodha.com/tos/gtt (as of 21 June 2026).