Zerodha order rejected Kite Zerodha RMS order rejection

Why orders get rejected on Kite

From WebNotes, a public knowledge base. Last updated . Reading time ~12 min.

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 causeLayerWhere the fix lives
RMS margin shortfallRMSRMS rejection
RMS: Rule: Check holdingsRMSDP sell rejection
Price band breachExchangePrice-band rejection
Circuit lockedExchangeCircuit-limit rejection
Freeze quantityRMS / exchangeFreeze-quantity rejection
RMS: NO Last Trade PriceRMSTheoretical-price rejection
RMS: Auto Square Off BlockRMSAuto-square-off timings
Segment not activeRMSActivate 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

External references

References

  1. Zerodha support, Why do orders get rejected? (as of 21 June 2026).
  2. Zerodha support, RMS: Rule: Check holdings; RMS: NO Last Trade Price; RMS: Auto Square Off Block error articles (as of 21 June 2026).
  3. Zerodha support, Why is my rejected order not displayed in the order book? (as of 21 June 2026).
  4. NSE India, price band and freeze quantity framework for the capital market and F&O segments.
  5. SEBI surveillance framework (ASM, GSM, ESM) for restricted securities.

Frequently asked questions

Where do I see why my Kite order was rejected?
Open the Orders tab on Kite, find the order with status Rejected, and tap or click it. The full reason string is shown in the order detail. Most reasons begin with RMS for a Zerodha-side rejection, or carry an NSE or BSE message for an exchange rejection. The exact words tell you which check failed.
What is the difference between an RMS rejection and an exchange rejection?
RMS is Zerodha’s Risk Management System, a pre-trade check that runs before the order leaves Zerodha’s servers. An RMS-rejected order never reaches the exchange and has no exchange order number. An exchange rejection comes back from the NSE, BSE, or MCX matching engine after the order was forwarded, for reasons such as price band or freeze quantity breaches the broker did not pre-filter.
Why is my CNC sell order rejected when I own the shares?
The RMS: Rule: Check holdings error fires when a CNC sell is placed without the shares being available to sell. This happens if the shares were bought in the same session and are still T1 quantity not yet in the demat account, if BE or T2T series shares have not completed their T+1 delivery, or if the shares were bought on one exchange and you are trying to sell on the other before they are credited.
Why was my F&O order rejected for freeze quantity?
Exchanges set a maximum number of contracts that can be sent in a single order for each derivative, the freeze limit. An order above that limit is rejected. Split the order into smaller clips, or use an iceberg order to slice one large order into legs that each sit below the freeze limit.
Why does Kite reject an order with no last trade price?
The RMS: NO Last Trade Price error fires when the instrument has no current traded price for the system to validate the order against, typically because the scrip is no longer traded on that exchange or series, or trading in it is suspended. Check the instrument is live and you have selected the correct exchange and series.
Can a margin shortfall reject an order even when I see funds?
Yes. The order window checks the segment-specific margin required against the segment-specific margin available. Funds shown on the dashboard may sit in a different segment, or be blocked as collateral cash component, so the order can be rejected for margin even though a balance is visible. Read the margin-required field on the order window before placing.
Why was my order rejected for price band or circuit?
Each scrip has a daily price band, the band beyond which it cannot trade for the day. A limit order priced outside the band, or any order in a scrip that has hit its circuit limit, is rejected. Reprice the order inside the band, or wait for the band to reset the next session.

Reviewed and published by

The WebNotes Editorial Team covers Indian capital markets, payments infrastructure and retail investor procedures. Every article is fact-checked against primary sources, principally SEBI circulars and master directions, NPCI specifications and the official support documentation published by the intermediary in question. Drafts go through a second-pair-of-eyes review and a separate compliance read before publication, and revisions are tracked against the SEBI and NPCI rule changes referenced in the methodology section.

Last reviewed
Conflicts of interest
WebNotes is independent. No relationship with any broker, registrar or bank named in this article.