Budget vs Actual: How to Explain Monthly Variances With AI

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Budget vs Actual: How to Explain Monthly Variances With AI.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Budget vs Actual: How to Explain Monthly Variances With AI.

Flag only the lines that moved past a set threshold (say 10 per cent and $500), split each into its causes (price, volume, timing or a one-off), then write one sentence per line: what happened, why, whether it will recur, and what you will do. AI drafts those sentences well once you give it the numbers and your notes.

The order matters. If you hand an AI assistant a budget-versus-actual table and ask it to "explain the variances", it will produce fluent explanations for numbers it cannot see behind. A cost that is down because a bill has not arrived yet becomes "improved energy efficiency". The work that makes commentary right is yours and takes about an hour: the threshold, the price and volume split, and a line of context for each cause. The AI then saves you the writing.

Follow me on Instagram@sagnikteaches

Get the report out in a form you can work with

Both main small-business accounting platforms produce the comparison. In Xero it is the Budget Variance report, found under Reporting, All reports, once a budget exists (you need a role with report access). In QuickBooks Online it is the Budget vs Actuals report, which is available on the Plus and Advanced plans only. Export it to a spreadsheet with four columns per line: account, budget, actual, and a type column you add (Revenue or Cost).

Connect on LinkedInSagnik Bhattacharya

Add three formula columns yourself rather than asking AI to work them out. Arithmetic belongs in formulas, where it is checkable.

Subscribe on YouTube@codingliquids
Variance (column E):      =D2-C2                       (actual minus budget)
Variance % (column F):    =IF(C2=0,"",E2/ABS(C2))
Fav/Adv (column G):       =IF(B2="Revenue", IF(E2>=0,"F","A"), IF(E2<=0,"F","A"))
Flag (column H):          =AND(ABS(E2)>=500, ABS(E2)>=0.1*ABS(C2))

The favourable or adverse column is there because of a sign trap that catches people and AI alike. With variance as actual minus budget, a positive number is good news on a revenue line and bad news on a cost line. Let the formula label it, and tell the assistant to use the label rather than the sign.

A craft brewery's month, flagged

Here is an illustrative month for a small craft brewery with a taproom, keg sales to bars and pubs, and cans sold online and through shops. The flag rule is 10 per cent and $500.

LineBudgetActualVarianceF/AFlag
Taproom sales$38,000$33,400−$4,600 (−12.1%)AYes
Wholesale kegs$26,000$29,900+$3,900 (+15.0%)FYes
Cans, online and retail$14,000$13,300−$700 (−5.0%)ANo
Malt$5,200$6,055+$855 (+16.4%)AYes
Hops$3,900$3,780−$120FNo
Cans and packaging$4,100$3,950−$150FNo
Alcohol duty$9,400$9,610+$210ANo
Taproom wages$11,500$12,650+$1,150 (+10.0%)AYes
Brewery wages$9,800$9,800$0n/aNo
Energy$3,200$2,450−$750 (−23.4%)FYes
Marketing$2,000$3,400+$1,400 (+70.0%)AYes
Repairs$800$2,300+$1,500 (+187.5%)AYes
Rent and other overheads$20,500$20,600+$100ANo
Operating profit$7,600$2,005−$5,595A

Seven of thirteen lines are flagged. That is about right. If your rule flags more than half the lines every month, raise it; if it flags almost nothing while profit is well off budget, lower it. Some owners also flag any line over a fixed amount regardless of percentage, so a 4 per cent miss on the biggest cost still gets a sentence.

Split each flagged variance into its causes

A variance is almost always a mix of four things. Separating them is what turns "taproom sales were down" into something you can act on.

  • Volume: you sold or used more or less than planned.
  • Price: each unit sold or bought at a different price than planned.
  • Timing: the money is real but landed in a different month from the budget (a deposit paid early, a bill not yet received).
  • One-off: an event that will not repeat (a breakdown, a legal fee, a handover period).

Price and volume on a sales line

The brewery budgeted 5,000 pints in the taproom at an average $7.60, which is $38,000. It sold 4,300 pints at an average of about $7.77 after a price rise the previous month, which is $33,400.

Volume variance = (actual pints - budget pints) x budget price
                = (4,300 - 5,000) x 7.60  = -5,320   adverse
Price variance  = (actual price - budget price) x actual pints
                = (7.767 - 7.60) x 4,300  =   +720   favourable
Check: -5,320 + 720 = -4,600  (matches the report)

So the price rise worked; the problem is 700 fewer pints. That points the conversation at footfall rather than pricing. The owner's note: Friday food-truck evenings ended in month two and Friday pints fell by about a third.

Price and volume on a cost line

Malt was budgeted at 6.5 tonnes at $800 a tonne ($5,200). The brewery used 7.0 tonnes at $865 a tonne ($6,055).

Volume = (7.0 - 6.5) x 800   = +400   adverse (more brewing)
Price  = (865 - 800) x 7.0   = +455   adverse (new harvest contract price)
Check:  400 + 455 = 855

The volume part is not bad news in itself: the brewery brewed more because wholesale sales were up. This is what accountants call flexing the budget, adjusting the budget for the volume you actually did, so a cost line is judged on efficiency rather than punished for growth. The price part is the real issue, and it is recurring for the rest of the contract.

If splitting by hand feels fiddly, give the assistant the four numbers and the formulas above and ask it to lay out the working. It is a good use of AI as long as you check the "Check" line adds back to the report.

Write down the why before asking for words

The single most useful habit is a short notes table, filled in by whoever knows the cause. It takes 15 minutes and is the difference between true commentary and plausible fiction. The brewery's, filled in:

LineCause typeNote from the person who knowsRecurring?
Taproom salesVolume, partly priceFood-truck Fridays ended; Friday pints down about a third. Price rise holding.Yes until replaced
Wholesale kegsTiming, then recurringNew bar group account started this month; budget had it from month five.Yes
MaltVolume and priceMore brewing for wholesale; new harvest price from this month's delivery.Price: yes
Taproom wagesOne-off, small overrunNew supervisor started with two-week handover overlap, about $900. Rest is extra hours.Mostly no
EnergyTimingFinal three weeks' bill not received; estimate about $850 missing.No
MarketingTimingBeer festival stand paid now; budgeted two months later.No
RepairsOne-offGlycol chiller compressor repair.No

The prompt that turns numbers and notes into commentary

You are drafting the monthly budget vs actual commentary for a small craft brewery.
Attached: variance.csv (Line, Budget, Actual, Variance, FavAdv, Flag) and notes.csv
(Line, CauseType, Note, Recurring).

For each line where Flag is TRUE, write ONE sentence of 25-40 words covering:
what moved (with the amount and F/A label from the file), why (from the note ONLY),
whether it recurs, and the action if the note gives one.
Rules:
- Use the FavAdv column for favourable/adverse. Never infer it from the sign.
- If a line has no note, write "CAUSE NOT YET KNOWN" instead of guessing.
- Do not add causes, percentages or figures that are not in the files.
Then write a 3-sentence overview: operating profit vs budget, how much of the gap
is timing or one-off, and what is recurring.

An illustrative first draft, before corrections:

Taproom sales were $4,600 adverse: volume fell by 700 pints after food-truck Fridays
ended, partly offset by the price rise; this will recur until Friday evenings are replaced.

Wholesale kegs were $3,900 adverse, reflecting the new bar group account starting early.

Energy was $750 favourable thanks to lower usage in the brewhouse.

Overview: operating profit was $2,005 against a budget of $7,600, $5,595 adverse.
Around $2,400 of the gap is one-off, $1,400 is timing and the rest is recurring.

Three things to fix, and they are the typical ones. Wholesale is labelled adverse, despite the instruction, because the model read "+3,900" on a line it half-treated as a cost; always scan the F/A words against your column. Energy has an invented cause: the note said a bill was missing, and "lower usage" appeared anyway, probably because the notes file had the energy row under a slightly different line name. And the overview's split does not add up once you account for energy: the $750 "saving" is really a missing bill, so timing is larger and profit is overstated. The corrected overview is below.

A bridge from budget profit to actual profit

A variance bridge lists every cause, in dollars, that takes you from the budgeted profit to the actual one. It is the most honest one-page summary of a month. Correcting for the missing energy bill first (which lowers actual profit by about $850 to $1,155), the brewery's bridge reads:

StepAmountType
Budgeted operating profit$7,600
Taproom: 700 fewer pints−$5,320Recurring
Taproom: price rise+$720Recurring
Wholesale: new bar group account early+$3,900Timing, then recurring
Malt: extra volume for wholesale−$400Follows wholesale
Malt: new contract price−$455Recurring
Chiller repair−$1,500One-off
Supervisor handover−$900One-off
Festival stand paid early−$1,400Timing
Energy, once accrued−$100Small
All other lines (net)−$990Small
Actual operating profit, corrected$1,155

Read that way, the month is less alarming and more useful. About $3,800 of the gap is one-off or timing. The real story is that the taproom has lost its Friday trade, worth around $5,300 a month in volume, and a new wholesale account has covered most of it. The action is about Friday evenings, not about cutting costs across the board.

The corrected overview sentence: "Operating profit was $1,155 against $7,600 budget once the missing energy bill is accrued; $3,800 of the $6,445 gap is timing or one-off, and the recurring issue is lost Friday taproom trade, largely offset by the new wholesale account."

When the variance is really a budget mistake

Sometimes the actual is fine and the budget was wrong. Writing commentary that blames the team for missing a number nobody could hit wastes everyone's time. Signs of a budget error: the same line misses in the same direction every month from the first month; the budget for the line was a round number or a copy of last year; or the note says "we never planned to do that".

In the brewery's case, the cans line was budgeted at $14,000 a month on the assumption of a supermarket listing that was still being negotiated when the budget was set. It came in at $13,300, $13,100 and $13,400 in the first three months. The honest commentary is one sentence ("Cans are tracking about $700 a month below a budget that assumed a listing not yet agreed") and a re-forecast:

Cans, online and retailMonth 4Month 5Month 6
Original budget$14,000$14,000$14,000
Re-forecast (no listing)$13,300$13,500$14,200
Reason for re-forecastThree-month average, plus the usual rise into the warmer months; listing excluded until signed

Keep the original budget in the report so you can still see the miss, but judge the month against the re-forecast.

Spotting lines that go wrong three months running

One bad month is noise. Three in a row is a pattern that deserves an owner and an action. Once you have a few months of variance files, this prompt earns its keep:

Attached: variance files for months 1-3 (same columns in each).
List every line that was flagged in 2 or more of the 3 months, or was adverse in all
3 months even if not flagged. For each, show the three variances side by side and
the cause type from each month's notes. Do not add causes.
Adverse 3 of 3 months:
Taproom sales     -1,200 | -3,900 | -4,600   Volume (months 2-3), notes: Friday trade
Malt              +310   | +790   | +855     Price from month 2, volume month 3
Cans              -700   | -900   | -600     Budget assumption (listing), see re-forecast

Flagged 2 of 3:
Repairs           +1,100 | +200   | +1,500   One-off each time: glycol chiller twice

That last line is the one a single month hides. Two "one-off" repairs to the same chiller in three months is not a one-off; it is a replacement decision. Illustrative output again, and worth checking against the files, but the question itself is the value: it forces the recurring pattern into view.

How the same method reads in other businesses

The four cause types travel well, but each business has its favourite trap.

  • A wine merchant sees huge timing variances around the festive season. If the budget assumed December's case orders but customers ordered in late November, November looks brilliant and December terrible. Report the two months together as well as separately.
  • An online clothing shop should split sales into gross sales and returns. A sales line on budget can hide a return rate that went from 22 to 30 per cent, which is a product or sizing problem, not a sales one.
  • A handmade jewellery seller with metal-heavy pieces should separate the metal price from everything else. A materials variance that is all metal price calls for a pricing review; one that is volume means you made more.

A one-page variance pack people will actually read

Most small-business owners, partners and lenders will read one page. Put the bridge and the sentences on it and leave the full table as an appendix. The brewery's page, laid out in five blocks:

  1. Headline (one line): "Operating profit $1,155 against $7,600 budget; $3,800 of the gap is timing or one-off."
  2. The bridge from budget to actual profit, as above.
  3. Seven sentences, one per flagged line, in order of size.
  4. Three actions with an owner and a date: taproom manager to trial a Friday food partner by month five; owner to get a replacement quote for the glycol chiller by the next close; bookkeeper to add the energy supplier to the missing-bills check.
  5. What to watch next month: the festival stand cost reverses in month five; the new malt price is now the run rate.

Ask the assistant to lay out the page from your corrected sentences and bridge. Tell it the order of the blocks and a word limit for each, or it will add an introduction and a closing summary nobody needs.

Checks before the commentary goes to anyone

  1. Every figure in the text appears in the table. Search the draft for numbers and tick each one off. A figure you cannot find was made up or miscalculated.
  2. Every F/A word matches the column. Read them in a separate pass; errors here flip the meaning of a sentence.
  3. The bridge adds up. Budget profit plus every step equals actual profit. If it does not, a cause is missing or double-counted.
  4. Timing items are really timing. Each one should reverse in a named future month. Write that month down and check it next time.
  5. Nothing was explained that had no note. Any "CAUSE NOT YET KNOWN" is an action for someone, not a sentence to polish.

The favourable energy line is a reminder that variance commentary is only as good as the close underneath it; speeding up month-end close covers the missing-bills check that would have caught it. If the numbers themselves are unfamiliar, using AI to understand your profit and loss is a good primer, and checking margins product by product helps when a cost variance turns out to be a pricing problem. To have the pack assemble itself each month, see automating monthly management reports; for why the invented energy cause happens at all, AI hallucinations explained for business owners sets out the causes and fixes.

Budget variance questions that come up next

What if I don't have a budget to compare against?

Compare with the same month last year adjusted for any known changes, and treat that as a stand-in for this year. It will be rough, but the method of flagging lines, splitting causes and writing one sentence each still works. Then build a simple monthly budget for next year from this year's actuals, your price changes and your planned hires, so the comparison means something.

Should I compare with the budget or with last year?

Use both, because they answer different questions. Budget against actual tells you whether the plan is on track. This year against last year tells you whether the business is growing or shrinking underneath. A line can be on budget but well below last year, which usually means the budget was set too low.

Should I change the budget when things change?

Keep the original budget fixed for the year so you can see how far reality moved from the plan. Alongside it, keep a re-forecast that you update each quarter with what you now expect. Report actuals against both: the budget shows how good the plan was, the forecast shows what to expect for the rest of the year.

Further reads

Sources: Xero Central on the Budget Variance report; QuickBooks Help on budgets and the Budget vs Actuals report (Plus and Advanced plans).

Want your monthly variance pack to write itself?

On a 1:1 call we'll look at your budget and last month's figures, set a sensible flagging rule, and build the export, prompt and checks so the commentary drafts itself each month.

Book a 1:1 call with me