AWS Cost Explorer Said We Owed Quadrillions. Here's What Actually Broke.
On July 16, a bug in AWS's estimated billing computation subsystem sent Cost Explorer forecasts into the trillions for a large number of accounts, and reached automated AWS Budgets alerts along the way.

We've spent the last five posts writing about AWS bills that were too quiet: cost creeping up in NAT Gateway fees nobody noticed, tags nobody enforced, accounts nobody split. On July 16, AWS gave the industry the opposite problem. For a few hours, Cost Explorer told a large number of customers they owed sums with no meaningful relationship to reality: hundreds of billions, in some reported cases trillions, of dollars. AWS's own account called it a "slight miscalculation" the next day. It was, technically, correct. It was also a useful accident, because it's a clean case study in what happens when a cost number loses its context.
What Actually Happened
Just before 8 PM PDT on July 16, AWS's estimated billing computation subsystem started producing bad unit-pricing data. The bug lived in the forecast and estimate layer of Cost Explorer and AWS Budgets, not in the systems that generate actual invoices. AWS has been consistent on that point since the first status update: no evidence that real charges, billing records, or payment processing were affected.
That distinction matters, but it's easy to lose in the noise of the screenshots that circulated. Reported estimates ranged from a few billion to several trillion dollars, scaled up by factors AWS itself has not published in detail, though the pattern across reports is consistent with a multiplication error somewhere in the estimation pipeline rather than random corruption. One account reportedly went from $0.19 in actual monthly charges to an estimated bill approaching $2.5 billion. Others saw six-figure accounts jump into the trillions. AWS's own social account, in its acknowledgment of the incident, referenced customers seeing quadrillion-dollar estimates.
The fix took about a day. AWS's status updates through the incident described ongoing work to correct the estimated cost and usage data, including a rollback attempt that didn't fully resolve it before the underlying computation issue was found and corrected.
The Question That Matters More Than the Number
A trillion-dollar line item is obviously wrong to anyone who looks at it. That's not really the interesting part of this incident. The interesting part is where else that bad number went before a human had the chance to laugh at it.
AWS Budgets sends alerts based on the same forecast pipeline that was corrupted. That means the bug didn't only show up when someone happened to open the Cost Explorer console. It reached inboxes, automatically, as real notifications, built from a forecast field that had already gone bad upstream. Anyone with a budget alert configured at, say, 100% of a $100 monthly threshold plausibly received an email reporting a forecasted spend in the hundreds of billions, generated and sent without a person in the loop.
That's the actual lesson. A console number is something a person looks at and can sanity-check against what they remember about yesterday. A number flowing through an automated pipeline, an alert rule, a Slack bot, a budget-triggered auto-scaling policy, a FinOps dashboard pulling from the same forecast API, has no such intuition available to it. It just processes the number and does whatever it's configured to do. If "whatever it's configured to do" includes throttling a service, paging someone at 2 AM, or auto-attaching a deny policy at a spend threshold, a bug like this one stops being a screenshot people joke about on Reddit and starts being an operational incident of its own.
Why the Bare Number Was the Whole Problem
None of the affected customers had a genuine trillion-dollar cost trajectory. Nobody's S3 usage grew by a factor of a trillion overnight. If you'd had any narrative sitting next to that number, "your storage usage is flat compared to yesterday, your compute footprint hasn't changed, and yet the forecast says a trillion dollars," the number would have identified itself as broken instantly, without needing AWS's confirmation the next morning.
That's the difference between a dashboard and a narrative. A dashboard shows you the number. It doesn't tell you whether the number makes sense given what actually happened in your account over the last day. A forecast that jumps by 6,726,282,394,519% in a single refresh is not a spend event, it's a data event, and the two require completely different responses. One is a Slack message to your team. The other is a support ticket to AWS. Confusing them, especially at automation speed, is exactly how a display bug turns into a real incident.

What to Actually Check When a Forecast Looks Insane
A few practical habits, useful for this incident and the next one that won't be this obviously absurd:
- Compare the forecast against the actual cost trend, not just the raw number. Cost Explorer shows both. If the "current month" actual cost line looks normal and only the forecast field has gone feral, that's a strong signal the estimation layer is broken, not your infrastructure.
- Check whether the anomaly tracks a specific service. The July incident showed corrupted forecasts concentrated in a handful of services in various accounts (S3, Route 53, Secrets Manager showed up repeatedly in public reports). A forecast spike isolated to services that haven't changed usage patterns is a data problem before it's a cost problem.
- Don't let a budget alert auto-trigger a deny policy without a sanity ceiling. If you have "at 100% of budget, attach a deny policy" automation, add a secondary check: does the absolute dollar figure make sense for this account's history? A rule that fires at $50 over budget behaves very differently from one that fires at $50 billion over budget, and the second case should probably alert a human before it acts.
- Treat a forecast spike as an investigate signal, not an act signal, until you've cross-checked it against Cost and Usage Report data. CUR reflects billed usage, not estimates. If CUR looks normal and Cost Explorer's forecast doesn't, trust CUR.
- Watch AWS's Service Health Dashboard before you watch your own panic. In this incident, AWS posted a status update describing the issue within hours. A five-minute check there would have resolved a lot of anxious support tickets faster than waiting on hold.
The Honest Read
We're not going to pretend this incident validates our whole thesis, that would be overclaiming a bug for marketing purposes, which is exactly the kind of thing we try not to do. What it does show is a real, specific failure mode: raw numbers, disconnected from any explanation of what changed and why, get treated as truth by both people and automation, right up until they're catastrophically wrong. The fix AWS shipped addressed the pricing bug. It didn't change the fact that a bare estimate, with no context attached, was the only thing standing between "obviously broken" and "already paged the on-call engineer."
TL;DR
- On July 16, a bug in AWS's estimated billing computation subsystem produced wildly inflated cost forecasts for a large number of accounts, in some reported cases into the trillions of dollars. AWS confirmed actual invoices and billing records were not affected.
- The bug wasn't confined to the Cost Explorer console. AWS Budgets alerts, which draw from the same forecast pipeline, sent real automated notifications built on the corrupted numbers.
- The real risk wasn't the absurd number itself, it was any automated system (alerts, Slack bots, budget-triggered policies) that consumed that number without a human sanity check in the loop.
- When a forecast looks wrong: compare it against the actual cost trend and CUR data, check whether the anomaly is isolated to specific services, don't let budget-triggered automation act without a sanity ceiling, and check AWS's Service Health Dashboard before assuming it's your infrastructure.
- A number without context is fragile, whether a person or a pipeline is reading it. That's true for a trillion-dollar typo and for the much smaller, much more common cost anomalies that don't make it onto Reddit.