How to allocate cloud costs
Build a monthly report that shows each team's direct costs, shared services and unallocated charges. Start with one billing total and assign every charge once.

In this guide
Define the total before assigning it
Choose a complete month and list the subscriptions, accounts or projects in your report. Record the source and whether it uses actual charges or amortized costs. Reconcile each native currency separately. A report covering selected subscriptions explains that scope, not the entire provider invoice.
Include retained billed charges even when a resource was deleted or has no identifier. Compare the collection dates with the month you selected. Billing can contain charges without a matching current resource; an unavailable date is a data gap, not zero spend.
Apply a documented direct-mapping order
Choose the grouping your reader needs: applications for engineering or cost centers for finance. The FinOps Foundation describes using account structures, tags and sources such as a configuration database. Document when each source applies, especially when a resource mapping and subscription owner differ.
Write the mapping order before running the report. For example, prefer an accepted resource mapping, then its resource group, then its subscription. Retain the chosen source and any override. Use a customer default only for an agreed central owner; keep unresolved mappings visible for investigation.
Keep billing metadata separate from current inventory
Normalize the values used to match business groups, but retain the original source value and its date. Check spelling variants against finance's cost-center list. A populated tag that names a retired department needs review just as an empty tag does. Report assignment coverage by spend as well as by resource count, because many cheap tagged resources can hide one expensive exception.
Microsoft's tag inheritance applies tags to usage records, not to the resources themselves. Updating the setting can update current-month usage using current tags. This helps grouping but does not establish the owner on every earlier charge date. Do not silently treat the latest inventory tag as dated responsibility evidence.
Investigate the residual without changing the total
Allocated costs plus unallocated costs must equal the selected source total for each currency. Investigate differences before publishing. Common causes include duplicate joins, missing pages in an export or a filter that excludes resource-less charges. Net credits can make percentage-based coverage confusing, so retain the amounts and explain the denominator instead of relying on a percentage alone.
Give unresolved charges an investigation owner and a reason. Missing metadata, disputed responsibility and absent billing detail call for different work. Track the oldest unresolved period and the amount awaiting a decision. Resolving a mapping improves allocation coverage; it does not reduce provider spend or prove a saving. Preserve that distinction in reports sent to leadership.
Make the next month reproducible
Retain the selected source version and mapping policy with the report. Record corrections as a new revision, including which period changed and why. Compare source-cost changes separately from allocation changes. A department's reported cost can rise because a shared policy changed even when its underlying resource consumption stayed constant.
Use Costframe's ownership view to review supported Azure assignments and tags alongside the charges. Unallocated amounts remain visible. Confirm source availability for the connected scope and retain dated evidence when reviewing past responsibility. Shared-service distribution needs an approved policy. Costframe reads your cloud; your team manages changes.
Sources
Use this in your next review
Follow a labelled sample charge into its ownership view. Use the worked example above to check the reconciliation in your own monthly report.
Review the demo auditCheck plans and current scope