Bill horror story
$30,356 in 72 hours: one line that read a whole Firestore collection
October 21, 2026 · 3 min read
A viral campaign and a page that loaded every payment on each visit: billions of Firestore reads before anyone noticed.
Retold from HackerNoon, by Nicolas Contreras V, July 23, 2018. Summary in our own words; every figure is the source's.
What happened
Vaki, a Colombian crowdfunding platform, hosted a political campaign that went viral. The traffic was the good news. The bad news was one line in the web app: a call that loaded the whole payments collection every time someone opened a page, to compute totals that were already stored on each campaign.
With the campaign going viral, every visit multiplied that read. The author estimates more than 40 billion Firestore requests, and in his words: "we had spent $30,356.56 USD in just 72 hours!"
How it ended
The team fixed the code. Google let them apply for a startup grant, and the grant paid the bill. The article doesn't describe a refund.
What would have stopped it
- Reading what you need. Storing and reading the totals, not the whole collection, is the real fix. Firebase lists "forgetting to add a limit to a database query with millions of results" among its common causes of surprise bills.
- Noticing the read rate. Firestore reads jumping to many times their usual hourly level is visible in Cloud Monitoring within minutes. A spike rule on document reads would have flagged it on the first day, not after 72 hours.
- Degrading instead of paying. A Soft Kill that switched the campaign pages to a cached, read-light mode would have kept the campaign online while the bug was found.
