How to review an Azure cost export
Reconcile one complete export run against an equivalent scope, period, cost basis and currency, retaining revisions and unexplained differences.
In this guide
Write a reconciliation header
Before opening the files, record the Azure agreement, export scope, covered period, dataset type and native currency. Add the export run identifier and the finance ledger period you intend to compare. A subscription usage export and a billing profile invoice can both be correct while covering different charges.
Microsoft documents scope restrictions that affect completeness. Management group exports support EA usage charges but exclude purchases such as reservations and savings plans, and do not support amortized costs. A management group export therefore cannot be assumed to reproduce a full billing account total. Check the delivered dataset against the purpose of the reconciliation before investigating its arithmetic. [1]
Check every partition in one export run
Use the manifest to identify the files belonging to the chosen run. Microsoft's current export experience partitions files and provides a manifest with dataset and per-file information. Opening the first CSV establishes that one file is readable; it does not establish that the whole export arrived. Review the listed blob count and available row counts against the delivered partitions. [1]
Keep different runs separate. Daily month-to-date exports are cumulative, and overwrite settings determine whether earlier runs remain in storage. Appending Monday's cumulative file to Tuesday's cumulative file duplicates Monday's charges. Select one complete run for the comparison, retain its identity, and document how a later corrected run will replace or revise that comparison.
Scroll the table sideways on smaller screens. Keyboard: focus the table and use the arrow keys.
| Check | Evidence | Reason to pause |
|---|---|---|
| Run identity | Manifest and files from the same run | Mixed run identifiers |
| Partitions | Every listed blob is available | Missing or unreadable partition |
| Dataset | Actual, amortized or FOCUS explicitly identified | Unlabeled cost basis |
| Scope and currency | Match the reconciliation header | Unexplained exclusion or mixed total |
Keep actual and amortized treatments separate
Actual exports contain standard usage and purchase charges. Amortized exports distribute purchases such as reservations and compute savings plans. Microsoft also supports FOCUS exports that combine cost concepts into one schema. Select the relevant cost field and document its meaning; the presence of several cost columns is not permission to sum them together. [1]
Retain source precision when aggregating, then apply display rounding. Preserve native currency totals separately. Azure usage charges can already reflect negotiated prices and commitment benefits, so applying a contract discount again understates the bill. Review resource-less charges and adjustments before filtering: a missing resource identifier does not by itself make a billing row invalid. [2]
Build a bridge between totals
Compare like-for-like charge categories first. Microsoft's Cost Management data documentation excludes taxes, credits and support charges and describes account-specific coverage. Your finance ledger may contain those invoice components. Separate a difference against the payable total into known invoice components and an unexplained residual. Do not force agreement by removing inconvenient usage rows. [2]
For an illustrative EUR ledger, suppose the selected usage dataset totals 10,000.00 and the payable ledger totals 12,300.00. If invoice evidence separately identifies support of 500.00, tax of 2,400.00 and a credit of 600.00, those components bridge the difference exactly: 10,000.00 + 500.00 + 2,400.00 - 600.00 = 12,300.00. These teaching amounts are not a Costframe result or a statement about any customer's tax treatment.
Check whether the billing period is settled
Open-period charges remain estimates and can change as Azure processes usage. Microsoft documents continued processing around billing close and additional prior-month export runs during the first five days of the month. Capture the export's revision and the invoice's status instead of treating the first file dated after month end as final. [1][2]
If a later run changes a previously reviewed amount, preserve the earlier comparison and create a revised reconciliation. Record which categories changed and whether the invoice changed too. Current inventory should not decide which historical charges survive: deleted or stopped resources can still appear in billing records. Likewise, today's resource tags cannot establish historical responsibility for an earlier charge.
Finish with an explainable residual
Keep a review packet containing the manifest, selected files, reconciliation header, exact category totals and invoice bridge. Record excluded scopes and unreadable partitions explicitly. Name the owner of any residual difference and the next source needed to resolve it. A report can be accepted for a defined operational review while still being unsuitable for full invoice reconciliation.
Ask a prospective cost tool to repeat the same comparison in its interface and exported report. IBM Cloudability's documented EA integration requires both actual and amortized exports, illustrating why ingestion requirements belong in the purchasing review. This checklist evaluates files you already have; configuring or running an export requires the approved Azure setup process and its own permissions. [3]
Sources
Use this in your next review
Make successful reconciliation of your selected billing scope a mandatory pilot requirement.
Build your selection worksheetCheck plans and current scope