As a GitHub administrator, you already have a strong place to start when somebody asks, “Why did our AI spend go up?” In Metered usage, you can see the change, choose the period, and group the data by organization or cost center.
That first investigation often leads to questions that are specific to your company. Finance may want a month-end report based on its own reporting calendar. An engineering leader may want to see whether an increase is spread across a team or concentrated among a few people. Answering those questions once is useful; answering them repeatedly calls for a reusable approach.
Use each surface for what it does best
The GitHub admin UI shows you where to look and gives you the controls to respond. The Billing Usage API helps you answer the recurring questions that are specific to your company. Neither replaces the other.
Together, they give administrators a practical loop: spot the change in Metered usage, understand it through a reusable API-powered view, and act with a targeted budget. That means better cost control without treating every user or team as the problem.
Let’s walk through this better-together approach using a common example: AI spend starts to rise, but the reason is not yet clear.
The question: Spend is up, but what is driving it?
Imagine that finance notices an increase in AI spend before the next close. It could be a sign that more developers are getting value from Copilot. It could also be one workload using far more than expected. At this point, nobody knows, and a broad restriction would be premature.
The GitHub administrator needs to help finance and engineering answer three practical questions:
- Which part of the business is driving the increase?
- Is the spend concentrated among a few users or broadly distributed?
- Which control should change without disrupting everyone else?
The goal is not simply to reduce a number. It is to understand the increase well enough to protect useful work while addressing anything unexpected.
1. Start in the admin UI: Find the increase
The admin UI is the natural place to begin because it lets you explore the data before you decide what kind of report or control you need. Open Billing and licensing > Metered usage and select the relevant reporting period.
This first check matters. It confirms that the increase is real, shows when it happened, and gives you a shared starting point for the conversation with finance and engineering.
Fig 01: Metered usage establishes the increase and the period that needs investigation.
Narrow the increase by organization
An enterprise total tells you that spend changed, but not where to look next. Group the usage by organization to see which part of the enterprise contributed most to the increase.
Fig 02: Organization grouping narrows an enterprise-wide increase to an accountable business area.
Suppose the octodemo organization stands out. You now know where to continue the investigation and which leaders can add context. You do not yet know whether the spend is justified, and that distinction matters. The increase could come from successful Copilot adoption, a migration, a seasonal workload, or an automated process that needs attention.
Connect the increase to a cost center
An organization can contain several teams, programs, and budgets. Grouping by cost center takes the investigation one step closer to the people who understand the work behind the spend.
Fig 03: Cost-center grouping identifies the financial owner of the increase.
In this scenario, octodemo-org-cc has the largest increase. In only a few clicks, the admin UI has taken us from an enterprise-wide signal to the cost center that needs a closer look. For a one-time question, this may be enough.
Now imagine that finance asks for the same analysis every month, with a fixed reporting period and a ranking of spend by user. That is the point where the API adds value. It does not replace the investigation you just completed; it helps you repeat and extend it.
2. Continue with the API: Answer the repeatable question
The Billing Usage API gives you access to the data behind a more tailored report. You can use filters to match the period finance cares about, focus on the cost center you found in the UI, and build a view that can run again tomorrow or next month.
Fig 04: Billing usage endpoints and time filters provide the inputs for a reusable report.
Define the reporting question first
Before writing code, state the question the report needs to answer. In this example, it is:
Which users in the selected cost center account for the most net spend during this reporting period?
That one question keeps the report focused. It also determines the workflow:
- List the organization's members to establish the candidate users.
- Resolve which members belong to the selected cost center.
- Query organization AI credit and premium-request usage for those users and the selected period.
- Combine the results into a per-user total.
- Rank users and aggregate the result by cost center.
The prototype uses year, month, and optional day filters so the output matches the finance period. It also accepts a cost-center filter. Because the admin UI has already pointed us to octodemo-org-cc, there is no reason to start with every member of the enterprise.
Understand the per-user query pattern
There is one API behavior to understand before building the report. The organization billing endpoints return an aggregate when the user filter is omitted. To create a spend-by-user ranking, the workflow makes a filtered request for each selected user and usage type.
For example, this request asks for Eve's AI credit usage in July 2026:
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer $GITHUB_TOKEN" \
-H "X-GitHub-Api-Version: 2026-03-10" \
"https://api.github.com/organizations/octodemo/settings/billing/ai_credit/usage?year=2026&month=7&user=eve"
The response contains one or more usage items, with amounts such as grossAmount, discountAmount, and netAmount. The prototype adds the netAmount values to calculate Eve's AI credit total for the period. It then runs the equivalent premium-request query and combines the two totals.
We can now see one user's contribution during the same period we investigated in the UI. Repeating the request for the members of the selected cost center gives us the ranking that finance asked for.
For a production workflow, a few practical details matter:
- Limit the candidate list to the cost center under investigation.
- Paginate organization membership and cost-center results.
- Use bounded concurrency instead of sending every request at once.
- Record partial failures rather than silently treating them as zero spend.
- Keep an audit record of when the data was pulled and transformed.
For a daily check, the report can use a narrow period and write a timestamped output. At finance close, the same workflow can produce the month-end rollup. The question stays the same; only the reporting window changes.
Reveal concentration that totals can hide
The result is a custom Spend by User view that brings the organization, cost center, reporting period, AI credit usage, premium-request usage, and total net spend into one place.
Fig 05: A company-specific dashboard exposes per-user concentration inside the selected cost center.
In the illustrative data, the octodemo organization has 22 users and $3,651 in total net spend for July 2026. The octodemo-org-cc cost center accounts for $2,700 of that amount. Two users stand out:
| User | AI credit net spend | Premium-request net spend | Total net spend |
|---|---|---|---|
eve |
$900 | $600 | $1,500 |
adam |
$600 | $400 | $1,000 |
Together, Adam and Eve account for $2,500 of the $2,700 attributed to that cost center. That is approximately 93% of its total in this example.
These figures are demonstration data, but they show why the extra view is useful. Instead of reacting to a $2,700 cost-center total, the administrator can talk to the owners of two workloads and understand what the spend supported.
Concentration does not automatically mean waste. Adam and Eve may be doing approved, high-value work. The dashboard tells the business where to ask the next question; the people involved provide the context needed to answer it.
3. Return to the admin UI: Choose the right control
The API has helped us understand the increase, but it does not make the decision for us. Return to Billing and licensing > Budgets and alerts to review the available controls and choose the narrowest one that fits what you learned.
Fig 06: Budget scopes turn the investigation into a targeted governance decision.
Set a cost-center user-level baseline
A cost-center user-level budget applies the same per-user amount to every current and future member of that cost center. This is useful when the group needs a different baseline from the rest of the enterprise.
For example, the administrator might give octodemo-org-cc additional per-user headroom because its work legitimately uses more AI credits. This avoids raising the universal user-level budget for everyone.
A user-level budget counts both included and paid AI credit usage. It is always a hard stop for the individual. It does not reserve part of the shared pool, and it does not replace the cost center's paid-usage budget.
Preserve justified exceptions
If Adam or Eve has an approved role that requires more capacity, an individual user-level budget can replace the cost-center baseline for that person. The exception stays limited to the person who needs it instead of increasing the budget for the whole cost center.
Fig 07: Cost-center baselines and individual overrides preserve useful work without widening access for everyone.
The precedence is straightforward:
- An individual user-level budget overrides the cost-center user-level budget.
- The cost-center user-level budget overrides the universal user-level budget.
In practice, you can set a universal baseline, add more headroom for a cost center with a clear business need, and use individual overrides for documented exceptions.
Why the UI and API work better together
At this point, the better-together pattern becomes clear:
- Metered usage supports interactive discovery.
- Billing Usage API supports repeatable, company-specific analysis.
- Budgets and alerts supports targeted policy decisions.
Each surface does the job it is best suited to do. The UI makes it easy to explore and manage GitHub. The API lets you repeat a company-specific analysis without rebuilding it by hand. Used together, they give finance, engineering, and administrators the same evidence before a control changes.
Make it part of the operating rhythm
A useful dashboard should lead to a useful conversation. Decide who receives the report, how often they review it, and what happens when a user or cost center stands out.
For example:
- Run a daily pull to detect unusual changes early.
- Produce a month-end rollup aligned to finance close.
- Route cost-center summaries to the relevant business owner.
- Review high-consumption users with engineering before changing limits.
- Record approved individual overrides and revisit them regularly.
Over time, the conversation can move from “Who spent this?” to “What outcome did this spend support, and does the current policy still fit?”
When the same users repeatedly appear at the top, leaders can inspect the workload, remove waste, validate business value, or approve more capacity. When usage becomes broadly distributed, the cost-center baseline may need adjustment instead. The report makes those patterns visible over time.
The better-together workflow at a glance
The story above introduces each surface when it becomes useful. This table summarizes their roles.
| Surface | Primary role | Best used for | Important limitation |
|---|---|---|---|
| Metered usage | Interactive investigation | Finding the affected period, organization, and cost center | Manual exploration is not a reusable company-specific report |
| Billing Usage API | Programmatic usage retrieval | Scheduled reporting, time-sliced analysis, and per-user views | Per-user attribution requires filtered requests and careful handling of pagination and failures |
| Custom Spend by User view | Company-specific interpretation | Ranking users and aligning usage to internal ownership | Concentration is evidence to investigate, not proof of waste |
| Budgets and alerts | Governance controls | Cost-center baselines and individual overrides | A broader budget cannot override a user who has reached their ULB |
The practical takeaway is simple: begin with exploration, automate only the question worth repeating, and adjust policy after the data has context. That sequence keeps governance precise while preserving useful AI work.








