It's the same meeting everywhere. Finance opens the invoice: $84,210. Engineering opens the cost dashboard: $80,905. The gap is 4%, nobody can explain it in the room, and from that day on, every number the dashboard shows is negotiable. The tool didn't lose the money; it lost the trust.
The gap is almost never a bug. It's an accounting decision nobody remembers making: the invoice and the dashboard are answering two different questions with two different cost bases, and a handful of charge types live in one and not the other. All of it is knowable. Here's the whole map: what blended, unblended, and amortized actually mean (with one worked example), the reconciliation identity that ties a report to an invoice, and the checklist for finding your specific 4%.
One reserved instance, three different numbers
Say you buy a 1-year, all-upfront reservation for a database: $8,760 paid today, covering an instance that would cost $1.00/hour on demand. Here's what each cost basis reports:
Unblended is cash: what was actually charged, on the line where it was charged. This month shows an $8,760 spike on the day of purchase; every following month shows $0.00 for that instance's covered hours. Unblended is the basis invoices are built on. It's the right answer to "what did we pay this month" and the wrong answer to "what does this workload cost", because the workload looks free for eleven months and catastrophic in month one.
Amortized spreads the commitment over its term: roughly $730 a month ($8,760 across twelve months), attributed hour by hour to the instance consuming the reservation. The purchase-day spike disappears; the workload shows its true steady cost. Amortized is the right basis for showback, unit economics, and any per-team report, and it will never match the invoice, by design.
Blended is the odd one out: an average rate computed across an AWS organization's linked accounts, so that accounts sharing reservations and savings plans see a uniform price for the same usage. Account A bought the RI; account B consumed under it; blended smears the benefit across both. It answers a fairness question from consolidated billing's early days. Unless you're deliberately doing legacy cross-account cost socialization, no report should default to it, and the fact that some tools do is the source of many unexplained gaps.
Same instance, same month: $8,760, $730, or something in between depending on the org's mix. None of the three is wrong. Two of them will never match the invoice.
The reconciliation identity
An invoice is not "usage cost". It's a sum of parts, and a dashboard typically shows only the first one:
Invoice total = unblended usage + upfront commitment purchases + support plan fees + marketplace charges + taxes − credits and refunds
Walk that identity left to right against your own bill and most gaps fall out immediately:
- Cost basis mismatch. The dashboard defaults to amortized (or blended); the invoice is cash. This alone explains most gaps in months when commitments were bought or expired.
- Excluded charge types. Cost Explorer and most dashboards let you include or exclude credits, refunds, taxes, and support; the invoice doesn't ask. A dashboard hiding a $3,000 credit reads 4% high against the invoice and everyone hunts for missing spend instead of found money.
- Marketplace. Third-party software billed through the cloud bill lands on the invoice but is filtered out of some cost views by default.
- Timing. Billing data lags 8-24 hours, and providers restate recent days as late usage records arrive. The invoice is finalized days after month close; a dashboard screenshot from the 1st and the invoice issued on the 5th describe different datasets. This is also why last week's numbers legitimately change: recent figures are provisional until the bill finalizes.
- Month boundaries and currency. Invoices cut at UTC month end; a dashboard set to local time shifts a few hours of spend across the boundary. Non-USD invoices add a conversion-rate timestamp the dashboard may not share.
The five-step tie-out
- Fix the question, then the basis. "What did we pay" → unblended plus fees, credits, and tax. "What does the workload or team cost" → amortized, net of credits. Write the chosen basis on the report itself; an unlabeled cost number is a future argument.
- Turn on every charge type once. In Cost Explorer (or your tool), include credits, refunds, support, marketplace, and tax, and compare the total to the invoice. Matching here means the gap was filtered all along; it usually is.
- Reconcile at account granularity. Org-level gaps hide sign errors that cancel; per-account deltas point at the culprit charge type directly.
- Respect finalization. Reconcile against the issued invoice, not a mid-month view, and expect the provider to restate the last few days of any live view.
- Keep a delta ledger. The recurring, explainable gaps (support fee allocation, tax, a reserved-purchase cadence) belong in a two-line footnote on every report, so the 4% is pre-explained instead of re-litigated monthly.
Do this once, write it down, and the finance meeting gets ten minutes shorter permanently.
Where tools stand on this
The uncomfortable truth about many cost dashboards is that they compute from list prices or re-derive rates, which guarantees drift from the bill. The design bar to look for is bill-anchored reporting: ZopNight's cost graph, for example, is built nightly from your actual billing export (Cost Explorer on AWS, Cost Management on Azure, BigQuery on GCP), "not list price, not estimates", uses a rack-rate calculator only as a pre-bill fallback for the most recent days, then reconciles those records to the finalized line items, with the stated rule that every dollar in a finding has a paired dollar in your bill. Whatever tool you use, ask it that question directly: which dollars here can be traced to a bill line, and which are estimates awaiting reconciliation?
FAQ
What is the difference between blended and unblended costs in AWS?
Unblended is the actual charge per line item: the cash basis your invoice is built on. Blended is an organization-wide average rate that smears reservation and savings-plan benefits across the linked accounts that share them, so identical usage shows an identical rate regardless of which account bought the commitment. Use unblended for cash questions; avoid blended unless you deliberately want socialized rates.
Should I use amortized or unblended cost for showback?
Amortized, net of credits. It attributes commitment costs to the hours and teams that consume them, so a team's number reflects its true steady cost rather than showing zero because another account prepaid. Just label it, and expect it not to match the invoice; that's the point, not a defect.
Why doesn't AWS Cost Explorer match my invoice?
Usually filters and basis: Cost Explorer defaults can exclude credits, refunds, support, marketplace, or tax, and may be set to a different cost basis than the invoice's cash view. Include all charge types, switch to unblended, align the date range to the invoice's UTC month, and the totals converge in most months. Remaining gaps are typically commitment purchases or restated late usage.
Why did last week's cloud costs change after I reported them?
Providers deliver billing data 8-24 hours behind and restate recent days as late usage and adjustments arrive; figures aren't final until the invoice is issued. Treat the trailing few days of any live view as provisional, and reconcile monthly against the finalized bill rather than a mid-month screenshot.
Do Azure and GCP have the same blended/unblended/amortized distinction?
The same concepts under different names. Azure Cost Management exposes actual versus amortized cost datasets (choose amortized in exports if reservations and savings plans matter). GCP's BigQuery billing export carries cost plus separate credit records, and committed-use discounts appear as credits you allocate. The reconciliation identity works the same way on all three: usage, plus fees and purchases, minus credits, plus tax, equals invoice.
Top comments (0)