← FinOpsAid blog

How do I set a budget that actually fires? Reading and using the Budgets page — FinOpsAid blog

How do I set a budget that actually fires? Reading and using the Budgets page

Scopes, units, percent used, the 80% and 100% thresholds, and the difference between your budgets and GitHub's — every control and figure on the FinOpsAid Budgets page.

Budgets is the only page in FinOpsAid where you mostly write rather than read. It's also the page with two independent budget systems on it — yours and GitHub's — and knowing which one you're looking at determines whether the number means anything.

Conventions used below are in the grammar behind every number.

Set a budget — the four fields

The editor at the top defines a monthly target for any scope. The card subtitle states the rule that makes budgets useful: "Cross 80% → warning alert, over 100% → exceeded alert."

Scope — one of six:

Scope Key you supply Typical use
Org fixed as org The overall guardrail.
User a GitHub login A heavy individual consumer.
Team a team slug Team-level showback.
Department a department name Requires an HRIS/SCIM department map.
Repo a repository name Almost always a CI budget.
Product copilot, actions, storage The most useful cut for most orgs.

Key is disabled and pinned to org when the scope is Org; otherwise it's the identifier, and the placeholder shows the expected format.

UnitUSD ($) or AI credits. This is the field people get wrong.

Amount — a non-negative number. The placeholder changes with the unit, which is a small hint that these are different orders of magnitude.

Dollar budgets versus credit budgets

Choosing between a dollar budget and a credit budget A dollar budget tracks billed spend and only starts moving once the included allowance is exhausted, so it warns late in the cycle. A credit budget tracks the usage signal from day one and warns while there is still time to act, but only resolves actuals for the org scope and the Copilot product. SAME MONTH, TWO BUDGET UNITS, TWO WARNING TIMES USD BUDGET Flat at $0 until the allowance runs out. 80% warning arrives late in the cycle. AI-CREDIT BUDGET Climbs from day one — it tracks usage. 80% warning arrives with time to act. Credit budgets only resolve actuals for the Org scope and the Copilot product. Pick another scope with credits and the page warns you inline before you save. Most orgs want both: a credit budget for early warning, a dollar budget for the actual guardrail.
A dollar budget on AI spend warns you after the allowance is gone. By then the month is largely decided. The credit budget is the leading indicator; the dollar budget is the accountability line.

The page enforces this honestly: choose AI credits with a scope other than Org or Product and an amber note appears — "AI-credit budgets only track actuals for the Org and the Copilot product — other scopes have no credit signal." It's a nudge rather than a block, and the API remains the source of truth.

Overall Budget

A dial of spend-to-date against the org budget, with Spent and Remaining beneath it. Reads "no org budget" until you set one.

The dial turns amber past 90%. As on Overview, it doesn't know what day of the month it is — 70% on the 5th is a much worse signal than 70% on the 25th, and only you can supply that context.

Budgets by scope

Every configured budget, sorted by percent used descending, so the ones nearest trouble are at the top.

Each row shows: a scope chip, the key, a credits chip for credit-unit budgets, an (est.) marker when the actual is modeled, then actual / amount, a progress bar, the percentage used, and the remaining amount.

The bar is colour-coded:

Bar colour Condition Meaning
Brand gradient up to 85% On track.
Amber above 85% Approaching the limit.
Red over 100% Exceeded.

The (est.) marker matters. The card subtitle says "Modeled actuals where GitHub does not attribute cost." A budget scoped to a team or a user is being tracked against a modeled actual — the credit-share split — because GitHub doesn't attribute cost that way. The budget is real; the actual it's measured against is our estimate. Org and product budgets track billed figures.

A delete control appears on row hover.

GitHub-configured budgets

A separate card at the bottom, present only when GitHub returns budgets. It reads what's configured in GitHub's own billing settings — a different system from the budgets above, set in a different place, by possibly a different person.

Each shows name, scope value, spent against target, percent used, an over marker, and a progress bar on the same colour rules. The card header carries a summary chip: red with the count when any are over, green "on track" otherwise.

These two systems don't talk to each other. A budget set here does not appear in GitHub, and GitHub's budgets don't drive FinOpsAid alerts. Having both is fine — GitHub's can enforce, ours can be scoped to things GitHub can't see, like a team or a department — but a plan that only exists in one place will surprise you.

How budgets become alerts

Crossing 80% raises a warning; crossing 100% raises an exceeded alert. Both surface on Alerts and in Reports as budget-versus-actual rows.

The practical advice is the same as for any alerting system: fewer budgets, better placed. A budget on every team produces noise that gets muted within a month. One org guardrail, one per product, and one on whichever team is genuinely volatile is a set people still read in six months. That argument is made at length in alerts people don't mute.

What people get wrong on this page

The 60-second read

Frequently asked questions

Should I set a GitHub budget in dollars or AI credits?

Ideally both. A dollar budget stays at zero until the included allowance is exhausted, so its 80% warning arrives late in the cycle. A credit budget climbs from day one and warns while there is still time to act. Credit budgets resolve actuals only for the Org scope and the Copilot product.

When does a FinOpsAid budget raise an alert?

Crossing 80% of the target raises a warning and going over 100% raises an exceeded alert. Both appear on the Alerts page and in the budget-versus-actual table in Reports.

Are FinOpsAid budgets the same as GitHub's budgets?

No, they are two independent systems shown on the same page. Budgets you set in FinOpsAid do not appear in GitHub, and GitHub's own budgets do not drive FinOpsAid alerts. Having both is fine, but a plan that exists in only one of them will eventually surprise someone.

Want budgets that fire before the invoice? Connect your GitHub org — read-only and free during beta — or explore the demo first. More on the design in budgets that catch overspend early. Next: how to read the Savings page.