Cost & Licensing

From the field archive · Learned in 2023

Charging Bot Usage Back to Departments: An Early Lesson in AI Cost Governance

A utility would only buy if it could charge chatbot usage back to departments. Here's the workaround we built in 2023, and the native controls I'd use today.

Kaustubh Giri··7 min read

Hero image for Charging Bot Usage Back to Departments: An Early Lesson in AI Cost Governance

In November 2023, a utility told us something I've heard many times since: "We'll buy this only if we can charge the usage back to the departments that use it." Their finance model needed every shared service to land on a department's budget. Power Virtual Agents capacity was pooled at the tenant, and sessions weren't attributed to any department. The licensing gave us no natural way to split the bill.

That conversation was my first real lesson in AI cost governance. It continued through 2024: a trial-consumption question in March, a "messages are counted at the tenant level, so how do we allocate?" thread in April, and, in December, a telecom provider weighing two different ways to buy capacity. In this post I go through what we did then, what the product does natively now, and the chargeback patterns I recommend today.

What's changed since 2023

The unit changed from sessions to messages, and then to Copilot Credits on September 1, 2025. Prepaid credits still pool at the tenant, but they must be allocated to an environment before agents there can use them. Each environment can be capped or allowed to draw from unallocated tenant capacity. Pay-as-you-go billing plans link environments to an Azure subscription and resource group, so costs show up in Azure Cost Management. The admin center now offers downloadable consumption reports by environment, agent, or user. Native chargeback is now possible, as long as your environment design supports it.

01Why chargeback was hard in 2023

The problem wasn't measurement. It was attribution. Capacity was bought and consumed at the tenant level, so the admin center could tell you how much the tenant used, but not which department caused it. A bot built by IT for HR, used by field staff, and paid for centrally had no obvious owner on an invoice.

The April 2024 thread made the same point in a different way. The customer understood that messages were counted at the tenant level. They wanted to know how to allocate that pool to cost centers. At the time, the honest answer was that there was no native cost-allocation feature. Whatever split we came up with would be our own calculation, not something the billing system enforced.

The takeaway: if the platform pools cost and you need to split it, you need a key that maps usage to a cost center. In 2023, we had to build that key ourselves.

02The workaround we used

For the utility, I suggested Azure Application Insights. Each bot could send telemetry to Application Insights, and we could add custom events that recorded which department a conversation belonged to, based on the bot or on the signed-in user. Finance could then split the tenant total in proportion to each department's share of conversations.

From the field

The utility's main concern was proving that a chargeback model was possible before they committed to buying. A telemetry-based split was enough to get them past that point. It wasn't perfect. It measured conversations, not billed units, so we were allocating cost by proxy. But it gave finance a defensible number, and that was the real requirement.

My tip

Application Insights is still where I'd look for conversation-level telemetry: which topics fired, errors, escalations, and custom events. It still doesn't report Copilot Credits. Use it alongside the licensing numbers, not instead of them.

03The building blocks you have today

CapabilityWhat it gives you for chargeback
Credit allocation per environmentPrepaid credits are assigned to environments in PPAC under Licensing → Copilot Studio. The environment becomes the unit of budget.
Draw from tenant capacityWhen selected, an environment keeps consuming unallocated tenant credits after its allocation runs out. When cleared, it's capped at its allocation.
Pay-as-you-go billing plansLink environments to an Azure subscription and resource group. An environment can be linked to only one billing plan at a time.
Azure Cost ManagementEach billing plan is a Power Platform account resource you can tag, filter, budget, and set alerts on.
Consumption reportsDownload by environment, agent, or user from the Summary tab. Detailed reports add feature, channel, model, and knowledge or tool columns.
Agent Monitor pageShows the total credits an agent has consumed, with a breakdown when one is available.
Power Platform APISets allocations and tenant-draw behavior in code, which helps when you manage many environments.

The takeaway: the environment is now the native cost boundary. Most good chargeback designs start there.

04Three chargeback patterns

Cleanest

A. Environment per department

Each department's agents live in its own environment, with its own credit allocation. Chargeback is just the environment report. Clear tenant draw if the department has a fixed budget.

Finance-friendly

B. Billing plan per department

Link each department's environments to its own pay-as-you-go billing plan, in that department's subscription or resource group. Costs then appear in Azure Cost Management with tags and budgets.

Shared agents

C. Shared environment, split by user

One environment serves many departments. Download the user report and map users to cost centers using your directory data. This takes the most effort and is the least exact.

Here's how I approach the choice. If departments build their own agents, use pattern A, and add B if finance wants Azure-native reporting. Use pattern C only for genuinely shared agents, such as a company-wide HR or IT helpdesk. Even then, I'd often treat that agent as a central cost rather than split it.

From the field

In December 2024 a telecom provider asked me to explain two purchase options side by side: a prepaid capacity pack, and the pay-as-you-go meter that had just become available for Copilot Studio. Their real question was about chargeback, not price. Pay-as-you-go billing plans map to Azure subscriptions, so each business unit's usage could land on its own bill. That made the pay-as-you-go option the better fit for their cost model, even before we compared prices.

Pay-as-you-go plans can also be set up at a finer level than a department. Microsoft's own example gives two finance subteams separate billing plans on the same Azure subscription, so each subteam's costs can be reported separately.

05Gaps to plan for

  • Anonymous usage has no owner. In the user report, sessions where the user didn't sign in can appear under an all-zero user ID with no name. Public-facing agents can't be split by user.
  • User reports are harness-specific. Microsoft says the user report shows consumption by user for agents on the standard harness. Check current docs for other harnesses.
  • No per-conversation detail. The reports don't show usage for a single conversation or message, so you can't bill one transaction at a time.
  • Uncapped environments. An allocation only works as a boundary if tenant draw is off and no pay-as-you-go plan is linked.
  • Trials don't predict production. In March 2024 a customer asked how much a trial would consume. Today, a trial license lets someone build and test, but not publish. Estimate production use with Microsoft's usage estimator instead.

06My monthly cost-governance routine

  1. Download the environment report first to see where consumption happened.
  2. Drill into the agent report for any environment that moved unexpectedly. Use the user report only when you need to.
  3. Compare each department's environment allocation to its actual use, and adjust allocations, in code if you have many environments.
  4. Review Azure Cost Management budgets and alerts for each pay-as-you-go billing plan.
  5. Confirm that every environment's tenant-draw setting matches its budget model.
  6. Send each department owner a one-line summary: credits used, top agent, and any change you're making.

For the full mechanics of credits, including rates, the three ways to buy them, and what happens when an environment runs out, read the 2026 follow-up to this lesson: Copilot Credits, Explained Without the Confusion. Where the agents live affects cost too, so environment strategy matters here. I cover it in Environment Strategy and DLP, and the reporting tools are covered in the governance toolbox.

Where I'd start

Decide who pays for what before the first agent goes live, not after the first invoice. Make the environment your cost boundary: one per department where you can, with a credit allocation and a deliberate tenant-draw setting. If finance wants Azure-native reporting, link those environments to department-level pay-as-you-go billing plans and tag the resources. Keep Application Insights for conversation telemetry, and use the admin center reports for billed credits. The 2023 workaround took weeks to design. Today most of it is configuration.

Happy to go deeper on any of this.

— K.G

Sources

  • Microsoft Learn: Manage Copilot Credits and capacity for Copilot Studio
  • Microsoft Learn: Tutorial: Manage Copilot Credits allocations programmatically
  • Microsoft Learn: Pay-as-you-go plan overview; Set up a pay-as-you-go plan; View usage and billing for pay-as-you-go plan
  • Microsoft Learn: Licensing for agents powered by the standard harness
  • Microsoft Learn: Overview of usage-based billing (Copilot Studio)
Kaustubh Giri

Kaustubh Giri · Sr Solution Engineer at Microsoft. 22 years in tech, 18 at Microsoft, helping enterprises build and govern AI agents on Copilot Studio and Power Platform.