Budgets & control.
A budget is a promise the school makes to itself before the term begins: this much, on this, no more. YESS turns that promise into a living number. Every approved or paid expense flows back into the budget line it belongs to, the utilisation bar fills as the money is spent, an over-budget alert names every category that crossed its allocation, and a salary panel watches payroll against the salary budget before a run is released. This handbook shows you how to plan the spend, watch the burn, and keep the school inside its own lines.
- 3budget views
- 4numbers per line
- 1-clickrefresh actuals
- ≈8 minto read
Prologue
Planning before you spend#
Most schools discover they overspent a category at the end of the term, when the money is already gone. YESS budgets exist to move that discovery to the front of the term — and then to keep it live every day in between. You set a planned amount per category once; from then on the platform does the watching.
The budgets hub lives at /dashboard/budgets as a single page with three tabs: Budgets (the headline numbers per budget), Budget Lines (the category-by-category detail), and Budget vs Actual (the chart and the over-budget alert). Most finance managers open the lines tab daily and the chart at month-end.
Chapter one
Building the budget#
A budget is a named envelope of money. Open /dashboard/budgets, click Create Budget, and give it a name, an optional description, and a total allocated amount. It is created in Draft, and it is tagged to the campus you are currently working in — so a multi-campus school keeps each campus's budgets cleanly separate without any extra step.
Inside the budget you add budget lines — one per spending category. Each line names an expense category (Stationery, Diesel, Maintenance, Catering, whatever your school uses), an allocated amount, and an optional note. The categories come straight from the same list the expense module uses at /dashboard/expenses/categories, so a budget line and the expenses that consume it always speak the same language. If the lines add up to more than the budget's total, an inline warning shows the overshoot.
When the plan is agreed, use the row action to move the budget from Draft to Approved. The hub's gold KPI rail keeps the running picture — total budgets, total budgeted, how many are approved, how many are still draft — so the owner can see at a glance how much of the year has been planned.
Chapter two
Watching the burn#
Every budget line carries four numbers. Allocated is the plan. Committed is money reserved but not yet paid — a column reserved for the purchase-order flow on the roadmap, so today it always reads zero. Actual is what has genuinely been spent — and YESS keeps it live for you. Remaining is allocated minus actual, shown in green while there is room and red the moment the line is overspent.
The utilisation bar on each line is the at-a-glance signal. It is green below 60% spent, turns amber in the 60–79% band, and goes red at 80% and above, so a line about to be exhausted catches the eye before it is breached. The Budget vs Actual tab plots allocated, spent, and remaining as bars per category, and raises an Over-Budget Alert banner that names every category whose actual has crossed its allocation, each with the exact amount it went over.
Chapter three
Where the actuals come from#
You never type the “actual” figure. It is computed from the expense module: a budget line's actual is the sum of the expenses in its category that are approved or paid, inside the budget's academic-year window. Reject, revert, edit, or delete an expense and the line re-rolls — the only expenses that ever count toward actual are the approved and paid ones.
Two mechanisms hold that promise. A database trigger recomputes the affected line the instant an expense changes its status, amount, or category, and a Refresh actuals button on the Budget Lines tab recomputes every line of the budget from scratch — useful after a bulk import or a historical correction. The recompute is one click; the figures reconcile to the expense ledger every time.
Chapter four
Budgets also watch the payroll#
Salaries are the largest line in almost every school budget, so YESS checks payroll against it directly. On a payroll run at /dashboard/payroll, a salary panel compares three numbers: the salary budget (the allocated total of any budget line whose category reads as salary, payroll, wages, or personnel cost), the amount already released this year, and the cost of this run — then shows the headroom that would remain after it settled.
If the run would push the year past the salary budget, the panel turns red — “this run would exceed the salary budget”; within budget, it stays neutral. By default this is awareness, not a wall: the panel warns, but the office can still release. A school that wants the budget to be a hard stop switches on salary-budget enforcement, after which a run that would break the budget is blocked at the database until a manager records a reasoned override. It is the one place a budget can be made into a gate rather than a gentle warning, because over-paying payroll is the one overspend a school can rarely claw back.
For the day-to-day altitude, budget-versus-actual lives on the Budget vs Actual tab inside the hub; the wider finance picture — collections, spend, ageing, and the financial statements — sits in the finance reports surface.
Planned features
What comes next#
The budget core — planning, lines, live actuals from approved and paid expenses, the over-budget alert, and the salary-budget panel — is in daily use. So is the connection many schools assume is missing: an approved expense already posts its journal entry to the general ledger, and vendors are already recorded. The procurement layer the module name points toward is the next build, and the infrastructure is already in place to receive it.
What is shipped, and what is next
- 1
Purchase orders — next
The committed-amount column already sits on every budget line, waiting for a purchase-order flow: raise a PO against a line, reserve the money as committed, then convert it to actual when the supplier is paid. The purchase-order table already exists in the database; the PO and approval-chain screens — and the wiring that fills the committed column — are the next build.
- 2
Vendors — already shipped
Vendors are not a roadmap item: a full vendor register lives at /dashboard/expenses/vendors with contact, payment terms, preferred method, and a rating, and every expense can name its vendor today.
- 3
A category → GL-account mapping screen — next
Each expense category already carries a general-ledger account code, and approving an expense already posts the matching journal entry. What is still to build is a dedicated screen for editing that category-to-account mapping in one place, rather than seeding it.
Adjacent modules
Where budgets connect#
Budgets sit downstream of the money that leaves the school and upstream of the people who decide whether to spend it.
Adjacent modules
- 20Finance, fees & accountingApproved and paid expenses are the source of every budget line's actual; the ledger and statements live in the finance hub.
- 19Payroll & taxThe salary-budget panel watches payroll, and a school can switch it into a hard gate on a run.
- 18HR & recruitmentHeadcount and contracts drive the salary line the budget watches; a new hire is a budget conversation.
Tutorial
Do it step by step#
Stand up a term budget and watch it run itself. Five steps, in the order a finance manager actually works.
- 1
Create the budget
Open /dashboard/budgets, click Create Budget, and set a name, an optional description, and the total allocated amount. It is created in Draft and tagged to the campus you are working in.One budget per period, with a line per category, reads far better than many small budgets. Split by department only once the rhythm is set.
- 2
Add the category lines
Inside the budget, click Add Budget Line for each spending category — each with a category, an allocated amount, and an optional note. The categories are the same ones the expense module uses at /dashboard/expenses/categories, so the line and its expenses always match. - 3
Approve it
Use the row action to move the budget from Draft to Approved when the plan is agreed. The KPI rail now counts it among the approved budgets, and the owner can see how much of the year is planned. - 4
Let the actuals flow
As expenses are approved or paid at /dashboard/expenses, each one's amount lands on the matching budget line automatically. The utilisation bar fills — green, then amber past 60%, then red at 80% — and any category that crosses its allocation surfaces in the Over-Budget Alert.After a bulk import or a historical correction, hit Refresh actuals on the Budget Lines tab to recompute every line from scratch against the expense ledger.
- 5
Review at the right altitude
Read the Budget vs Actual tab inside the hub for the chart and the alert. Before a payroll run, the salary-budget panel on /dashboard/payroll flags a release that would break the salary budget — and, where the school has switched on enforcement, blocks it until a reasoned override is recorded.
The plan is set, the actuals keep themselves current, and the one overspend that is hardest to undo — payroll — is watched, and can be gated. The school stays inside its own lines.