Budget vs actual: how to write a variance analysis that explains the numbers


It’s the monthly management meeting, and the operations cost centre is Rp 12 million under budget for October. The report has a variance column with a comment beside each line: “higher than budget”, “timing”, “to be checked”. Nobody asks about operations, because operations came in under budget.
In November the contractor’s invoice for October’s overhaul arrives. In December the course that was “timing” takes place, and the packaging supplier’s new price has been in every month since October. Operations ends the year well over budget. All of it was visible in October, in the lines behind the total. The report showed the numbers but explained none of them.
A budget vs actual report shows where spending differed from plan. A variance analysis says why, whether it will happen again and what someone is going to do about it. This guide explains what both are, the kinds of variance, a worked example of one month in operations, why variance analysis goes wrong and how to run a monthly review that changes what happens next month.
What is budget vs actual variance analysis?
A budget vs actual report puts what each cost centre planned to spend next to what it actually spent, for the month and the year to date. The variance is the difference between the two.
A variance is favourable when the result is better than budget (costs lower, income higher) and adverse when it’s worse. Signs are easy to misread, because a cost under budget gives a negative number in some reports and a positive one in others, so many teams label each variance F or A instead.
Variance analysis is the work of explaining the variances that matter: what caused each one, whether it’s a one-month difference or a lasting one, and what happens next. It needs three things to compare:
- The budget: the plan for the year, agreed before it started and usually not changed.
- The phasing: the budget split by month. Dividing the annual amount by twelve is simple, but it creates a variance every month a cost doesn’t fall evenly.
- The forecast: the latest estimate of the full year, updated as the year goes on. Comparing actual with the forecast shows what changed since the last update; comparing it with the budget shows how far the year has moved from the plan.
The kinds of variance
Most variances fall into one of these, and the comment should say which:
- Timing: the cost happens, just in a different month from the plan. It reverses later in the year.
- Permanent: the cost won’t come back down, such as a price rise or an extra hire. It changes the full-year number.
- Price: you paid more or less per unit than the budget assumed.
- Volume: you bought or used more or fewer units than planned.
- Cut-off: the cost belongs to the month but hasn’t been recorded, usually because the invoice hasn’t arrived. It looks like a saving and isn’t one.
- Coding: the cost is in the wrong cost centre or account, which creates two variances that cancel each other out at the total.
A worked example: October in operations
The operations cost centre’s report for October looks like this. The amounts are only illustrative:
| October (Rp million) | Budget | Actual | Variance |
|---|---|---|---|
| Salaries and overtime | 420 | 468 | 48 A |
| Packaging | 150 | 186 | 36 A |
| Repairs and maintenance | 90 | 30 | 60 F |
| IT subscriptions | 60 | 64 | 4 A |
| Training | 40 | 0 | 40 F |
| Total | 760 | 748 | 12 F |
The total looks fine, but it hides Rp 88 million of adverse variances behind Rp 100 million of favourable ones. The team explains every line over Rp 25 million and leaves IT subscriptions alone:
| Line (Rp million) | Variance | Cause |
|---|---|---|
| Salaries and overtime | 48 A | Overtime for the warehouse move, ending in November |
| Packaging | 36 A | Supplier raised its price on 1 October |
| Repairs and maintenance | 60 F | Generator overhaul done on 28 October, invoice not yet received |
| Training | 40 F | Course moved to December |
The packaging variance is worth splitting. The budget assumed 30,000 boxes at Rp 5,000. October used 31,000 boxes at Rp 6,000:
- Price variance: (Rp 6,000 − Rp 5,000) × 31,000 boxes = Rp 31 million adverse.
- Volume variance: (31,000 − 30,000 boxes) × Rp 5,000 = Rp 5 million adverse.
What the analysis tells the CFO:
- October is Rp 48 million over budget, not Rp 12 million under. The overhaul was done in October, so its Rp 60 million belongs in October. Accrued, actual becomes Rp 808 million against a budget of Rp 760 million.
- One variance will keep growing. At budget volumes the new packaging price costs about Rp 30 million a month more, so about Rp 60 million more by the end of December. That’s the line that needs a decision, and procurement is asked to bring a second supplier’s quote by 15 November.
- The rest takes care of itself. Overtime stops when the move finishes, and the training variance reverses in December, when the course takes place.
Why variance analysis goes wrong
- Flat phasing. An annual budget split into twelve equal parts produces variances every month that mean nothing, and teams learn to ignore them along with the ones that matter.
- Missing accruals. Work done but not yet invoiced shows up as a saving this month and an overrun next month. The month-end close is where it should be caught.
- Comments that restate the number. “Higher than budget” explains nothing, and “timing” is only an explanation if someone says when it reverses.
- A comment on every line. When each small difference gets a sentence, the two that matter are lost among them. Set a threshold.
- Costs in the wrong cost centre. Two budget holders each get a variance they can’t explain, and the total looks fine.
- Finance explains spending it doesn’t control. The budget holder knows why the money was spent; finance’s job is to ask the right questions and check the answers.
- The report arrives too late. By the time October is explained in the middle of November, half of November has been spent the same way.
- Only looking back. Purchase orders approved but not yet invoiced are next month’s variances already. A report built from the ledger sees them only when the invoice arrives.
Budget vs actual in Indonesia
- The annual work plan. Company law asks the Direksi to prepare an annual work plan, including the budget, before the financial year starts, and the anggaran dasar can require the Dewan Komisaris or the general meeting of shareholders (RUPS) to approve it. Keep variance reporting in a form that body can follow, and agree in advance which overruns go back to it.
- The same tax basis in budget and actual. Input VAT you can credit (PPN masukan) isn’t a cost, while PPh 23 you withhold on a service is still part of the vendor’s price. Budget and record costs on the same basis, or every vendor bill looks over budget.
- THR. The religious holiday allowance adds about a month’s salary, paid before the holiday. Either accrue it month by month or show it in the month it’s paid, but do the same in budget and actual, and remember that Lebaran falls about 11 days earlier each year.
- Exchange rates. Budget imported goods at a stated rupiah rate, and split the effect of the rate from price and volume, so purchasing isn’t asked to explain the rupiah.
- Groups of PTs. Each PT keeps its own books and its own budget. Budget intercompany recharges on both sides, or one PT shows a saving and the other an overrun for the same cost.
Signs your variance analysis needs work
Your variance analysis probably needs work if any of these sound familiar:
- The budget vs actual report is ready after the middle of the following month.
- Comments say “higher than budget” or “timing” and nothing else.
- Every line has a comment, or none do.
- Budget holders see their numbers for the first time in the management meeting.
- The same “timing” variance appears three months in a row.
- Large savings turn out to be invoices that hadn’t arrived.
- Nobody can say what the year will end at.
A variance comment that doesn’t say what happens next is the number, written out in words.
How to run a monthly variance review
- Phase the budget by month. Use last year’s pattern, contract dates and known events such as annual fees, audits and THR, rather than twelve equal parts.
- Close with accruals. Accrue work done and goods received but not yet invoiced, so actual means what was incurred, not what was billed.
- Set a threshold. For example, explain any line more than Rp 25 million or 10% away from budget. Below it, no comment is needed.
- Ask the budget holder first. Send each budget holder their lines over the threshold within a few days of the close. Finance reviews the answers and challenges the vague ones.
- Write comments in three parts. The cause, whether it’s timing or permanent, and what happens next, with a name. For example: “Packaging: supplier raised prices on 1 October. Permanent, about Rp 30 million a month to year-end. Procurement to bring a second quote by 15 November.”
- Split the large variances. Price and volume for purchased goods, rate and hours for overtime, so the comment names the right cause.
- Update the forecast. Each permanent variance changes the full-year number. Report actual against both the budget and the latest forecast. Projects with their own budgets need the same view, with commitments counted.
- Move the check earlier. The cheapest variance to explain is the one that never happened. Check each request against what’s left in the budget before it becomes a commitment.
How Procapy helps
In Proca to Pay, the budget check happens before the money is committed, not in next month’s report. Budgets by cost centre, project or entity are checked in real time at the request. Before a purchase request can be submitted, ProcAI checks it against policy, budget and the vendor list, and the approver sees the policy and budget warnings, and what the request would leave behind, on the same screen as the approve button. Open commitments are visible to finance before the invoice arrives, so an order like the overhaul in the example is in view before its invoice.
Coding is done at the source. The cost centre, project and expense category are filled in automatically on purchase requests, and Procapy suggests the GL account and cost centre from the vendor, category and history, learning from your team’s corrections. In Capy Expense, every claim is checked against policy and budget before it can be submitted, and budget overruns are held back with a clear reason. Approved transactions post to Dynamics, SAP, Xero, QuickBooks or ABSS with their coding attached, so the actuals in your budget report are already in the right cost centre.
Proca Agents can take on the recurring part: reports such as spend by cost centre and the month-end pack are assembled on schedule, and summaries for management are drafted from the transactions, so the first days after the close go on explaining the numbers rather than building them. The approvals page has more. Book a 30-minute walkthrough, bring your budget structure and one cost centre’s budget, and we’ll configure the budget checks for it live.
