Charge seats to the cost centre of the person who holds them, and split each tool's usage charges in proportion to measured usage, scaled so the total matches the invoice. For Claude Code, get usage by team from telemetry: label each machine with a team.id or cost_center and send it to Ganivra. For Cursor and Copilot, use seat counts from each admin console plus per-person usage from Cursor's Admin API and GitHub's usage reports. Spread whatever you can't map by headcount, and reconcile to each invoice before you post the journal. Download the free chargeback template (.xlsx).
Showback or chargeback: which should finance use for AI coding tools?
Showback reports each team's AI coding cost without moving money. Chargeback posts that cost to the team's cost centre in the general ledger, usually as a month-end journal. The data and the method are the same for both. The difference is whether the number lands in a team's P&L.
- Start with showback for one or two closes. Team leads will find people mapped to the wrong team, contractors with no team, and bots on human seats. Fix those before anyone's budget is charged.
- Move to chargeback once the mapping holds and AI coding spend is material: typically when it is a visible line in engineering's budget, or when teams use the tools very differently.
- Keep one method for every tool. Charging Copilot by cost center and Claude Code by headcount makes teams compare numbers that weren't built the same way.
What do Claude Code, Cursor and GitHub Copilot bill, and what can you see per person?
| Claude Code | Cursor | GitHub Copilot | |
|---|---|---|---|
| Seat price (list, per month) | Claude Team: Standard seat $25 ($20 annual), Premium seat $125 ($100 annual) | Cursor Teams: Premium $30, Super $100, Ultra $200 | Business $19, Enterprise $39 |
| Usage charged on top | Usage credits after the seat allowance, at API rates; or all usage at API rates on Console or usage-based Enterprise billing | Additional usage from a prepaid team balance: third-party models, and Cursor models after a seat's weekly pool | AI credits beyond the pooled monthly allowance, at $0.01 per credit |
| Per-person data | Spend report export per user and model (usage credits only on seat plans); Claude Code telemetry per developer | Admin API: members with email, and usage events with the amount charged | Usage reports with username; AI usage report per user and model |
| Native team or cost centre | Groups on Enterprise; spend by RBAC group through the Enterprise Analytics API | Group-level settings and spend limits on Enterprise | Cost centers for users, enterprise teams, organizations and repositories |
| Gives you spend by team | Not on the Team plan | Not on the Teams plan | Yes, with cost centers on metered billing |
Sources: Claude pricing, Claude usage analytics, Cursor Teams pricing, Cursor Admin API, Copilot billing and GitHub cost centers. Compare total cost for your team size in the AI coding tools cost calculator.
How do I charge Claude Code costs back by team?
Claude Code costs have two parts. Seats are easy: each seat goes to the team of the person who holds it. Usage is the hard part. On the Claude Team plan, usage inside each seat's allowance isn't metered in dollars. Anthropic's spend report covers only usage credits above the allowance, and lists them per user and model, not per team. On API billing, the Console shows spend per member, not per team or cost centre.
Claude Code's OpenTelemetry export fills the gap. Each request reports its tokens and the developer's account. You add the team yourself with a resource attribute, which Anthropic's monitoring guide documents for multi-team organizations:
OTEL_RESOURCE_ATTRIBUTES="team.id=payments,cost_center=CC-4100"Values can't contain spaces, so use short keys such as payments and map them to cost centre names in your sheet. Roll the setting out to every machine with managed settings, using one file per team. See Claude Code managed settings for cost tracking.
- 01Send telemetry to Ganivra
Ganivra prices every Claude Code request at list API rates and totals it by developer and team. It uses the first of
team.id,team,team.nameorcost_centerthat is set, on any plan. Prompts and code are never received. - 02Download teams as CSV
On the dashboard's Coding agents tab, choose Teams and download the CSV: team, developers, requests, sessions, active days, tokens and cost at list rates. It pastes straight into the template.
- 03Split the invoice by share
List-rate cost on a seat plan is higher than what you pay, because the seat covers part of it. Use each team's share of list-rate cost to split the usage-credit line on your invoice. On API billing the two should be close, and the share method still keeps the total equal to the invoice.
- 04Or map teams to cost centres in Ganivra
In Reports, add allocation rules that match a team or a developer to a cost centre. The cost report then shows known cost per cost centre. Its evidence export lists each request with its developer, team and cost centre, for audit.
On Claude Enterprise, Anthropic's Analytics API can group cost by RBAC group for per-department spend. That covers Anthropic-billed usage. Usage through Amazon Bedrock or Google Vertex AI appears in your cloud bill instead. Telemetry covers all of them. Details: Claude Enterprise consumption guide and usage credits.
How do I charge Cursor costs back by team?
Cursor Teams bills a price per active seat: Premium, Super or Ultra. Seats don't share their weekly pools. Usage beyond a seat's pool, and all third-party model usage, is paid from a prepaid balance the whole team shares. Third-party models cost their API list price plus $0.25 per million tokens. Cursor has no cost centre field on the Teams plan, and lists group-level settings and spend limits for Enterprise. So charge it back from people:
- Seats: pull members with
GET /teams/membersin the Admin API, which returns each member's email and role. Add their seat tier, and map each email to a team in your HR or identity system. - Usage: for each member, sum
chargedCentsfromPOST /teams/filtered-usage-eventsover the month and divide by 100. Use events rather than/teams/spend, which covers only the current billing cycle. - Mid-month changes: adding a member creates a prorated charge for the rest of the period. Upgrades are charged the prorated difference right away, and downgrades apply at the end of the period. Use the template's billable-days column to match.
Cursor's Admin API also documents billing groups with spend per group. If your plan includes them, a billing group per cost centre gives you Cursor spend by team directly. Check with Cursor before relying on them.
How do GitHub Copilot cost centers work for chargeback?
GitHub is the only one of the three with native cost centres. Enterprise owners and billing managers can create up to 1,000 cost centers. Each can hold users, enterprise teams, organizations and repositories. For licence-based products like Copilot, a cost center is charged for the users in it. When a user could fall into more than one, GitHub's precedence decides:
- A user assigned directly to a cost center is charged there.
- Otherwise, the user's enterprise team decides. If they are in several, the team created first applies.
- Otherwise, the cost center of the organization the usage is allocated to. If the organization is in no cost center, the cost stays with the enterprise.
Cost center changes apply to future usage only, so set them up before the month you want to charge. Cost centers apply only to metered billing, not to volume or subscription billing. You can add budgets per cost center, and when budgets overlap, the most restrictive one applies.
- Seats: Business is $19 and Enterprise $39 per user a month. Added seats are billed pro rata. Removed seats are billed to the end of the cycle, so don't prorate removals.
- AI credits: Business includes 1,900 credits per user and Enterprise 3,900, pooled across the billing entity. The pool resets on the first of each calendar month. Usage beyond the pool costs $0.01 per credit. Because the pool is shared, split the overage by each person's credit usage, not by who happened to use the last credits.
- Reports: under Billing > Usage, choose Get usage report. GitHub emails a link that expires after 24 hours. The detailed report (up to 31 days) includes
usernameandcost_center_name, and the AI usage report breaks credits down by user and model. Details: billing reports reference.
Which allocation method should you use for AI coding costs?
| Cost | Allocate by | Why |
|---|---|---|
| Seats | The person holding the seat, at your contract price, prorated where the vendor prorates | A seat is a fixed cost tied to one person, so their team should carry it |
| Metered usage | Each team's share of measured usage, scaled to the invoice | Usage varies widely between developers, and scaling keeps the total equal to what you paid |
| Unmapped usage | Spread by engineer headcount, or hold on an unmapped line | Spreading is simple; holding it makes someone fix the mapping |
| Shared or automation seats | A platform or shared engineering cost centre | CI bots and service accounts serve everyone, so don't load them onto one team |
| Taxes and credits | Follow your existing software policy | Treat them the same way as other SaaS |
Avoid splitting everything by headcount. Usage-based charges vary far more between developers than seats do. Spending on agentic work is concentrated in a few people, so a headcount split moves cost from the heaviest team to the lightest. See Claude Code cost per developer for how wide that spread runs.
What does an AI coding chargeback look like? A worked example
The template ships with one illustrative month for four cost centres and 18 engineers. The people, teams and amounts are made up. Claude Code usage at list rates came to $4,708.85, but the invoice's usage-credit line was $3,120.00, so each team's share of list-rate cost splits $3,120.00. One contractor and some Claude Code usage had no team. That $96.82 is spread by headcount.
| Cost centre | Engineers | Seats | Usage | Unmapped share | Total charge | Per engineer |
|---|---|---|---|---|---|---|
| CC-4100 Payments Engineering | 6 | $198.81 | $868.06 | $32.27 | $1,099.14 | $183.19 |
| CC-4200 Platform & Infrastructure | 5 | $359.00 | $1,669.10 | $26.90 | $2,054.99 | $411.00 |
| CC-4300 Mobile Apps | 4 | $99.00 | $285.78 | $21.52 | $406.29 | $101.57 |
| CC-4400 Data & ML | 3 | $40.00 | $433.99 | $16.14 | $490.13 | $163.38 |
| Total | 18 | $696.81 | $3,256.93 | $96.82 | $4,050.56 | $225.03 |
The spread between Platform (about $411 per engineer) and Mobile (about $102) is the point of measuring usage. A headcount split would have charged every team about $225 per engineer, and Mobile would have paid for Platform's agent runs.
Download the AI coding tools chargeback template
Download the chargeback template (.xlsx)
The workbook has seven sheets: Read me, Settings, Teams, Seat roster, Claude Code, Chargeback and Journal. Blue cells are inputs and black cells are formulas. Settings lists seat prices checked against each vendor on November 7, 2026. It works in Excel, Google Sheets and Numbers, with no macros.
- 01Set prices and invoices
In Settings, enter the seat prices you actually pay (contract prices beat list prices), the days in the billing period, your expense and clearing accounts, and each tool's seat charges and metered usage from this month's invoices.
- 02Map teams to cost centres
In Teams, list every team key exactly as it appears in your data, the cost centre it belongs to, and its engineer headcount. Several teams can share a cost centre.
- 03Fill the seat roster
One row per person per tool: email, team key, tool and plan tier. For Cursor and Copilot, add each person's metered usage from the vendor export.
- 04Paste Claude Code usage from Ganivra
In Ganivra, open the Coding agents tab, choose Teams and download the CSV. Paste the rows into the Claude Code sheet at A5.
- 05Check the chargeback and reconciliation
List each cost centre once on the Chargeback sheet. The reconciliation block shows whether seats and usage match each invoice, and a check cell catches cost centres you forgot to list.
- 06Post the journal
The Journal sheet has one debit per cost centre and one balancing credit, ready to import into your ERP.
Usage for each tool is split in proportion to measurement, so it always adds up to the invoice. Seats are not scaled, so a seat difference in the reconciliation block means something real: a missing roster row, a wrong tier, proration, or a discount you haven't entered.
Month-end close checklist for AI coding chargeback
- Day 1: download the Claude Code team CSV from Ganivra, the GitHub detailed and AI usage reports, and Cursor members and usage events for the month.
- Day 1: update the roster for joiners, leavers and tier changes, and map every new person to a team.
- Invoice day: enter each invoice's seat and usage lines and check the reconciliation block reads Reconciled, or explain the difference.
- Before posting: confirm the check cell for missing cost centres is zero and the journal balances.
- After posting: send each team lead their line, with per-engineer cost, and keep the downloaded exports with the close file.
Common mistakes when charging back AI coding costs
- Charging list-rate usage as if it were the bill. On seat plans, list-rate cost is an allocation key, not an amount owed. Scale it to the invoice.
- Leaving cost center setup until month end. GitHub applies cost center changes to future usage only.
- Team labels with spaces or inconsistent casing.
Paymentsandpaymentsbecome two teams. Pick lowercase keys and map them to display names in one place. - Forgetting cloud-billed usage. Claude Code through Bedrock or Vertex AI shows up in your cloud bill, not Anthropic's reports.
- Charging automation to whoever set it up. Give bots and CI agents their own cost centre or team key.
From chargeback to budgets
Once each team has a monthly number, give it a ceiling. In Ganivra you can set a monthly budget for each team or developer, with warning and critical thresholds, matched to the same team key as the chargeback. See How to set Claude Code spend limits by team, and Claude Code Team seats vs API for whether each team is on the right plan.
AI coding costs chargeback: frequently asked questions
What is the difference between showback and chargeback for AI coding tools?
Showback reports each team's AI coding cost without moving money; chargeback posts that cost to the team's cost centre in the general ledger, usually as a monthly journal entry. Most companies start with showback for one or two months so team leads can check the numbers, then switch to chargeback once the mapping from people to cost centres is trusted.
How do I allocate Claude Code costs to teams?
Seats go to the team of the person who holds them. For usage, label each developer's machine with a team.id or cost_center attribute in Claude Code's OpenTelemetry settings, and send the telemetry to Ganivra. Ganivra prices every request at list rates and totals it by team, and you split the usage on your Anthropic invoice in proportion to each team's share.
Does GitHub Copilot support cost centers?
Yes. On GitHub's metered billing, enterprise owners and billing managers can create cost centers and add users, enterprise teams, organizations and repositories. Copilot licence costs follow the users in each cost center, usage reports include a cost_center_name column, and budgets can be set per cost center. Cost centers don't work with volume or subscription billing.
Can Cursor show cost per team?
Cursor's Teams dashboard tracks usage per member, and its Admin API returns members with email addresses and usage events with the amount charged for each. Group-level settings and spend limits are listed for Cursor Enterprise. To charge Cursor back by team, map each member's email to a team and add their seat price plus their charged usage.
Should AI coding tool costs be split by headcount?
Only the part you can't measure. Seats belong to the person who holds them, and metered usage should follow measured usage, because one heavy agent user can cost more than the rest of a team combined. Headcount is a fair way to spread what's left over, such as usage from people who haven't been mapped to a team yet.
How do I handle seats added or removed mid-month?
Prorate by billable days if the vendor does. GitHub bills added Copilot seats pro rata and keeps billing removed seats to the end of the cycle; Cursor creates a prorated charge when a member is added and applies downgrades at the end of the billing period. The template has a billable-days column for this.
Is there a free AI coding tools chargeback template?
Yes. Ganivra's spreadsheet template covers Claude Code, Cursor and GitHub Copilot. It maps teams to cost centres, prices seats, splits each tool's metered usage to match its invoice, spreads unmapped cost by headcount if you choose, reconciles to invoices and produces journal lines. It works in Excel, Google Sheets and Numbers.
For finance and engineering leaders
Get Claude Code spend by team, ready for the close.
Start a 14-day Ganivra trial, turn on Claude Code's telemetry, and download spend by team and developer for your chargeback each month. No credit card required.