Troubleshooting Broker API 2026

"IP Not Whitelisted": Why Your Broker Keeps Rejecting API Orders — and How to Fix It

You added your static IP. You saved it. Your orders are still being rejected. This is the diagnostic guide for that exact situation — the seven real causes, why the IPv6 one catches almost everybody, and the precise fix for Zerodha, Dhan, Fyers, Angel One, Upstox, Kotak Neo and ICICI Breeze.

TS
TradeSteady Algo
Published: 12 min read

In This Article

  1. Start Here: Find the IP Your Broker Actually Sees
  2. What Your Exact Error Code Means
  3. Cause 1: Your Home IP Changed
  4. Cause 2: The IPv6 Trap
  5. Cause 3: The Order Doesn't Leave From Where You Think
  6. Cause 4: Your Token Was Issued Before the Whitelist
  7. Cause 5: "IP Already Linked to Another Account"
  8. Cause 6: The 7-Day Change Cooldown
  9. Cause 7: A VPN or Shared Proxy Is Rotating Your Exit IP
  10. The Datacenter-IP Myth (An Honest Answer)
  11. Making This Never Happen Again
  12. Frequently Asked Questions

Since IP whitelisting became enforced across Indian broker APIs, one complaint dominates every developer forum: "I've whitelisted my IP and my orders are still getting rejected." Scroll the Kite Connect forum, the SmartAPI forum or the Upstox community and you'll find the same thread posted over and over, usually with no conclusive answer.

Here's the thing almost every one of those threads eventually discovers: the IP was never really the problem. The whitelist entry is usually correct. What's wrong is that the request arriving at your broker is coming from a different address than the one you think you're sending from — and there are seven distinct ways that happens.

If you only do one thing: don't touch your whitelist yet. First find out what IP your broker is actually seeing (Step Zero below). Nine times out of ten, that single number tells you which of the seven causes you have — and stops you from burning your once-a-week IP change on the wrong fix.

Start Here: Find the IP Your Broker Actually Sees

Every fix below depends on knowing one number: the public IP address that your order request is actually arriving from. Not the IP on your dashboard. Not the IP your ISP told you. The one the broker sees.

Run this from the machine (or server, or container) that places your orders — not from your laptop, unless your laptop is genuinely what talks to the broker:

# What IPv4 address do I appear as?
curl -4 https://api.ipify.org

# And critically — am I *also* reachable over IPv6?
curl -6 https://api64.ipify.org

That second command is the one people skip, and it is the single most common root cause on this page. Read Cause 2 before you dismiss it.

Upstox users get a shortcut. Upstox exposes a GET /user/ip endpoint that returns the IPs currently registered for your app. Comparing that against your curl output tells you in one step whether you have a mismatch — no guessing required.

Now compare:

What Your Exact Error Code Means

Brokers all reject the same thing, but they name it differently. Find yours:

Broker What You See What It Actually Means
Zerodha
Kite Connect
IP … is not allowed to place orders The request's source IP isn't on the app's whitelist — or your token predates the change
Zerodha IP already linked to another account That IP is registered to a different client. One IP maps to one client — see Cause 5
Upstox UDAPI1154 + 403 Forbidden Static-IP restriction. Very often an IPv6 egress mismatch, not a wrong IPv4
Dhan DH-905 Invalid IP Source IP doesn't match your whitelist. Dhan's own support note adds: if you added the IP after generating your token, you must regenerate the token
Kotak Neo 100008 Request came from a non-whitelisted IP
Kotak Neo 1037 Session / IP mismatch — your session was opened under a different IP. Re-authenticate
Angel One
SmartAPI
Order rejected despite whitelist SmartAPI gates order & GTT endpoints only. Data calls still working is not proof your IP is fine
Any broker 403 Forbidden The generic form of all of the above
The trap hiding in that table: most brokers — Zerodha, Dhan and Angel One among them — enforce the static IP on order-placement endpoints only. Your market-data calls, your positions and orderbook fetches, your websocket feed: all of it keeps working flawlessly from any IP. So everything feels correctly configured right up until the moment you try to trade. Only a real order call proves your whitelist works. Never conclude your IP is fine because data is flowing.

Cause 1: Your Home IP Changed (The Silent One)

This is the classic. It worked yesterday. You changed nothing. Today every order 403s.

Almost all Indian home broadband is dynamic: your public IP is leased to you, and it rotates on a router restart, a power cut, a line flap, or whenever your ISP feels like refreshing the lease. The moment it rotates, your whitelist entry points at an address that is no longer you — and quite possibly now belongs to a stranger down the road.

Nothing warns you. There's no email, no dashboard banner. Your algo simply stops being able to trade, usually at the worst possible moment.

Worse: many Indian ISPs won't give you a public IP at all. Jio (JioFiber and AirFiber), Tata Play Fiber and Excitel place residential customers behind CGNAT — carrier-grade NAT — which means you share an outward-facing IP with many other subscribers. There is no IP that is "yours" to whitelist. No amount of router configuration fixes this. It's a hard wall.

The fix: stop whitelisting an address you don't control. You need an IP that is genuinely static and genuinely yours — whether that's a paid static-IP add-on from your ISP (if they offer one and you're not behind CGNAT), a cloud server, or a dedicated static IP service.

Cause 2: The IPv6 Trap — the One That Catches Everybody

This is the cause that produces the most maddening threads, because everything looks correct. Your IPv4 address is right. It's typed correctly. It's saved. And orders still fail.

Here's what's happening. Your machine has both an IPv4 and an IPv6 address. When it connects to your broker, modern networking stacks generally prefer IPv6. So your request goes out over IPv6 — from an address that is nowhere in your whitelist. The broker sees an unrecognised address and rejects you. Your perfectly correct IPv4 entry is never even consulted.

This has been reported directly by Upstox users hitting UDAPI1154 on a server whose IPv4 was correctly whitelisted — the traffic was simply leaving over IPv6.

And you usually cannot just whitelist the IPv6 instead. Several broker APIs — including Angel One SmartAPI and Kotak Neo — currently accept IPv4 only for whitelisting. So the address your machine prefers to use is an address your broker will not accept. You have to force IPv4.

The fix — force your client to use IPv4:

Then re-run curl -4 https://api.ipify.org and confirm the address matches your whitelist exactly.

Cause 3: The Order Doesn't Leave From Where You Think

A rule that sounds obvious and is violated constantly: you must whitelist the IP of the machine that makes the final API call to the broker. Not the machine you're sitting at.

Your Setup The IP That Must Be Whitelisted
TradingView alert → webhook / bridge service → broker The bridge service's IP. TradingView's servers fire the alert; your bridge places the order
Script on a cloud VM (AWS / GCP / DigitalOcean) The VM's static / Elastic / reserved IP — an ephemeral one will change on you
Script at home, routed through a static-IP proxy The proxy's IP — not your home IP
A no-code platform (Tradetron, AlgoTest, Streak …) Whatever IP that platform sends orders from. Check their docs — some manage this for you, some require you to supply your own
Script running directly on home broadband Your home IP — but see Cause 1. This is the setup that breaks

The tell-tale symptom: it works when you run the script on your laptop, and fails once you deploy it. That is this cause, essentially every time.

Cause 4: Your Token Was Issued Before the Whitelist Change

Suppose your IP is correct and verified. Orders still fail. This is why.

Some brokers bind your session or access token to the IP it was created from. If you generated your token, then updated the whitelist, that token is still carrying the old association. The whitelist is right; the token is stale. The broker rejects on the token, not the entry.

This is well documented across brokers, and each words it differently:

The 30-Second Fix

After any whitelist change, always: log out → regenerate your access token → then test an order. Skipping the token step is why "I saved it and it still doesn't work" is the most-posted message on every broker forum.

Cause 5: "IP Already Linked to Another Account"

A distinct and confusing failure: the broker won't even accept the IP you're trying to register.

The reason is regulatory rather than technical. SEBI's requirement is that an API order be uniquely attributable to a specific person. Brokers implement this literally: one static IP maps to one client. If the address you're registering is already on someone else's account, it's refused.

This bites in predictable places:

The family exception is real — use it. That last case has an official route. Zerodha, Angel One, Fyers and Kotak Neo all operate a process for sharing one static IP across members of a SEBI-defined family group (spouse, dependent children, dependent parents). Angel One requires a formal written request plus 2FA validation; Kotak Neo permits up to 10 family members on one IP. Don't fight the error — ask your broker's API support for the family static-IP process.
Sharing an IP isn't just a technical problem — it draws compliance attention. Zerodha maintains a standing support article for clients who get emailed because multiple accounts were seen accessing Zerodha from the same network, and the client is asked to explain. Exchange rules require brokers to capture and report client IPs. So an IP quietly shared with strangers — which is exactly what a budget "dedicated" proxy or a VPN exit node is — isn't a clever cost saving. It's an invitation to a compliance review.

Outside a family group, the fix is an IP that belongs to you alone. "Dedicated" has to actually mean dedicated — and it's worth being blunt that this is where the cheapest end of the market quietly fails you.

An uncomfortable caveat, because you deserve the honest version: a genuine residential static IP is not an absolute guarantee against this error. There's a documented case on Zerodha's forum of a trader with a legitimate static ACT Broadband connection, sole user, one Zerodha account, being told his IP was "already linked to another account" — most likely because the address had been recycled from a previous customer. It's uncommon, but if you hit it, the address itself is the problem and no amount of retrying will clear it. You need a different IP.

Cause 6: The 7-Day Change Cooldown

This one converts an inconvenience into an outage, and almost nobody sees it coming.

Brokers rate-limit how often you may change a whitelisted IP. Zerodha (once per calendar week), Dhan (locked for 7 days after you set it), Kotak Neo and ICICI Direct all impose roughly a one-week cooldown.

Follow the logic through, because it's brutal:

  1. Your dynamic home IP rotates overnight. Your algo stops trading.
  2. You update the whitelist to the new IP. Fine — you've now spent your one change.
  3. Two days later, your ISP rotates it again.
  4. You go to update it… and the broker won't let you. You are locked out of API trading for five more days, and there is no appeal.
This is the real cost of a dynamic IP — not the rejected order, but the week of forced downtime that can follow it. Any IP that rotates faster than the cooldown lets you correct it is not merely unreliable; it is unusable. It cannot be made to work, no matter how diligent you are.

Cause 7: A VPN or Shared Proxy Is Rotating Your Exit IP

Reaching for a consumer VPN is a natural instinct and a poor solution. Standard VPN plans put you behind a shared exit IP that changes between sessions and is used by many other customers simultaneously. Every problem on this page at once: the address moves (Cause 1), it isn't yours (Cause 5), and correcting it burns your cooldown (Cause 6).

"So I'll buy the dedicated-IP add-on," you think. Reasonable — and this is where India turns out to be a dead end.

In June 2022, CERT-In directed VPN providers to retain customer identity data for five years. Rather than comply, NordVPN, ExpressVPN, Surfshark and Proton pulled their physical servers out of India. Their "India" locations today are generally virtual — physically hosted abroad, commonly in Singapore. The consequence:

To be fair and precise: a VPN is not banned. Zerodha's own guidance actually lists a "VPN/VPC service" as an acceptable place to source a static IP. The problem isn't the technology — it's that the consumer VPN market, post-CERT-In, has almost nothing to sell an Indian trader that is simultaneously Indian, static, and genuinely single-tenant.

The fix: a single dedicated IP that doesn't rotate and isn't shared. Whatever you buy, the question to ask the vendor is exactly one sentence long: "Is this IP used by anyone but me?" If the answer is anything other than a flat no, it will not solve this problem.

The Datacenter-IP Myth (An Honest Answer)

You will read, in a lot of places, that Indian brokers block or flag AWS, Google Cloud and other datacenter IP ranges, and that you therefore must buy a residential IP.

We went looking for evidence of that in the brokers' own documentation. We couldn't find any. What we found was the opposite:

Four brokers, naming cloud providers approvingly, in their own words. No broker documentation we reviewed bans cloud or datacenter ranges. So we won't tell you it does — even though we sell a static IP and it would be a convenient thing to say.

If you already run a cloud VM with a reserved IP and it works, keep it. It is a legitimate, broker-sanctioned way to comply. We'd rather you trust the other eleven sections of this page.

What the brokers do insist on is different, and it's worth stating plainly, because it's the thing that actually governs whether your setup is legal and working: the IP must be fixed, and it must be yours alone. SEBI's requirement is traceability — an order must be attributable to one identifiable person. Where the address is hosted is your business. Whether it moves, and whether you share it, is theirs.

So what are the real trade-offs of the cloud route? Not a ban — but genuine friction: you're now running and patching a server; the IPv6 trap (Cause 2) bites hardest on cloud VMs; a reserved/Elastic IP is a billed line item you must remember to actually reserve (tear down the instance carelessly and you lose the address); and if you're on a shared or reused range you can land in Cause 5. Whether that's worth it depends entirely on whether you enjoy running servers.

Making This Never Happen Again

Every cause on this page reduces to one of two questions. Is the address stable? And is it exclusively yours? Any option that answers "yes" to both makes this entire category of problem disappear:

Option Stable? Exclusively yours? The catch
Home broadband (dynamic) No Sometimes Rotates without warning; CGNAT on Jio/Excitel/Tata Play means no usable IP at all
ISP static-IP add-on Yes Yes Availability is a lottery by ISP and locality; pricing is inconsistent and often unpublished; provisioning can take days
Cloud VM + reserved IP Yes Yes Broker-sanctioned, but you're now a sysadmin. Watch the IPv6 trap and don't lose the reservation
Consumer VPN No No Shared, rotating exits. Few genuine India-located options post-CERT-In
Dedicated static IP service Yes Yes A monthly cost — and you must confirm "dedicated" genuinely means not shared

There's no single right answer here. If you're comfortable running a server, the cloud route is legitimate and brokers endorse it. If you're not — and most traders would rather spend their attention on strategy than on patching a VM — a dedicated IP that simply arrives, works, and doesn't move is the shorter path.

A Static IP That Doesn't Move, Shared With Nobody

Dedicated Indian IP — ₹499/month, or ₹4,499/year on the limited-time yearly plan (save ~25%, ends 31 Jul 2026). Yours alone, so you never hit "already linked to another account". The same IP on renewal, so you never burn the 7-day cooldown. Active in minutes, no server to run.
Whitelist it once with Zerodha, Dhan, Fyers, Angel One, Upstox, Groww, Kotak Neo — any Indian broker.

Get Your Static IP — ₹4,499/year or ₹499/month

Still stuck after working through this page? Send us your error code on WhatsApp — tell us the broker and the exact message and we'll tell you which cause it is.

Frequently Asked Questions

I whitelisted my IP but orders are still rejected. Why?

The IP your broker sees almost certainly isn't the one you whitelisted. Three usual culprits: your traffic is leaving over IPv6 while you whitelisted an IPv4; your access token was issued before you saved the whitelist and is still bound to the old IP; or the order actually leaves from a webhook, bridge or VPS rather than the machine you tested on. Confirm the real outgoing IP before changing anything.

What does Upstox error UDAPI1154 mean?

It's the static-IP restriction rejection, returned with HTTP 403 — the request didn't arrive from a registered IP. A frequently missed cause is the server sending over IPv6 while an IPv4 was whitelisted, so the address Upstox saw never matched. Check with curl -6 before assuming your IPv4 entry is wrong.

What are Kotak Neo errors 100008 and 1037?

100008 means the request came from an IP that isn't on your whitelist. 1037 is a session/IP mismatch — your session was established under a different IP than the order came from. Re-authenticate after any whitelist change, then retry.

Why does my broker say the IP is already linked to another account?

Because one static IP maps to one client — SEBI requires that an API order be uniquely attributable to a person. Shared office internet, shared VPS IPs and cheap "dedicated" proxies that are quietly shared all hit this. If it's genuinely two family members on one connection, Zerodha and Fyers run an official process for sharing an IP across a SEBI-defined family group; ask their API support.

Why won't my broker let me change my whitelisted IP?

Zerodha, Dhan, Kotak Neo and ICICI Direct all impose roughly a one-week cooldown on changing a whitelisted IP. If your dynamic IP rotates twice inside that window, you're locked out of API trading until the cooldown expires. This is the strongest practical argument against relying on a home broadband IP.

Do Indian brokers block AWS or Google Cloud IPs?

Not according to their own documentation. Zerodha tells you to get a static IP from "an ISP, cloud provider (AWS, GCP, etc.), or a VPN/VPC service"; Kotak Neo names AWS, DigitalOcean, Azure and Google Cloud; Fyers says "ISP or cloud service provider"; Angel One permits getting one from your cloud provider. The widely repeated claim that brokers reject datacenter IPs is not supported by any broker documentation we could find. What brokers actually require is that the IP be fixed and uniquely yours. The genuine downsides of the cloud route are cost, server maintenance and the IPv6 trap — not a ban.

Can I use a VPN to get a static IP for broker API trading?

In practice, no. A standard VPN plan gives you a shared, rotating exit IP — failing both broker requirements at once: it changes, and other people use it. The dedicated-IP add-on doesn't rescue it in India either. After CERT-In's 2022 logging directions, NordVPN, ExpressVPN, Surfshark and Proton pulled their physical Indian servers, and neither NordVPN nor Surfshark sells an Indian dedicated IP today. PureVPN markets an India dedicated server but states it is shared by up to five users — exactly what the one-IP-per-client rule prohibits.

Can I just whitelist my IPv6 address instead?

Usually not. Several broker APIs — Angel One SmartAPI and Kotak Neo among them — currently accept IPv4 only. So the address your machine prefers to send from is one your broker won't accept. Force your client to IPv4 (-4 in curl, family: 4 in Node, or disable IPv6 on the interface).

Share this article:

Related

Disclaimer · Terms · Privacy · FAQ