Why orders get rejected on Kite
A Kite order is rejected when a pre-trade check, run either by Zerodha’s Risk Management System or by the NSE, BSE, or MCX matching engine, fails before the order can rest in the book. The rejection is not silent: the exact reason is written into the order detail in the Kite Orders tab, and that string names the specific rule that blocked the order. Reading it is the whole diagnosis. Almost every rejection reduces to one of a fixed set of causes, and each cause has a documented fix.
Two layers can reject an order. The first is Zerodha’s RMS, a broker-level engine that checks margin, holdings, freeze limits, scrip restrictions, and product eligibility before the order leaves Zerodha’s servers. An RMS-rejected order never reaches the exchange, so it carries no exchange order number. The second layer is the exchange itself, which rejects orders that breach price bands, series rules, or other exchange-side constraints the broker forwarded without pre-filtering. The reason string tells you which layer fired: RMS messages begin with “RMS:”, exchange messages carry an NSE or BSE phrasing.
This article is the hub for Kite order rejections. It lists each cause, what the message says, why the check exists, and where the detailed fix lives. For the deep diagnostic on a specific message, follow the linked guide; this page maps the territory so you can find the right one fast.
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.
Where the rejection reason is shown
Open the Orders tab on Kite web or the Kite mobile app . A rejected order shows the status Rejected in red. Click or tap the order row to expand the detail panel; the full reason field holds the message. The reason is the single most important piece of information, because it names the failed rule rather than a generic code. Copy the exact text before you act, since the remedy for “RMS: Rule: Check holdings” is nothing like the remedy for “freeze quantity for NSE CASH”.
Zerodha’s support portal documents the published rejection strings under its Kite error messages section. The list below groups them by cause.
Margin and funds rejections
The most common rejection is a margin shortfall. The order window computes the margin a trade will consume, segment by segment, and rejects the order if the margin required on the order window exceeds the margin available in that segment. The trap is that the dashboard balance and the order’s segment requirement are not the same number: funds may sit in a segment the order does not draw on, or part of the balance may be the SEBI-mandated cash component locked against F&O collateral.
When the rejection string begins “RMS:” and mentions margin, the cause is broker-level risk control rather than the exchange. The full diagnostic, including how to add funds, pledge collateral, or reduce position size, is in How to fix an RMS rejection on Zerodha . For the order-window preview that lets you avoid the rejection in the first place, read Margin required on the Kite order window . The related field that previews the all-in cost is covered in Charges shown on the Kite order window .
Holdings check on a CNC sell
A delivery sell uses the CNC product code , and CNC requires the shares to be in the demat account to sell. When they are not, RMS returns:
“RMS: Rule: Check holdings”
This fires in three documented situations. The shares were bought in the same session and are still T1 quantity, not yet delivered to the demat account on T+1 settlement . The shares are in a BE or T2T (trade-to-trade) series, which can only be sold after the T+1 delivery completes because intraday and BTST are blocked there. Or the shares were bought on one exchange and you are trying to sell on the other before they are credited. The fix for each path is set out in How to fix a DP sell rejection on Zerodha and the holdings-availability rules in T2T trade-to-trade stocks on Zerodha .
Price band rejections
Every scrip has a daily price band, a percentage above and below a reference price beyond which the scrip cannot trade for the day. A limit order priced outside that band is rejected, and a market order in a scrip that has hit its band is rejected because there is no resting opposite-side price inside the band to match against. A related variant fires when a scrip is moved between series and an order is placed in the series the scrip no longer trades in; Zerodha reports this as a price-rule rejection tied to the LTP check.
The band is set by the exchange and surveillance framework, not by the broker. The full resolution, including how to find the current band and reprice inside it, is in How to fix a price-band rejection on Zerodha , with the underlying mechanics in Circuit limits and price bands .
Circuit limit rejections
A circuit limit is the price-band edge: when a scrip reaches its upper or lower circuit, it can move no further in that direction for the day, and orders that would push it past the circuit are rejected. The distinction from a price-band rejection is timing. A price-band rejection blocks an out-of-band order at placement; a circuit rejection blocks an order once the scrip has actually locked at the band. The remedy is the same in spirit, wait for the circuit to release or for the next session, and is detailed in How to fix a circuit-limit rejection on Zerodha .
Freeze quantity rejections
Exchanges cap the number of contracts that can be sent in a single F&O order, the freeze limit, to contain the impact of a single large order. An order above the cap is rejected:
“RMS:Rule: Check freeze quantity for NSE CASH”
and the F&O variant for derivative contracts. The cap is per-order, not per-day, so the workaround is to split the position across multiple smaller orders, or to place an iceberg order , which slices one large order into legs that each sit below the freeze limit and releases them sequentially. The full procedure is in How to fix a freeze-quantity rejection .
No last trade price
When the instrument has no current traded price for RMS to validate against, the order is rejected:
“RMS: NO Last Trade Price”
This appears when the scrip is no longer traded on the selected exchange, when it has been moved to a series in which it is not currently trading, or when trading in it is suspended. The order has nothing to be price-checked against, so it cannot be accepted. Confirm the instrument is live, that you have selected the right exchange (a scrip dual-listed on NSE and BSE may be inactive on one), and that the series is current. For thinly traded scrips that trade only in a theoretical or call-auction price , the related theoretical-price rejection applies.
Auto-square-off block
MIS and CO are intraday products, and fresh intraday orders are blocked once the auto-square-off window opens. The rejection reads:
“RMS: Auto Square Off Block”
The square-off cut-offs are around 3:20 PM for equity, 3:25 PM for equity derivatives, 4:45 PM for currency, and 11:05 PM for commodities, after which no new MIS positions are accepted. If you want to keep a position past the cut-off, convert it before the window opens; see Intraday auto-square-off timings (MIS) and the conversion guides linked below. A position not squared off in time is not deleted: Zerodha carries an unwound MIS trade forward as a CNC or NRML overnight position.
Product and segment restrictions
Several rejections come from a product code being disallowed for the instrument. MIS and CO are not offered on every scrip; stocks under surveillance, illiquid scrips, and certain series are restricted to delivery only, so an intraday order in them is rejected. The segment may also be inactive on the account: F&O, currency, and commodity segments must be activated before an order in them is accepted, and an order placed in an unactivated segment is rejected. Activate the segment from Console before trading it. Surveillance frameworks that drive these restrictions are covered in ASM additional surveillance measure on Zerodha and GSM graded surveillance measure on Zerodha .
Frozen demat and regulatory blocks
An order can be rejected because the underlying demat holding is frozen, or because a regulatory block applies to the scrip. CDSL can mark holdings or accounts frozen, in which case a sell is blocked until the freeze lifts. Scrips can also be restricted by surveillance action (ASM, GSM, ESM) that limits or bars fresh positions. These are exchange or depository constraints the broker enforces, not broker policy, so the resolution is to clear the underlying freeze or wait out the surveillance stage rather than to retry the order.
Quick map of rejection causes
| Reason string or cause | Layer | Where the fix lives |
|---|---|---|
| RMS margin shortfall | RMS | RMS rejection |
| RMS: Rule: Check holdings | RMS | DP sell rejection |
| Price band breach | Exchange | Price-band rejection |
| Circuit locked | Exchange | Circuit-limit rejection |
| Freeze quantity | RMS / exchange | Freeze-quantity rejection |
| RMS: NO Last Trade Price | RMS | Theoretical-price rejection |
| RMS: Auto Square Off Block | RMS | Auto-square-off timings |
| Segment not active | RMS | Activate in Console |
How to read a rejection in practice
The diagnosis is always the same sequence. Open the Orders tab, expand the rejected order, and read the reason verbatim. If it begins “RMS:”, the cause is broker-level and the fix is one of the RMS guides above; the order never reached the exchange. If it carries an NSE or BSE message, the exchange rejected it for a price band, series, or freeze breach. Match the phrase to the table, follow the linked guide, change the one thing that failed (funds, price, quantity, product code, or segment), and re-enter. Do not resubmit the identical order, since the same check will fire again. The rejection string is precise on purpose, so the rejected order book becomes a self-documenting log of exactly which rule to satisfy.
See also
- Zerodha
- Kite (Zerodha)
- Kite web
- Kite mobile app
- How to fix an RMS rejection on Zerodha
- How to fix a price-band rejection on Zerodha
- How to fix a circuit-limit rejection on Zerodha
- How to fix a theoretical-price rejection on Zerodha
- How to fix a freeze-quantity rejection
- How to fix a DP sell rejection on Zerodha
- Margin required on the Kite order window
- Charges shown on the Kite order window
- CNC product code
- MIS product code
- NRML product code
- Limit order on Kite
- Market order on Kite
- SL-M order on Kite
- Trigger price vs limit price
- Iceberg order on Kite
- Disclosed quantity orders
- Order validity types
- Circuit limits and price bands
- T2T trade-to-trade stocks on Zerodha
- ASM additional surveillance measure on Zerodha
- GSM graded surveillance measure on Zerodha
- Intraday auto-square-off timings (MIS)
- Zerodha Console
- SEBI
- National Stock Exchange
- Bombay Stock Exchange
- CDSL
External references
- Zerodha support: Why do orders get rejected?
- Zerodha support: Why is my rejected order not displayed in the order book?
- Zerodha support: RMS: Rule: Check holdings
- Zerodha support: RMS: NO Last Trade Price
- Zerodha support: Auto Square Off Block
- NSE India: price bands and surveillance
References
- Zerodha support, Why do orders get rejected? (as of 21 June 2026).
- Zerodha support, RMS: Rule: Check holdings; RMS: NO Last Trade Price; RMS: Auto Square Off Block error articles (as of 21 June 2026).
- Zerodha support, Why is my rejected order not displayed in the order book? (as of 21 June 2026).
- NSE India, price band and freeze quantity framework for the capital market and F&O segments.
- SEBI surveillance framework (ASM, GSM, ESM) for restricted securities.