Cost governance · Updated June 2026

How to Build a "Bill of Cloud": Showback & Chargeback in Azure

By the CloudFinOpsKit team. 10 min read.

A "Bill of Cloud" is a clear statement of what each team, product or cost centre spent in the cloud — the cloud equivalent of an itemised invoice. It's the single most powerful tool in cost governance, because nothing changes spending behaviour faster than showing an engineering lead the number next to their team's name. This guide covers how to produce one in Azure: the difference between showback and chargeback, the allocation mechanics, how to handle the costs nobody owns, and how to make the statement defensible enough that finance will act on it.

Showback vs chargeback: start with the easier one

The two words get used interchangeably, but they are different commitments:

The mature path is almost always showback first. Run showback for a few months until teams stop disputing the figures, then flip to chargeback. Attempting chargeback on day one — before allocation is accurate — tends to collapse into arguments and erodes confidence in the whole programme.

The three ways to allocate Azure spend

Every Azure allocation strategy is some blend of three mechanisms:

MechanismHow it worksBest for
Subscription / management groupOne subscription (or MG branch) per team, product or environment. Cost rolls up by scope automatically.Clean, hard boundaries; production vs non-prod; large business units.
Resource tagsTag resources with CostCenter, Team, Environment, Application; group Cost Analysis by the tag.Many teams sharing subscriptions; fine-grained, app-level allocation.
Cost-allocation rulesCost Management rules that redistribute shared costs from a source scope onto target teams by a chosen split.Hub networking, shared platforms, support charges.

Most organisations land on a hybrid: subscriptions for the big boundaries, tags for everything inside them, and allocation rules to deal with the shared remainder. Tags are where the work is — and where it usually breaks down.

Why tagging is the foundation (and the failure point)

You cannot allocate what you cannot attribute. A resource with no CostCenter tag and no owning subscription is unallocatable — it lands in an "unallocated" bucket that, in most untreated estates, is 30–60% of the bill. The first job of any showback effort is to drive that bucket down.

That means a small, enforced set of allocation tags — not a sprawling taxonomy. Four or five keys cover almost every chargeback model: CostCenter (or BusinessUnit), Environment, Owner, and Application/Project. Enforce them with Azure Policy (require-tag and inherit-tag-from-resource-group policies), and track coverage as a KPI. We go deep on exactly how in our Azure tagging strategy guide.

Your Bill of Cloud, generated automatically. The CloudFinOpsKit Tool's report includes a Cost Allocation Statement — a ready-made Bill of Cloud that allocates your actual billed spend to the best-covered tag (Cost Center, Business Unit, Environment…), inherits resource-group tags onto untagged resources, and shows an explicit unallocated bucket plus a coverage %. It's the showback view, built from real Cost Management data, with no spreadsheet work.

Producing the statement in Azure Cost Management

  1. Portal → Cost Management → Cost analysis.
  2. Set the view to the previous full calendar month and Amortized cost (so reservation purchases are spread, not lumped — the fair basis for allocation).
  3. Group by your allocation dimension: a tag like CostCenter, or Subscription if you allocate by subscription.
  4. Export or screenshot the breakdown. That table — cost per cost centre, plus the untagged remainder — is your Bill of Cloud.

Use amortized, not actual, cost for allocation. Actual cost dumps a 3-year reservation's entire upfront payment into one month and one team; amortized spreads it across the resources that actually consume the commitment, which is the only fair way to charge teams.

Handling the costs nobody owns

Some spend genuinely belongs to no single team: hub VNets and firewalls, shared Log Analytics, ExpressRoute, enterprise support, and the unused portion of reservations. You have three defensible options, in rough order of sophistication:

Whatever you pick, write it down and make it visible. Teams will accept an imperfect rule they understand far more readily than a perfect one that's a black box. Azure Cost Management's cost-allocation feature can apply these splits centrally, or you can apply them in your reporting layer.

From statement to behaviour change

A Bill of Cloud only creates value when someone acts on it. The pattern that works:

FAQ

Do I need a dedicated platform to do showback?

No. Cost Management grouped by tag, exported monthly, is a perfectly good Bill of Cloud for most organisations. A tool helps by automating the allocation, surfacing the unallocated bucket, and attaching savings opportunities — but the mechanics are built into Azure.

What's a good unallocated-cost target?

Under 5% is excellent; under 15% is workable for chargeback. Above ~30% and your allocation isn't trustworthy yet — fix tagging before charging anyone.

Should reservations be charged to the team that bought them or the team that uses them?

The team that uses them — which is exactly why you allocate on amortized cost. The buyer (often a central platform team) shouldn't carry the cost of capacity another team consumes.

Related reading: an Azure tagging strategy that supports chargeback · the cloud cost governance framework · what FOCUS is and why it matters