Skip to content

Offsite order execution

The offsite order execution feature allows you to redirect your users to Kite's exchange approved order page where they place orders and come back to your application seamlessly, like a payment gateway. This way, you do not have to build, maintain, and get exchange approvals for order execution screens. The Kite Publisher program utilizes offsite order execution to provide embeddable Javascript+HTML trade buttons that do not require any API integrations.

Initiating orders

Example JSON basket

    "variety": "regular",
    "tradingsymbol": "INFY",
    "exchange": "NSE",
    "transaction_type": "BUY",
    "order_type": "MARKET",
    "quantity": 10,
    "readonly": false
    "variety": "regular",
    "tradingsymbol": "NIFTY15DECFUT",
    "exchange": "NFO",
    "transaction_type": "SELL",
    "order_type": "LIMIT",
    "price": 7845,
    "quantity": 1,
    "readonly": false
    "variety": "co",
    "tradingsymbol": "RELIANCE",
    "exchange": "NSE",
    "transaction_type": "BUY",
    "order_type": "LIMIT",
    "product": "MIS",
    "price": 915.15,
    "quantity": 1,
    "trigger_price": 910,
    "readonly": true

Posting the JSON basket

  <input type="hidden" name="api_key" value="xxx" />
  <input type="hidden" id="basket" name="data" value="" />

  document.getElementById("basket").value = your_basket;

It is possible to send multiple orders which the user then confirms on a shopping basket like interface. You should prepare a JSON list of instruments to be traded with the required order parameters and POST it as a form field with the name data along with your api_key to

This is a browser / mobile (webview) request and has to happen at the user's end, although the basket preparation can happen in the backend. The easiest way to make the request is to create a hidden form, insert the JSON payload into it and submit it automatically using Javascript.

If you're preparing the basket client side on your web application, you can use the Kite Publisher javascript plugin to make things easier.


You do not have to initiate a login using the login API to do offsite order execution. If a user is not already logged in, they'll be asked to login, otherwise, they'll be taken to the order basket directly. Either way, in the end, you will receive status and request_token at your redirect_url like in the login flow.

Linking offsite execution to Kite Connect

Offsite order execution follows the same flow as login, except for the order basket that appears after the login. Once the user is done placing orders, the basket will redirect back to your registered redirect_login along with a request_key, exactly like login. You are free to use this key to create a new Kite Connect session for further API interactions, or disregard it altogether.

Request parameters

variety Order variety (regular, amo, co. Defaults to regular)
tradingsymbol Tradingsymbol of the instrument
exchange Name of the exchange
transaction_type BUY or SELL
order_type Order type (MARKET, LIMIT etc.)
quantity Quantity to transact
product Margin product to use for the order (margins are blocked based on this) ?
price For LIMIT orders
trigger_price For SL, SL-M etc.
disclosed_quantity Quantity to disclose publicly (for equity trades)
validity Order validity
readonly Default is false. If set to true, the UI does not allow the user to edit values such as quantity, price etc., and they can only review and execute.
tag An optional tag to apply to an order to identify it (alphanumeric, max 20 chars)