After-market orders (AMO)

variety="regular" orders can only be placed during market hours (chapter 57's "Market is closed" rejection). To queue an order outside hours for execution at next session's open, use variety="amo".

order_id = kite.place_order(
    variety="amo",
    exchange="NSE",
    tradingsymbol="INFY",
    transaction_type="BUY",
    quantity=10,
    product="CNC",
    order_type="LIMIT",
    price=1470.00,
    validity="DAY",
)

AMO submission windows

Zerodha accepts AMOs roughly from market close until shortly before next open (exact windows vary — check current docs; there are typically distinct windows for equity vs F&O AMOs, and F&O AMO windows are generally narrower). Placing outside the accepted window is rejected.

What actually happens to an AMO at market open

The order is released into the regular market at open — a MARKET AMO executes at (or very near) the opening price; a LIMIT AMO behaves like any resting limit order from that point. AMOs do not get special priority in the opening auction beyond being submitted before the session starts.

Use case for an unattended bot

If your strategy logic runs on an overnight schedule (e.g. analyzing after today's close, deciding tomorrow's entries), AMO lets you place those decisions immediately rather than needing your bot to be online and re-triggered right at market open — reducing dependency on precise wake-up timing (chapter 93 covers scheduling this reliably).

def queue_overnight_entries(kite, signals: list[dict]):
    """signals: list of {symbol, exchange, side, qty, limit_price}"""
    for sig in signals:
        kite.place_order(
            variety="amo", exchange=sig["exchange"], tradingsymbol=sig["symbol"],
            transaction_type=sig["side"], quantity=sig["qty"], product="CNC",
            order_type="LIMIT", price=sig["limit_price"], validity="DAY",
        )

Caveat: price can gap significantly overnight

A limit price computed from yesterday's close can be far from tomorrow's actual open (news, results, global cues) — an AMO limit order priced too conservatively may simply not fill; priced too aggressively may fill at a worse level than a same-morning decision would have. This is a real tradeoff of AMO convenience versus same-day price awareness, not a bug to "fix," just a cost to account for in strategy design.

Next: 063 — Freeze quantity and order splitting