Nuno
Nuno

The Cost Drop That Wasn't: Why the Last Days in Cost Explorer Lie

AWS daily spend looked like it fell from $284 to $62 in two days. It was late billing data, and why you never report savings from the last 1 to 3 days.
Vander Nunes
September 08, 2026
XInstagramYouTubeLinkedIn
Daily AWS cost chart where the last two bars drop sharply, marked as incomplete data

In August I was writing a cost analysis for a client and the daily view in Cost Explorer showed the best news of the month. Spend for the last three days read $284, then $158, then $62.

If that were real, something had just cut the bill by 78% in 48 hours. Nothing had. Nobody had shipped a cost change. No environment had been turned off.

It is the kind of chart that ends up in a status update, especially in the middle of a cost engagement where everyone wants good news. That is exactly when this mistake happens.

The hourly data disagreed

The first check was to look at the same period with a different granularity. The hourly data, pulled at the same time, put the recent days at $279 and $168. Still lower, but nothing like the cliff the daily view drew. Two views of the same bill, pulled at the same moment, should not disagree by that much.

That is the first sign. Real spend does not change after the fact. Late data does.

Every service fell by the same share

The second check is the one I now run every time. I broke the last few days down by service and compared each service's drop.

When a real change lowers your bill, it lowers one thing. You resized a database, so the database line drops. You removed a node group, so compute drops. Everything else stays where it was.

Here every service fell by the same share on the same day. That pattern makes no sense as an engineering change. It makes perfect sense as "AWS has not finished posting usage for these days yet". Each service had reported part of its usage, so each one looked smaller by about the same fraction.

One line was complete

The last clue was the line that did not move. On the most recent day, the only charge that looked normal was the Savings Plan commitment.

That is a fixed amount. AWS knows it in advance, so it posts on time, every hour. Usage charges arrive later, as each service meters and reports. So on a day where usage data is still coming in, the commitment fee sits there at full size while everything around it looks tiny.

If the flat commitment line is most of your total on the last day, you are not looking at a cheap day. You are looking at an incomplete one.

Why this happens

AWS billing data is not real time. Cost Explorer refreshes during the day, and usage from some services takes longer to arrive than others. The most recent day is almost always low, and the day before it can be low too. AWS says this in its documentation, and everyone who works with billing data knows it. It still catches people, because the chart does not draw incomplete days any differently from complete ones.

The forecast inherits the same problem. A month-end forecast built on the last few days will be optimistic until the data settles.

What I do now

I do not report a saving that rests on the last 1 to 3 days. If a change went in on Monday, I compare full days after it with full days before it, and I wait until the data stops moving.

For anything that goes to leadership, I use complete months from Cost Explorer and say which months I am comparing. In that same engagement the number I quoted was May against August, both closed months: from about $20,800 to about $9,300 a month, 55% lower. Forecasts and partial months are useful for steering, but they are not results. One number that holds is worth more than a series of better ones that keep changing.

For day-to-day tracking, the per-service share check takes about a minute. Pick the last three days, group by service, and look at the percentage change for each. If they all moved together, wait.

A short checklist

  • Never report a saving from the last 1 to 3 days of data.
  • Compare the daily view with hourly data for the same period. If they disagree, the recent days are incomplete.
  • Break the drop down by service. A real change moves one or two lines. Late data moves all of them by the same share.
  • Check whether a fixed commitment fee is most of the latest day. If it is, the usage has not arrived yet.
  • Quote closed months to leadership, and say which months.

If your cost reports keep changing after you send them, I can help you set up numbers you can stand behind. See Cloud Cost & FinOps.