Why a limit order is not executing
A limit order can stay pending on Kite even when the last traded price touches or moves through your limit, because a trade printing at your price does not mean there was volume left to fill your order. Exchanges match by price-time priority: among all orders resting at the same price, the earliest one fills first, and the opposite-side quantity can be exhausted by the orders ahead of you before it reaches yours. Your order can watch the price trade at its level and still not execute.
This is the inverse of the better-than-limit fill, and it confuses traders just as often. The LTP ticks to Rs 100, your buy limit at Rs 100 is sitting right there, and nothing happens. The order was not lost and Kite did not fail. The price traded at Rs 100 for some quantity, that quantity went to buyers who were ahead of you in the queue, and your order is still waiting behind them. The LTP is a record that a trade happened, not a guarantee that the book reached you.
This article explains why a limit order does not execute despite a matching LTP: the queue mechanics of price-time priority, why a single print can pass your order, how partial fills leave a remainder pending, and how illiquidity makes all of this worse. The opposite case, why a limit fills at a better price than you set, is in Why a limit order can execute at a better price .
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 from the procedure described here.
Price-time priority is the reason
Exchanges fill orders by price-time priority, a first-come, first-served rule applied within each price level. Price comes first: better-priced orders are matched before worse-priced ones. Among orders at the same price, the exchange stamps each with an arrival timestamp and processes them in chronological order. The order placed earliest at a given price sits at the front of the queue; later orders line up behind it.
Zerodha’s support documentation puts it directly: the exchange assigns a timestamp that determines your position in the queue, and when many traders want to trade at the same price, it creates a queue and processes the orders in chronological order. So when the price reaches your limit, the orders that were placed before yours at that price are filled first. If the available quantity on the other side runs out before it reaches your position, your order stays pending even though the price touched your level. You did nothing wrong; you were simply not first in line. The same priority rule, viewed from the other direction, gives you a better fill when you cross the spread, as covered in Why a limit order can execute at a better price .
A touched LTP is not available volume
The last traded price is the price of the most recent trade, for whatever quantity that trade was. It is a single data point about the past, not a statement about how much volume is available now. A scrip can print at Rs 100 on a trade of ten shares while a thousand shares of buy orders sit queued at Rs 100. That one print moves the LTP to Rs 100 and tells you nothing about whether your order is next.
This is why watching the LTP touch your limit is misleading. The tick confirms a trade occurred at that price; it does not confirm there was enough opposite-side quantity to clear the queue down to your order. To see whether your order has a realistic chance, the order book and market depth matter more than the LTP: they show how much quantity is resting at and around your price, and roughly how deep the queue ahead of you is. A single small print against a thick queue is the textbook case of a limit order that does not fill despite a matching LTP.
Partial fills leave a remainder
A limit order does not have to fill all or nothing. When the opposite side has less quantity available at your price than your order size, the matching engine fills what it can and leaves the rest pending. You see a partial fill: part of your quantity is executed and recorded, and the remaining quantity stays in the book at your limit, waiting for fresh opposite-side orders at that price.
This often reads as a failure when it is normal queue behaviour. You place a buy limit for 500 shares at Rs 100, 200 shares are available there, you get 200, and 300 stay pending. The price may then move away, leaving the 300 unfilled for the rest of the session. The remainder behaves like any resting limit: it holds its place in the time queue at Rs 100 and fills only if new sellers arrive at that price and the orders ahead of it clear. The order’s validity type governs what happens to the unfilled remainder at the close.
Illiquidity makes all of it worse
In a thin scrip the order book is sparse: few resting orders, wide gaps between price levels, and long stretches with no quantity at all at many prices. A price can print on a tiny trade and never reach your resting order, and the queue can clear slowly because so few opposite-side orders arrive. The combination means a limit order in an illiquid name can sit unfilled for a long time even though the LTP has moved through your level several times.
Illiquidity also widens the gap between the LTP and a realistic fill price. With a thin book, the bid and offer can be far apart, so the price you would actually trade at is nowhere near the last print. This is the same condition that makes a market order dangerous in thin scrips, where it can sweep multiple levels and fill far from the LTP. For a limit order the risk is the opposite: not a bad fill, but no fill, because the book never brings enough volume to your price. Surveillance frameworks such as ASM and GSM , and the T2T (trade-to-trade) segment, often apply to exactly these illiquid names and add their own constraints on top.
Validity and what happens to an unfilled order
What happens to an unfilled limit order depends on the validity type you chose. A day order rests in the book until it fills or until the market closes, at which point any unfilled quantity is cancelled. An IOC (immediate or cancel) order fills whatever it can at once and cancels the rest immediately, so an IOC that cannot match on arrival leaves nothing pending. If your order disappeared without filling, check whether it was an IOC or whether the session closed on a resting day order.
A pending limit order fills only if fresh opposite-side orders arrive at your price and the queue ahead of you clears, all within its validity. It does not jump the queue by waiting. So an order that has been pending all session at a price the LTP keeps touching is not stuck; it is simply behind earlier orders that keep absorbing the available volume, and it will fill only when the supply at its price genuinely exceeds the demand ahead of it.
How to improve the chance of a fill
Two levers change the odds. The first is time priority: place the order earlier so you sit nearer the front of the queue at your price. An order placed at the open at a popular round-number price will be far ahead of one placed later at the same price. The second is price aggression: price the limit so it crosses the spread and matches immediately as a marketable limit, which is the behaviour described in Why a limit order can execute at a better price . A marketable limit takes the best available opposite-side price at once instead of resting in the queue.
The trade-off is the usual one between price and certainty. A passive limit at a favourable price may never fill; a marketable limit or a market order fills now but at the best available price rather than your chosen one. If execution certainty matters more than the exact price, cross the spread or use a market order. If the exact price matters more, accept that the order may rest unfilled, and watch the market depth rather than the LTP to judge whether a fill is realistic.
See also
- Limit order on Kite
- Market order on Kite
- Why a limit order can execute at a better price
- Trigger price vs limit price
- Order validity types
- Disclosed quantity orders
- Iceberg order on Kite
- SL-M order on Kite
- GTT order on Zerodha
- Why orders get rejected on Kite
- Charges shown on the Kite order window
- Margin required on the Kite order window
- T2T trade-to-trade stocks on Zerodha
- ASM additional surveillance measure on Zerodha
- GSM graded surveillance measure on Zerodha
- Circuit limits and price bands
- CNC product code
- MIS product code
- NRML product code
- Kite nudges
- Kite (Zerodha)
- Kite web
- Kite mobile app
- Zerodha
- National Stock Exchange
- Bombay Stock Exchange
- SEBI
External references
- Zerodha support: Why didn’t my limit order execute even if the price showed on screen?
- Zerodha support: What are limit and market orders?
- Zerodha support: Why was my order executed at different price points?
- Zerodha Varsity: order types and market depth
- NSE India: trading system and matching framework
- SEBI: stock exchange trading framework
References
- Zerodha support, Why didn’t my limit order execute even if the price showed on screen? (price-time priority, as of 21 June 2026).
- Zerodha support, What are limit and market orders? (as of 21 June 2026).
- Zerodha support, Why was my order executed at different price points? (partial fills, as of 21 June 2026).
- NSE India, capital market trading system, price-time priority and order-matching rules.
- SEBI, framework for order matching and trade execution on recognised stock exchanges.