Skip to content

Repository files navigation


Credit Usage & Chargebacks

Monitor how Copilot credits are consumed, attribute usage to departments and surface capacity risk across your organization.


Built by Microsoft Analytics Hub

All Reports: https://microsoft.github.io/Analytics-Hub/


Found this useful? ⭐ Star this repo to help others discover it!


Dashboard Preview ↓  ·  Instructions ↓  ·  Related Resources ↓  ·  Email your Admin ↓  ·  Live Web Apps ↗



▶️ Credit Usage & Chargebacks Dashboard Preview
Credit Usage & Chargebacks Dashboard Preview

📊 Why Monitor Credit Usage & Insights You Can Explore

Copilot credits are a finite, paid resource. Tracking how they are consumed turns a flat invoice into an accountable, department-level picture. Monitoring credit usage helps you:

  • Attribute consumption to the right departments and cost centers
  • Spot users trending over their monthly credit limit before overruns
  • Recognize standout individuals and understand usage cohorts
  • Rebalance credit allocation from under-utilized to over-limit teams

Consumption profile: How many credits is the organization consuming against its credit limit? What is the utilization %? How does usage break down by sessions and % used per user?

Department attribution: Which departments and cost centers are driving consumption? How do credits roll up for chargeback at $0.01 per credit?

Over-limit & budget status: Which teams are nearing or exceeding their monthly credit limit? Where is utilization crossing 100%, and what is the over-limit chargeback?

Cohorts & standouts: Which usage cohort does each user fall into? Who are the standout individuals — high relative to their department average — worth recognizing or investigating?


📋 Instructions
Written Setup Guide

Step 1. Gather the two data exports (Required for All Setups)

This report is powered by two CSV exports that join on the user principal name. No database connection is required — the report reads both files through Power Query parameters.

Where to get Export 1 (Copilot credit consumption): Microsoft 365 Admin Center → Copilot → Cost management → Consumption tab → Export CSV.

Where to get Export 2 (Microsoft Entra org directory): Microsoft Entra admin center → Identity → Users → All users → Download users (CSV), or pull the same attributes from Microsoft Graph (GET /users). Entra supplies each user's department, job title, country, and manager — the org context the credit export does not contain.

Detailed field requirements

Export 1 — Copilot credit consumption (one row per user):

Field Description
Display Name The user's display name
User Principal Name The user's work email — the join key
Monthly credit limit The user's monthly credit allocation
Monthly credits used Credits the user consumed this month
User ID The user's object identifier
Microsoft 365 Copilot license Whether the user holds a Copilot license
Last activity date Date of the user's most recent Copilot activity
Session Count Number of Copilot sessions in the period
% Used Monthly credits used as a percentage of the limit

This is a single credit stream — usage is not broken out by surface. Each user's monthly credit limit comes from this export, so there is no manual budget input to set.

Export 2 — Microsoft Entra org directory (one row per user):

Field Description
userPrincipalName The user's work email — the join key
displayName The user's display name
department Drives department attribution, slicers, and RLS
jobTitle Job title
jobFamily Job-family grouping (org-specific — see note)
city City, for geographic slicing
country Country, for geographic slicing
costCenter Cost center, for chargeback rollup (org-specific — see note)
manager The user's manager (UPN or display name)
businessUnit Business unit, for rollup (org-specific — see note)

department, jobTitle, city, country, and manager come straight from a standard Microsoft Entra Download users / Microsoft Graph (GET /users) export, so those columns work as-is. Do not rename these columns. Missing a column will cause blank visuals in Power BI with no error. Every user in the credit export should have a matching row in the Entra export, or those credits will not be attributed to a department.

Note: jobFamily, costCenter, and businessUnit are not standard Entra fields — an admin must add or map them (for example from an HR feed), or the cost-center and business-unit slicers stay blank.

Quick Reference

  1. Produce the credit consumption export

    • In the Microsoft 365 Admin Center, go to Copilot → Cost management → Consumption tab and click Export CSV.
    • This gives you per-user Copilot credit consumption — a single credit stream with each user's monthly credit limit, monthly credits used, session count, % used, and last activity date.
    • Save as CSV with the exact column names listed above.
  2. Produce the Microsoft Entra org directory export

    • In the Microsoft Entra admin center, go to Identity → Users → All users → Download users (or pull the same attributes from Microsoft Graph GET /users).
    • This maps each userPrincipalName to department, jobTitle, city, country, and manager — the org context the credit export lacks. (jobFamily, costCenter, and businessUnit are org-specific add-ons — see the field note above.)
    • Save as CSV with the exact column names listed above.
  3. Open the template in Power BI Desktop

    • Open the .pbit template file.
    • When prompted for parameters, set CreditCsvPath to the credit consumption CSV and EntraCsvPath to the Microsoft Entra directory CSV.
  4. Refresh and verify

    • Click Refresh.
    • Confirm the Executive Overview visuals populate (total credits used, credit limit, utilization %, chargeback $, users over limit) and that all 8 report pages render.
    • The per-user monthly credit limit comes from Export 1, so there is no manual budget input to set.

The report pages

  1. Consumption - org KPIs (total credits used, credit limit, utilization %, chargeback $ at $0.01 per credit, users over limit) plus headline visuals.
  2. Chargeback - per-department rollup (credits used vs limit, utilization %, over-limit credits and $, chargeback $, budget status), plus cost center and business unit rollups.
  3. Optimization & Limits - a utilization-band chart (Under 50% through Over 100%) and an all-user watchlist sorted by % of limit to spot users approaching or over their allowance, alongside allowance-adjustment candidates.
  4. Forecast (Credits) - projected credits and cost over a configurable horizon, with usage / adoption growth and prepaid-commitment scenarios.
  5. Billing Models - the same consumption priced three ways per department: PAYGO (per credit), Prepaid (credit pack at a prepaid rate), and Hybrid (prepaid allowance plus PAYGO overage), with an adjustable prepaid-rate slider and a cheapest-model flag.
  6. Prepaid Allocation - set your three inputs (rate per credit, prepaid rate, prepaid credits procured), then choose a prepaid credits allocation model - Prorated based on credits used, Prorated based on employee count, or Limited to budgeted allowances - to split the pool across departments, where each department pays for what the pool covers plus any overage (billed PAYGO). Pool-coverage KPIs (total usage, prepaid pool, usage covered by prepaid pool %, not covered by prepaid credits, total cost, estimated overage) sit above a covered-vs-gap chart and a per-department table (users, credits used, coverage, covered by prepaid, overage PAYGO, total charge).
  7. Glossary - definitions plus data and honesty notes.
  8. Appendix: FOCUS Cost View - the chargeback expressed in FinOps Open Cost & Usage Specification (FOCUS) columns (hidden in view mode).

Next Steps

Validation & Troubleshooting

Checklist for success:

  • No errors on load
  • Fields pane includes the expected tables (CoworkBilling, Org)
  • Executive Overview visuals populate (not all blank)

Common Mistakes & Fixes

Symptom Cause Fix
Blank visuals Missing required column(s) Re-export with the full column set
Missing slicers/labels No department / country in directory export Add the attributes and re-export
Credits not attributed to a department UPNs in the credit export have no matching directory row Reconcile the two exports on user principal name
Utilization or over-limit looks wrong Monthly credit limit missing from the credit export Re-export Export 1 with the monthly credit limit column
Load error CSV open in Excel Close the file and retry
Wrong file loaded Parameter points to the wrong path Re-check CreditCsvPath and EntraCsvPath
Publish / Distribute
  • Save your PBIX file after setup.
  • Publish to a Power BI workspace: File → Publish → Publish to Power BI.
  • For CSV Import, note that refreshes are manual — re-export and re-point the file to update.
Interpretation & Storytelling

Use the included guide to frame your narrative and drive action:

  • Storyboard presentation template: Chargebacks Interpretation Guide.pptx

Use the guide to:

  • Create a leadership-ready credit usage & chargeback review
  • Explain how chargeback is calculated at $0.01 per credit
  • Highlight departments trending toward their monthly credit limit
  • Recommend reallocation and recognition actions per department
Monitor with Refresh
  • For CSV Import: re-export the two CSVs on your cadence (e.g. monthly), overwrite the files, and refresh the report.
  • Verify each period that a fresh window of credit data appears.
  • Track utilization and over-limit users regularly so owners can act before overruns.
Row Level Security (RLS) — Restrict Who Sees What

Row Level Security (RLS) controls which rows of data each viewer can see — for example, showing a department lead only their own department's credit usage. This report ships with two roles. Setup happens in two places: Power BI Desktop (define roles) and Microsoft Fabric (assign members).

This report's roles:

Role What it sees
All Org (Admin) Unrestricted — every department. For finance and program leads.
Department Admin Only the viewer's own department, via a USERPRINCIPALNAME() filter on the SecurityFilter table.

Step 1 — Define roles in Power BI Desktop

  1. Open the report in Power BI Desktop.

  2. Go to the Modeling tab → click Manage roles.

  3. The All Org (Admin) and Department Admin roles are already defined. To add or adjust a department-scoped filter, use a DAX filter that returns TRUE for the rows the role may see.

    Common filters:

    Goal DAX filter
    Filter by Department Org[Department] = "Finance"
    Filter by Country Org[Country] = "US"
    Show only the viewer's own department SecurityFilter[UserPrincipalName] = USERPRINCIPALNAME()
  4. Click Save.

  5. Test (recommended): in the Modeling tab, click View as, select a role, and confirm the report filters correctly. Click Stop viewing when done.

Step 2 — Publish the report

Publish as normal: File → Publish → Publish to Power BI and select your workspace. The roles you defined are included automatically.

Step 3 — Assign members to roles in Microsoft Fabric

  1. Go to app.fabric.microsoft.com and open your workspace.
  2. Find the semantic model (dataset icon — not the report itself).
  3. Click the three-dot menu (...) next to it and select Security.
  4. On the left, click a role name. On the right, search for a person's name, email address, or Azure AD security group, then click Add.
  5. Repeat for all roles, then click Save.

Tip: Use Azure AD security groups rather than individual emails. When someone joins or leaves a team, you update access in Azure AD instead of returning to Fabric.

Important notes:

  • Workspace admins and report owners always see all data — RLS does not apply to them.
  • A viewer with no role assigned sees no data at all. Make sure every intended viewer is in at least one role.
  • A viewer assigned to multiple roles sees the union of access from all roles (OR logic, not AND).
  • RLS applies to all reports built on the same semantic model.

🤓 Nerd Corner

The report's two source paths are exposed as Power Query parameters — CreditCsvPath and EntraCsvPath — so swapping in a fresh extract is a parameter change and a refresh, with no model edits. Department attribution, over-limit tracking, the usage cohorts, and standout individuals all derive from the same star schema: a single CoworkBilling fact (27 measures) joined many-to-one to the Org directory (sourced from Microsoft Entra) on user principal name, alongside an Assumptions table holding the sole money knob (RatePerCredit, $0.01 per credit) and a SecurityFilter table for RLS.


💬 Feedback

We want to hear your feedback and suggestions. Please reach out to jordanking@microsoft.com.


🔔 Stay Updated
  • Star this repository to receive notifications about new template versions
  • 👀 Watch for updates and announcements
  • 🔄 Check back regularly for new features and improvements

Changelog

All notable changes to the Cowork Credit Chargeback template and report.

2026-07-23

Added

  • Billing Models page - compare the same monthly consumption under PAYGO, Prepaid (credit-pack), and Hybrid pricing per department, with an adjustable prepaid-rate slider and a cheapest-model flag.
  • Prepaid Allocation page - enter a procured prepaid credit pool (e.g. 2M credits) and see, per department, how it is allocated (priority fill), what is covered, and where the pay-as-you-go (PAYGO) gap falls; pool-coverage KPIs and a covered-vs-gap chart.
  • Optimization & Limits (renamed from "Optimization") - a utilization-band chart (Under 50% through Over 100%) and an all-user watchlist sorted by % of limit, to surface users approaching or over their allowance.

Changed

  • Unified the page banner (white header) across every page for a consistent look.
  • Softened the report color palette to a muted / pastel scheme.

Model

  • New what-if parameters: Prepaid Rate per Credit and Prepaid Credits Procured.
  • New measures for the billing-model comparison and prepaid-pool allocation (fair-share and priority-fill), plus Utilization Band columns.

2026-07-16 - Baseline

  • Initial Cowork Credit Chargeback template: two-CSV Power Query load (Copilot consumption + Microsoft Entra directory), RLS-ready model, executive / department / cost-center chargeback, credit optimization, forecast, glossary, and a FOCUS cost appendix.

🔗 Related Templates & Tools

Additional Resources: Analytics Hub

📥 Click Here to Download All Files


📧 Email Your Admin

📧 Before you begin, you need two data exports: a Copilot credit consumption export (Microsoft 365 Admin Center → Copilot → Cost management) and a Microsoft Entra org directory export (Entra admin center → Users → Download users). This pre-written email covers both required exports, the exact fields, the roles and permissions needed to produce them, software requirements, and the connection option — everything your admin needs in one click.

📨 Email Prerequisites to Your IT Admin


Found this useful? ⭐ Star this repo to help others discover it!

That's it! 🚀

About

Report for monitoring Credit Usage and Chargebacks

Resources

Code of conduct

Security policy

Stars

8 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages