How to set up chargeback and showback
Allocating cost to departments across Azure and Fabric, without the argument about the allocation key crowding out the real conversation.

- 01
Choose showback first, not chargeback
Showback shows what a department consumes; chargeback forwards the bill. The difference is governance, not technology, but the order is decisive. Start with showback: then you fix the errors in your model while nobody is losing money over it, and you build trust in the numbers before they carry consequences.
The rule of thumb is three to six months of showback before you actually charge anyone. In that period the conversation is about "is this right" instead of "I do not want to pay this".
- 02
Decide the unit you allocate to
Deliberately pick the smallest unit that has an owner. In practice there are three:
- Azure resource. Has tags and shows up directly in Cost Management. The easiest one.
- Fabric workspace. Has an owner but no price; the cost sits on the capacity beneath it.
- Copilot user. Has a licence and therefore a price, but no consumption.
These three do not mix by themselves. Accept that your model uses a different allocation key per layer, and write down which one per layer. A model that pretends everything is the same is exactly the model people do not trust.
- 03
Make tags mandatory before you start
In Azure the tag is your allocation key. Pick few and enforce them: cost centre, application, environment and owner cover nearly every question. Make them mandatory with Azure Policy in deny mode, not audit, because an audit policy produces a report and not a tag.
For existing resources use a modify policy with a remediation task. Expect some manual work to remain: anything created by a pipeline without tags has to be fixed in that pipeline and not in the portal.
- 04
Allocate shared cost explicitly
A capacity, a gateway and a network belong to everyone. There is no technically correct split, so pick one and write it down:
- Split evenly across participating teams. Simple, explainable, and unfair as soon as team sizes differ a lot.
- By measured consumption, for example CU seconds per workspace from the Capacity Metrics app. Fairer and much more work.
- As platform cost that nobody gets allocated. Honestly often the best choice for the first year.
The pitfall is not the wrong choice but the absence of a choice. An undocumented key gets re-litigated with every invoice.
- 05
Bring the sources into one report
Three sources, one table: exports from Microsoft Cost Management, the Capacity Metrics app for distribution inside a Fabric capacity, and the licence report from the Microsoft 365 admin center. Put them on a shared time axis and a shared department dimension.
Build this as a normal data product in your own platform, not as a spreadsheet. A cost report assembled by hand every month stops being updated after three.
- 06
Publish on a fixed monthly cycle
A number that arrives irregularly steers nobody. Pick a fixed day, always publish the same shape, and put two things next to the amount: the change versus last month and the largest item. Without those two the report is an archive.
What this gets you
Chargeback is not an accounting goal but a behavioural instrument. It works as soon as a team lead can explain the amount through a choice the team made itself. If that does not work, the model is too granular or too opaque, and going back to showback is not a step backwards but a correction.
The process at a glance
Click a step for its key decision
Choose showback first, not chargeback
This step has no explicit decision, but builds on the previous one.
Read next
Related patterns
Related use cases
Related best practices
