· 9 min read · AIStatements editorial
Budget vs Actual Report: How to Build a Variance Report and Run Budget Variance Analysis
Free demo pack used
Your one free pack is built. Starter keeps going: every close, every statement, the AI analysis on each pack, PDF and XLSX exports, for $39 a month billed yearly.
Generate statements from your own books · sample CSV
Software, not advice · Files parse in your browser, nothing is uploaded
Try it on a sample company, or upload your own CSV
A budget vs actual report puts the amount you planned to earn or spend next to the amount you actually did, line by line, and shows the difference in dollars and as a percentage. That difference is the variance. The report exists to answer one question a board or an owner asks every month: what did we get wrong, and does it matter.
Most variance reports fail at the second half of that question. They list every line that moved, produce forty variances, and leave the reader to work out which three are worth a conversation. A good one does the filtering first. Below: how the variance is calculated, why favorable and unfavorable are misleading labels, the threshold rule that decides what you explain, how to separate a timing difference from a real one, and how to run the report in QuickBooks.
What is a budget variance report?
It is a comparison of budgeted amounts to actual results for the same period, at the same level of detail, with the difference shown for each line. In practice it is your income statement with three extra columns: budget, variance in dollars, and variance as a percent of budget. Some versions add a fourth column for the year-to-date variance, which is usually more informative than the month alone.
The report is also called a budget to actual report, a variance report, or budget variance analysis. Larger finance teams use the term variance analysis more narrowly, to mean the work of explaining the causes rather than the schedule that displays them. The schedule takes minutes. The explanation is the job.
Two things have to be true before the numbers mean anything. The budget and the actuals must use the same chart of accounts, so that a line called Marketing contains the same accounts in both columns. And the actuals must be on the same basis as the budget: an accrual budget compared against cash-basis actuals produces variances on almost every line that are pure artifact. If your budget was built in a spreadsheet with categories that do not match your ledger, fix the mapping first, or you will spend the meeting explaining differences that do not exist.
How do you calculate budget variance?
The dollar variance is actual minus budget. The percentage variance is that difference divided by the budgeted amount. Both are trivial. The part that gets fumbled is the sign, because the same arithmetic means opposite things on a revenue line and an expense line.
On revenue, actual above budget is good. On expenses, actual above budget is bad. Rather than force the reader to remember which is which for every row, the standard presentation converts the raw difference into favorable or unfavorable, so that a positive number always reads as good news regardless of which section it sits in. Practically, that means expense variances are shown as budget minus actual, and revenue variances as actual minus budget.
Be careful with the percentage on small budget lines. A line budgeted at $500 that came in at $1,500 is a 200 percent variance, which will sort straight to the top of any list ranked by percent and is almost never the most important thing on the page. This is why the threshold rule below uses dollars and percent together rather than either one alone.
What is an acceptable budget variance percentage?
There is no accounting standard for this, and any number quoted as universal is someone's internal policy. What most finance teams actually do is set a two-part materiality threshold and require a written explanation for anything that clears both: a dollar floor and a percentage floor. A common shape for a company with a $5 million annual budget is a variance over $10,000 and over 10 percent of the line.
The dollar floor stops you writing explanations for a $180 overage on a $500 line. The percentage floor stops you writing explanations for a $12,000 swing on a $2 million cost of goods sold line that is 0.6 percent off plan and inside normal noise. Requiring both is what reduces forty variances to the three or four that carry real information.
Set the thresholds before you see the results, and write them at the top of the report. A threshold chosen after the fact, so that the uncomfortable line falls below it, is the oldest trick in management reporting and every experienced board member has seen it.
Favorable is not the same as good
This is the distinction that separates a variance report from variance analysis. Favorable means the number moved in the direction that helps this period's profit. It does not mean the underlying event was good.
A large favorable variance in repairs and maintenance usually means deferred maintenance, not efficiency. A favorable variance in payroll often means you failed to hire the people you planned to hire, which will show up two quarters later as missed revenue. A favorable variance in marketing spend in a growth company is frequently the single worst number on the page. Meanwhile an unfavorable cost of goods sold variance driven entirely by revenue coming in 30 percent above plan is not a problem at all, it is arithmetic.
That last case is common enough to deserve its own handling. When volume is well off plan, comparing a fixed budget to actuals mixes two effects together: you sold a different quantity, and you earned or paid a different rate. A flexible budget fixes this by rescaling the variable lines to actual volume before comparing, which splits the variance into a volume component and a rate component. If your gross margin percentage held while your dollar cost of goods sold blew past budget, you have a volume variance and nothing to fix. If the margin percentage slipped, you have a rate problem: pricing, input costs or mix. Those are entirely different conversations, and a fixed-budget report cannot tell you which one you are in.
Timing differences, which cause most false alarms
Before you write a single explanation, check whether the variance is real or a calendar artifact. Four causes account for nearly all of them.
An annual payment that landed in the wrong month. Insurance, software renewals, licenses and audit fees are frequently budgeted in twelfths and paid once. Unless the expense is being amortized, the month it hits shows a large unfavorable variance and the eleven other months show favorable ones. Look at year-to-date before reacting.
Unrecorded liabilities at the close. A vendor invoice that has not arrived leaves the expense out of actuals entirely, producing a favorable variance that reverses next month. Accruing for known but unbilled costs is what stops this, and it is why the accrual step belongs on your month end close checklist ahead of any reporting.
Revenue recognized in a different period than it was invoiced. Deposits, prepayments and multi-month contracts move revenue across the period boundary, and a budget built on billings compared against actuals recognized under accrual rules will diverge every month.
Coding drift. Someone booked an expense to a different account than the one used when the budget was built, so one line is unfavorable and another is favorable by the same amount. This shows up as offsetting pairs, and it is worth scanning for them before writing anything. Where the accounts themselves are the problem, the fix is at the structural level: see chart of accounts to financial statements for how account structure decides what your reported lines contain.
For a software or SaaS business the line that produces genuine, non-timing overruns most reliably is cloud infrastructure, where one misconfigured environment quietly moves a monthly number by thousands. That is worth watching at the source rather than discovering six weeks later in a variance column, because by the time it reaches this report the money is already gone.
A worked variance report
Thresholds for this example: explain any variance over $5,000 and over 10 percent. Expense variances are shown as budget minus actual, so positive is favorable throughout.
| Line | Budget | Actual | Variance | Var % | Explain? |
|---|---|---|---|---|---|
| Revenue | $480,000 | $524,000 | $44,000 F | 9.2% | Yes on dollars, no on percent. Note it, do not write it up |
| Cost of goods sold | $192,000 | $214,000 | ($22,000) U | 11.5% | Volume driven. Gross margin held at 59.2% vs 60.0% budget |
| Payroll | $148,000 | $131,000 | $17,000 F | 11.5% | Yes. Two open roles unfilled, revenue risk in Q4 |
| Marketing | $40,000 | $62,500 | ($22,500) U | 56.3% | Yes. Annual conference sponsorship budgeted for next month |
| Rent | $18,000 | $18,000 | $0 | 0.0% | No |
| Software and subscriptions | $9,000 | $14,800 | ($5,800) U | 64.4% | Yes. Cloud overage, not timing. Recurring going forward |
| Office expense | $2,400 | $4,900 | ($2,500) U | 104.2% | No. Largest percentage on the page, immaterial in dollars |
Note what the thresholds did. Office expense has the biggest percentage variance on the report and gets no attention. Marketing clears both floors but resolves to a timing difference, so it takes one sentence. The two lines that actually change how the business is run are payroll, where a favorable variance is a warning, and software, where a small dollar amount is permanent rather than one-off.
How do I run a budget vs actual report in QuickBooks?
In QuickBooks Online, create the budget under the gear menu at Tools, then Budgeting, choosing the fiscal year and whether to subdivide by class, customer or location. Once a budget exists, the report is at Reports, under the Business overview group, named Budget vs Actuals. It offers a variance column and a percent of budget column, and it can be run by month, quarter or year to date. In QuickBooks Desktop the equivalent sits under Reports, then Budgets and Forecasts, as Budget vs Actual.
Two limitations are worth knowing before you rely on it. QuickBooks budgets are entered at the account level for the accounts that existed when you built the budget, so an account added mid-year has actuals and no budget, and the line reads as a 100 percent unfavorable variance forever. And the native report is fixed-budget only: there is no flexible budget feature, so the volume versus rate split described above has to be done outside QuickBooks. Exporting to a spreadsheet is the usual answer, and it is also where most teams add the explanation column, since the report itself has nowhere to put commentary.
If you are assembling this into something that goes to a board or a lender rather than sitting in a spreadsheet, the variance report belongs alongside the statements themselves. How that pack is normally structured is covered in monthly financial reporting package and, for the board audience specifically, in our note on the monthly financial report for a board of directors.
Writing the explanations
Each variance that clears the threshold gets one or two sentences containing three things: the cause, whether it recurs, and what is being done about it. Cause means the actual event, not a restatement of the number. "Marketing was $22,500 over budget" is not an explanation. "The annual conference sponsorship was invoiced in September rather than October as budgeted; no impact on the full-year number" is.
Whether it recurs is the part readers care about most, because it is the only part that changes the forecast. A one-time overage is noise. A rate change that will repeat every month for the rest of the year is a revision, and it should be reflected in the reforecast rather than explained again in four consecutive meetings.
Keep the same lines and the same thresholds month to month. A variance report that changes shape is impossible to read across periods, and it invites the suspicion that the presentation is following the results. The underlying statements have the same requirement, which is why the P&L feeding this report should come out of the same mapping every month. AIStatements produces the statement pack from your accounting export on a consistent structure, so the budget columns you attach line up period after period without rework.