← FinOpsAid blog

Why don't our team costs add up to the bill? Reading the Teams page honestly — FinOpsAid blog

Why don't our team costs add up to the bill? Reading the Teams page honestly

Allocated cost, credit-share modeling, acceptance rate and the overlap warning — what every column on the FinOpsAid Teams page means, and why summing the rows is the one thing you must not do.

The Teams page exists to answer "which teams are driving AI spend". It answers that well. It does not answer "what should each team be charged", and the difference between those two questions is the entire content of the amber banner sitting near the top of the page.

Read the grammar behind every number for the badge conventions if you haven't.

The banner is not boilerplate

Why team totals exceed the billed amount A developer belonging to two teams has their full allocated cost counted inside each team's total. Summing every team row therefore counts shared members more than once, producing a figure larger than the organisation's actual billed spend. The org total on Cost Explorer or Billing is the authoritative figure. ALLOCATION OVERLAPS — BY DESIGN, NOT BY ERROR PLATFORM PAYMENTS ada rui omar counted twice Platform row $670 Payments row $440 Sum of rows $1,110 Actual org bill $850 Comparing teams to each other is valid. Adding them up is not. GitHub teams overlap; a chargeback ledger cannot. That is a modelling problem, not a data problem. For the authoritative billed total, use the org figure on Cost Explorer or Billing.
The overlap is not roundable away. If you need a ledger where the parts sum to the whole, you need a primary-team rule applied outside GitHub — which is exactly the design problem covered in chargeback by team.

The KPI row

Tile What it counts Direction
Team AI Usage Cost Sum of every team's allocated cost. Footnote: "allocated · not billed". Worse — but remember this total is inflated by overlap.
Active Teams Number of teams with any activity. Neutral.
Members Sum of member counts across teams — also inflated by people on multiple teams. Neutral.
Cost / Team Team AI Usage Cost ÷ team count. Neutral. A blunt average; the ranked list below is more useful.

Neither of the two sums is a headcount or a bill. They're roll-ups of a roll-up.

The basis badge — the most important chip on the page

Top-right of the Teams card sits one of two chips, and it changes what every dollar figure means:

Green — "GitHub-attributed." GitHub reported per-developer Copilot cost directly (via the billing endpoints that accept a user parameter), and the team figure is a straight roll-up of real attributed dollars. The cost column header reads Attributed Cost.

Amber — "Estimated · credit-share." GitHub did not attribute per-user cost, so we split the org's AI-credit spend across developers in proportion to the AI credits each one consumed, then rolled that up per team. The column header changes to Allocated Cost (est.).

Same layout, different epistemic status. Check the chip before you quote a figure, and say which one you were looking at.

The Teams table

Column Meaning Direction
Team Team slug with a two-letter avatar, linking to the team's detail page and out to GitHub.
Members Members in that team. Neutral.
AI Credits Total AI credits consumed by its members. A usage signal, not money. Neutral — high credits with low cost means cheap models, which is efficient.
Acceptance Average Copilot suggestion-acceptance rate for the team. Higher is better — with a caveat below.
Attributed / Allocated Cost The dollar figure, per the basis badge. Lower is better for the same output.

Rows are sorted by cost descending, with credits as a tiebreak.

On acceptance rate: it measures how often a suggestion was kept, which tells you whether the tool fits the codebase. A team working in an unusual language, a heavily bespoke framework, or a codebase with strict lint rules can be getting real value at a low acceptance rate. Treat a low number as a prompt to ask the team, not as a verdict on the team.

The most interesting row is rarely the top one. Look for high credits with low acceptance — that team is generating a lot of suggestions and keeping few of them, which is the clearest efficiency signal on the page.

AI usage cost by team

A ranked horizontal bar list of the top eight teams by cost, with the same "allocated, not billed — overlaps across shared members" subtitle. Same numbers as the table, shaped for a screenshot in a deck.

Clicking any team opens its detail page: allocated cost, member count, AI credits, acceptance rate, a membership history timeline showing who joined and left, and a per-member table with department, credits, acceptance and allocated cost.

That membership history is the piece people miss. When a team's cost jumps, the question is usually "did we add people or did existing people use more?" — and the timeline answers it directly.

What people get wrong on this page

The 60-second read

Frequently asked questions

Why do team costs add up to more than our GitHub bill?

Because members on multiple teams are counted in full inside each team, so the rows overlap by design. GitHub teams overlap and a chargeback ledger cannot. Use the page to compare teams against each other, and take the org total from Cost Explorer or Billing as the billed figure.

What does the Estimated credit-share badge mean on the Teams page?

It means GitHub did not attribute per-user Copilot cost for your org, so FinOpsAid split the org's AI-credit spend across developers in proportion to the credits each consumed, then rolled that up per team. When GitHub does attribute cost directly the badge turns green and reads GitHub-attributed.

Can I use the Teams page for chargeback?

Use it for showback, not chargeback. Chargeback needs every dollar to land in exactly one place, which requires a primary-team rule that GitHub cannot supply. The overlapping allocation here is honest about that rather than hiding it behind a rounded total.

Want your own team breakdown? Connect your GitHub org — read-only and free during beta — or explore the demo first. Next: how to read the Developers page.