How to renew a Kite Connect subscription

From WebNotes, a public knowledge base. Last updated . Reading time ~7 min. Level: Beginner.

The Kite Connect API subscription costs Rs 2,000 per month plus GST and must remain active for your trading scripts to function. When the subscription lapses, whether due to insufficient Zerodha account balance, a failed payment, or deliberate cancellation, every API call immediately returns a 403 TokenException: Invalid API key or access token error. This guide explains how to check subscription status, renew promptly, and set up safeguards to prevent future lapses.

Understanding the billing cycle

Kite Connect subscriptions are billed monthly on the date you originally subscribed. For example, if you subscribed on the 7th of a month, Zerodha attempts renewal on the 7th of each subsequent month.

Zerodha deducts the subscription charge from your Zerodha account balance first. If the balance is insufficient, Zerodha may attempt to charge via a linked payment method. If payment fails, the subscription lapses immediately and API access is revoked.

The charge appears on your Zerodha account statement as “Kite Connect charges - API subscription.” It is not eligible for brokerage offsets.

GST (currently 18%) is added on top of the Rs 2,000 base fee, making the effective monthly cost approximately Rs 2,360. This is the amount you must ensure is available in your Zerodha account before the billing date.

Step-by-step procedure

Check current subscription status

Log in to the Kite Connect developer console at kite.trade/developers/apps using your Zerodha client ID, password, and TOTP.

The dashboard shows one of three states.

Status shownMeaning
Active (with next billing date)Subscription is live; no action needed
Expired or LapsedPayment failed; renewal required manually
Subscription requiredYou have never subscribed or cancelled; fresh subscription needed

If your scripts are throwing errors, you can confirm a subscription lapse programmatically:

from kiteconnect import KiteConnect
from kiteconnect.exceptions import TokenException
import os

kite = KiteConnect(api_key=os.environ["KITE_API_KEY"])
kite.set_access_token(os.environ["KITE_ACCESS_TOKEN"])

try:
    kite.profile()
    print("Subscription active.")
except TokenException as e:
    print(f"API call failed: {e}")
    print("Check subscription status at kite.trade/developers/apps")

Ensure sufficient Zerodha account balance

Before attempting renewal, verify your funds:

  1. Log in to Kite at kite.zerodha.com.
  2. Click Portfolio > Funds in the left navigation.
  3. Confirm that the “Available cash” figure is at least Rs 2,360 (or the current inclusive-of-GST amount shown on the renewal page).

If funds are insufficient, add money to your Zerodha account using a bank transfer (UPI, NEFT, or IMPS). Zerodha processes fund additions instantly via UPI and within a few hours for NEFT/IMPS.

Renew the subscription

If the subscription has lapsed, the developer console shows a Renew or Reactivate button on the app dashboard page. Click it. The console prompts you to confirm the monthly charge. Click Confirm to process the payment.

For a fresh subscription (if you cancelled and are re-subscribing), the console shows a Subscribe or Activate button. The activation flow is the same as the initial subscription described in How to generate a Kite Connect API key.

Renewal is instantaneous once payment is confirmed. The console immediately shows the subscription as active with a new billing date.

Confirm renewal and test

After renewal, run a quick test to confirm API access is restored:

from kiteconnect import KiteConnect
import os

kite = KiteConnect(api_key=os.environ["KITE_API_KEY"])
kite.set_access_token(os.environ["KITE_ACCESS_TOKEN"])

profile = kite.profile()
print(f"API active for: {profile['user_name']} ({profile['user_id']})")
print(f"Exchanges enabled: {profile['exchanges']}")

If the test succeeds, your trading scripts can resume. If you still receive a TokenException, regenerate the access_token (it may have expired during the subscription gap) by running the daily login flow. See How to generate the request_token and access_token.

Automatic renewal setup

Automatic renewal relies on your Zerodha account having sufficient balance on the billing date. There is no explicit “set up auto-renewal” step; Zerodha attempts automatic payment by default.

To avoid lapses caused by low balance:

  • Maintain a standing buffer of at least Rs 5,000 in your Zerodha account above your active trading margin requirement.
  • Set a calendar reminder three days before your monthly billing date to verify the balance.
  • Check your Zerodha account statement at the end of each month under the “charges” section to confirm the deduction occurred.

Some traders maintain a separate Zerodha account specifically for Kite Connect billing, funded with a three-month prepayment, to isolate the subscription from day-to-day trading margin usage.

Impact of a subscription lapse

A subscription lapse has immediate and total effect. The moment the subscription expires:

  • All access_token sessions are invalidated.
  • Every API call (REST and WebSocket) returns 403 – TokenException.
  • Running scripts fail on their next API call.
  • New access_token generation also fails, because the api_key is no longer authorised.

Renewing immediately restores access. You do not need to create a new app or generate a new api_key; the existing credentials continue to work after renewal.

There is no pro-rated refund for unused days if you renew mid-month or if the subscription lapses partway through a billing cycle. The full monthly charge applies regardless of how many trading days occurred.

Cancelling a Kite Connect subscription

To cancel, log in to the developer console and click Cancel subscription in your app settings. Cancellation takes effect at the end of the current billing month. API access continues until the end of the paid period. You are not refunded for the remaining days in the month.

If you cancel and later wish to re-subscribe, you can reactivate the same app from the developer console. Your existing api_key and api_secret are retained; you do not need to update your scripts.

What can go wrong

  • Renewal button not visible. If the subscription is active, no renewal button appears. Confirm the current status; if the billing date is upcoming, no action is needed.
  • Payment processed but status still shows lapsed. Refresh the developer console page. In rare cases, there may be a short delay (under a minute) between payment confirmation and status update.
  • TokenException persists after renewal. The access_token generated before the lapse may have been invalidated. Regenerate a fresh access_token via the login flow. See How to generate the request_token and access_token.
  • Insufficient funds at billing time outside trading hours. If your account has insufficient funds on the billing date and you add funds late (after 3:30 PM), the addition may not reflect until the next banking day, causing a lapse overnight. Top up one day in advance.
  • Multiple Zerodha accounts, wrong account billed. Each Kite Connect app is tied to the Zerodha client ID that created it. If you have multiple accounts, ensure you are checking the correct one’s balance.

References

  1. Zerodha, Kite Connect subscription and pricing, kite.trade/developers/, accessed 2024.
  2. Zerodha Support, Kite Connect billing and charges, support.zerodha.com.
  3. Zerodha, Developer console, kite.trade/developers/apps, accessed 2024.
  4. SEBI, Circular on algorithmic trading by retail investors, SEBI/HO/MRD/2021 series, sebi.gov.in.
  5. Zerodha Z-Connect blog, Kite Connect pricing and plans, zerodha.com/z-connect.

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.