AWS data centre server racks with cyan cold-aisle lighting in India

The surprise dollar bill: how a Bengaluru startup got its AWS costs in India under control

The first sign was not a dashboard. It was a payment failure. A founder forwarded me a screenshot at 11 at night: his company card had been declined on an AWS charge of 4,180 dollars. He thought it was fraud. It was not fraud. It was October. The bill had simply grown past the limit on the card, one quiet line item at a time, and nobody had been watching the number because the number was in dollars and the company thought in rupees.

This was a Bengaluru consumer-app startup, about 40 people, two years past their seed round. Good engineers. A product that worked. And an AWS account that one of the founders had spun up on his personal card in week one, the way most of us start, because it took four minutes and a credit card and you were live. Two years later that same account was running the whole company and still pointing at his card.

The bill was not the problem. Not knowing was

The founder asked me which cloud was cheaper. That is not actually the question. Every hyperscaler will quote you a number that looks fine on the slide. The bill you get is a different number, and the gap between them is not the vendor cheating you. It is everything you turned on and forgot.

So I did not start with a migration plan. I started with one read-only login and the Cost Explorer. Matlab, before you decide where the workload should live, you find out what it is actually doing. Two hours in, the picture was clear, and it was boring. No drama, no breach. Just spend with nobody’s name on it.

Three big leaks. A staging environment that had been cloned for a demo in March and never switched off, running on the same instance size as production. A pile of old EBS snapshots and unattached volumes, six months of them, billed every hour for storage nobody could point to. And a data-transfer line that none of them could explain, because their CDN was misconfigured and serving everything out of the dollar-priced region instead of a cache.

Where a cloud bill quietly leaks

Here is what gets me about cloud waste. It is never the thing you would expect. It is not the expensive GPU box you argued about for a week. It is the cheap stuff, multiplied, left running. A 10,000 rupee-a-month staging box feels like nothing. Run four of them for eight months and you have spent more than the GPU you fretted over.

The startup’s idle staging environment had cost them roughly 2.1 lakh over seven months. The orphaned snapshots, another 70,000 or so, pure storage for data that backed up a server they had already deleted. The CDN misroute was the slow bleed, a few hundred dollars a month in data transfer that should have been close to zero. Bas, none of these were decisions. They were defaults nobody revisited.

This is the part founders find hard to hear. There was no villain. The engineers were not careless; they were busy shipping, which is what you pay engineers to do. Cost is a job, and on a small team it is usually nobody’s job. So it drifts. Achha, the fix is not heroics. It is making it somebody’s job, with a tool that shouts before the card does.

Getting AWS costs in India under control

We worked through it in a fixed order, cheapest wins first, because there is no point optimising an instance you are about to delete. Kill, then right-size, then commit, then bill correctly. That sequence matters more than any single trick.

Kill first. We turned off the demo staging environment, deleted the unattached volumes, and put a 30-day expiry on snapshots so the graveyard stops growing. That alone took a third off the bill in week one, and it cost nothing. Nobody re-platformed anything.

Right-size next. Production was running on instances picked two years earlier for a load that had since changed. AWS’s own Cost Explorer rightsizing recommendations flagged three boxes running at under 12 percent CPU. We dropped them a size and the app did not notice. Then we set up a proper AWS Budget with alerts so the next time spend crossed a line, a human got an email, not a declined card.

Then the rupee question. The account was billed in USD to a personal card, which meant forex markup, GST headaches at filing, and no clean company invoice. We moved them onto AISPL India billing, so AWS now invoices the company in INR with GST, the way the finance team can actually book it. If you want the full picture of how that works for an Indian company, we wrote it up on our AWS for Indian businesses page.

₹3.4 lakh in a single month, on a card with a ₹3 lakh limit. The decline was not the disaster. It was the only reason anyone finally looked.

I came in to move them off AWS. The math stopped me

I will be honest about where I started. I walked into that first call assuming the answer was to pull them off AWS, maybe onto a cheaper India-region provider, maybe back to a couple of servers in a Mumbai data centre. The dollar bill had me convinced the platform was the problem.

Three calls and one spreadsheet later, I changed my mind. Once we killed the waste and right-sized, their AWS run-rate was not expensive at all. It was competitive. A lift-and-shift to another cloud would have cost them six weeks of engineering time and a fortnight of risk, to land somewhere roughly the same. The cheaper cloud, it turned out, was the one they already had, just run properly. We left them on AWS and I am glad we did.

That is the trap with a scary bill. It pushes you toward a big, expensive move when the real fix is small and unglamorous. If you do face a genuine platform decision, our note on how a Bengaluru data team chose between Cloudera and Databricks shows the same discipline applied to a real fork. And for the teams weighing cloud against keeping iron in-house, the server consolidation maths a Hosur manufacturer ran is worth a read before anyone signs.

What the account looked like, before and after

What we foundBeforeAfter
BillingUSD on a founder’s personal cardINR via AISPL, GST invoice to the company
Staging environmentProduction-sized, running 24×7 since MarchOff, spun up on demand only
Storage7 months of orphaned snapshots and volumes30-day expiry, unattached volumes deleted
Production instancesSized for 2024 load, under 12 percent CPURight-sized one tier down, same performance
Spend visibilityNobody watching, found via a declined cardBudget alert emails before any overrun
Monthly run-rateClimbing past ₹3.4 lakhDown about 38 percent, same workloads

None of that needed a migration. It needed someone to look, in the right order, with the account’s own tools. The startup did not buy anything new from AWS. They just stopped paying for what they were not using.

If your AWS account is on someone’s personal card, start here

You do not need a consultant to do the first hour of this. Open Cost Explorer and group by service for the last three months; the leak usually announces itself. Look for instances sitting near-idle, storage you cannot name, and a data-transfer line bigger than you expect. Set one budget alert today, even a rough one, so the next surprise arrives as an email and not a payment failure.

Then fix the boring governance bit. An account that runs a company should not sit on a founder’s personal card, billed in a currency the finance team has to convert by hand. Move it to a company entity, get it billed in INR with a GST invoice, and give one person the job of reading the number once a month. Pakka, that single habit prevents most of these stories.

Key takeaways

  • A surprise AWS bill is usually accumulated waste, not a breach. Idle staging, orphaned storage, and a misrouted CDN do most of the damage.
  • Fix it cheapest-first: kill the unused, right-size the rest, then commit and bill correctly.
  • Move off a personal USD card onto AISPL INR billing so finance gets a clean GST invoice.
  • A budget alert and one person who reads the bill monthly prevents the next decline.

FAQ

Why did our AWS bill suddenly jump?
Sudden jumps are rarely sudden. They are usually a resource that was switched on for a one-off and never turned off, a storage graveyard growing every hour, or a data-transfer misconfiguration. Group your last three months by service in Cost Explorer and the cause normally stands out.

Can I lower AWS costs in India without moving off AWS?
Almost always, yes. Most accounts we see are 30 to 40 percent over what they need because of idle and over-sized resources. Killing waste and right-sizing recovers most of that without touching where the workload runs.

What is AISPL and why does it matter for billing?
AISPL is the AWS seller of record for India. It invoices you in INR with GST instead of charging a dollar amount to a card, which makes the spend something your finance team can book and reclaim cleanly.

How do I stop the next surprise bill?
Set an AWS Budget with an alert threshold, so a human gets an email when spend crosses a line. Then make reading the monthly bill one named person’s job. Tooling plus ownership beats good intentions.

Sources we trust on this: AWS’s own rightsizing recommendations for finding under-used instances, the AWS Budgets guide for setting spend alerts, and the AISPL India billing documentation for how INR and GST invoicing works.

P.S. Sudeep here. We ran this exact cleanup for a Bengaluru startup last quarter. The founder asked the same thing you might be asking, which is whether he should just move clouds to make the bill stop hurting. The honest answer was no. His AWS bill was fine once we stopped paying for things nobody was using. One back-pocket warning, watch the per-region data-transfer line after any CDN change; that is where the next quiet leak starts. Reach us on WhatsApp at +91 91375 93228, 10 to 7 IST, and we will read your account with you.




Similar Posts