AWS Billing Incident 2026: Were You Charged?

10 mins read

TL;DR: Between July 16 and July 18, 2026, AWS displayed wildly inflated cost estimates and fired false budget and anomaly alerts. No one was actually charged. And there's one line in AWS's postmortem that every engineering team should read twice.

If you opened the AWS Billing console on the night of July 16 and saw a number that looked like a phone number - you weren't alone, and you weren't charged. Here's what happened, in plain English, based on AWS's official status updates.

What happened

On July 16 at 7:38 PM PDT, AWS started displaying incorrect estimated billing data in the Billing and Cost Management Console and in Cost and Usage Reports. Some customers saw estimates in the millions or billions of dollars. Budget alerts and Cost Anomaly Detection alerts fired on the phantom numbers, which is how most people found out - often in the middle of the night.

The root cause, per AWS: a configuration change in their bill computation system caused updates to unit conversion data to fail. Line item charges are calculated from that data, so broken unit conversions produced inflated line item costs, which propagated to the console, the CUR, and every alert built on top of them.

The important part: these were estimates only. Actual invoices were never affected. If you saw a $2 billion bill, you will not pay a $2 billion bill.

No more AWS bill surprises

No more AWS bill surprises

Try it today

Try it today

Timeline

All times PDT, from AWS's status page:

  • Jul 16, 7:38 PM - incorrect estimated billing data starts appearing

  • Jul 16, 7:46 PM - AWS's internal alarms detect cost anomalies, but fail to halt bill generation or notify their engineering teams

  • Jul 17, 12:19 AM - AWS engineers learn about the issue from customer escalations

  • Jul 17, 1:33 AM - first public notice on the Service Health Dashboard

  • Jul 17, 8:24 AM - AWS pauses estimated billing updates and switches off budget and anomaly alerts as a precaution

  • Jul 17, 12:00 PM - root cause identified; mitigation applied at 12:30 PM, data reprocessing begins

  • Jul 17, 4:19 PM - recovery begins

  • Jul 18, 6:00 AM - the majority of accounts fully recovered; a small number still reprocessing

Was I charged? Do I need to do anything?

You were not charged. For most people, no action is needed. Two exceptions worth checking:

1. Cost and Usage Report pipelines. If your CUR is configured with the "Overwrite" option, AWS replaces the bad data automatically - you're done. If it's configured with "Create new report versions", the report delivered during the incident window still sits in your S3 bucket with inflated numbers. AWS delivers the corrected version under a new assemblyId. Point your downstream consumers - Athena tables, Redshift pipelines, QuickSight, custom ETL - at the latest assemblyId for the affected billing period, and archive or delete the stale version so nothing processes it later.

2. Anything automated that reads cost data. If you have scripts, forecasts, chargeback reports, or third-party tools that ingested cost data between July 16 and July 18, re-run them after your account shows recovered data. A forecast built on a $300M day will stay wrong long after AWS fixed the console.

The line in the postmortem worth reading twice

AWS's retrospective is honest, and one sentence deserves attention:

"On July 16, 2026 at 7:46 PM PDT, our alarms detected cost anomalies but failed to halt the estimated bill generation process or alert our engineering teams. Our engineering teams were alerted to this issue on July 17 at 12:19 AM PDT by customer escalations."

Read that back. The alarms worked - the anomaly was detected eight minutes after it started. And then nothing happened for four and a half hours, until customers escalated.

This is not an AWS-specific failure. It's the most common failure mode of cost monitoring everywhere: detection is not the hard part; getting a signal in front of a human who can act on it is. An alert that fires into a queue nobody watches, at a time nobody's looking, is functionally identical to no alert at all. Most teams' cost alerting fails exactly this way every month - just with smaller numbers, so nobody writes a postmortem.

"So cost alerts can't be trusted now?"

Fair question - the false alarms in this incident came from cost alerting tools. Two honest takeaways:

Every alerting tool downstream of AWS billing data saw the same corrupted numbers. Ours included. There is no vendor who was magically immune; anyone claiming otherwise is not being straight with you.

But not every alert has to be equally naive about it. A jump from $3,000 to $2 billion is not a usage pattern - it's a data artifact. Spend anomalies from real usage have shapes: they grow over hours, they're concentrated in a service or region, they correlate with deploys or traffic. A 40,000x instantaneous jump across every line item fails every one of those sanity checks. Good anomaly detection should say "your cost data looks broken" in a different voice than "your NAT gateway is burning money" - because the correct responses are different.

That distinction - real spike vs. broken data vs. noise - is most of the actual work in cost alerting, and this incident is now a permanent test case for it.

What to take away

The glitch was resolved in about 36 hours and nobody paid a cent. But it was also a rare, vendor-documented demonstration of how cost incidents actually unfold: the anomaly starts quietly, the dashboard knows before any human does, and the gap between "detected" and "someone acted" is where the money goes. This time the numbers were fake. The next spike in your account - a runaway Lambda, a leaked key, a forgotten GPU cluster - will be real, smaller, and much quieter than $2 billion.

If you want that gap closed - an alert in Slack, Jira, SMS or email within hours of spend breaking your baseline, with sanity checks so a billing-data glitch doesn't page you at 3 AM - that's exactly what we're building at watchmy.cloud. Early access is open, and the first teams get 3 months free.

Sources: AWS Service Health Dashboard status updates

watchmy.cloud
A smoke detector for your AWS bill. Built by engineers who got tired of cost surprises.

watchmy.cloud
A smoke detector for your AWS bill. Built by engineers who got tired of cost surprises.

watchmy.cloud
A smoke detector for your AWS bill. Built by engineers who got tired of cost surprises.