FlowParse
Budgeting 10 August 2026 15 min read

Budget vs actual from bank data

Most budget reports fail in the same two ways: they arrive after the month they describe is beyond changing, and nobody can trace a variance back to the payment that caused it. FlowParse turns bank statements into categorised transactions you can line up against the budget by period and cost centre — so every number in the variance column has a specific payment sitting underneath it.

FlowParse
flowparse.io

Convert a statement now

Upload one PDF — every transaction comes back with date, description, amount and running balance, checked against the statement’s own closing figure.

Loading quota…

Upload a document

or import from cloud
Smart Merge — drop many PDFs and combine them into one Excel (up to 5 files)

Free: 10 pages / month · Upgrade for more

Files encrypted in transit · auto-deleted after processing · GDPR compliant

The report nobody argues with

There is a version of the budget meeting that goes well. Someone puts a table on the screen, three lines are materially different from plan, and for each one there is a sentence explaining what happened and a payment you could click through to. The meeting is short. Decisions get made.

There is a more common version. The table appears, and the first ten minutes go on whether the numbers are right — whether that cost belongs in this month, whether the department was charged twice, whether last month’s figure changed since last month. By the time the numbers are agreed, the time for a decision has gone, and the meeting produces a request for a better report rather than an action.

The difference between the two is almost never the quality of the analysis. It is whether the underlying data is traceable. A variance that resolves to a named payment on a named date is a fact. A variance that resolves to a category total is an opinion, and opinions get argued with. This page is about getting to the first kind.

Why the report is always late

Ask why the budget report lands on the fifteenth and the answer is rarely analysis time. The analysis takes an hour. What takes two weeks is assembling the data: waiting for the bank feed to catch up, exporting from a card account that has no feed, chasing a subsidiary’s statements, and re-keying whatever arrived as a PDF.

That assembly is invisible in every process diagram, because it is not a step anyone designed. It accumulated. One account was added when a new supplier demanded a separate card, another when a second entity was set up, and each addition added a manual step that nobody costed.

The practical consequence is that budget reporting has a floor set by its slowest data source. Improving the analysis does nothing to that floor. Getting every account into one dataset on day one is the only change that moves it — and that is a document problem, not a finance problem, which is why it tends to sit unowned.

FlowParse
flowparse.io

Two sources of truth, and which one to start from

A budget comparison can be built from the ledger or from the bank. Both are legitimate; they answer different questions and fail in different ways, and choosing without noticing you chose is where a lot of confusion starts.

Built fromAnswersStrengthWeakness
The ledgerWhat the period costAccruals applied, matches statutory accountsOnly as current as the bookkeeping
The bankWhat money movedAvailable immediately, impossible to forget a paymentNo accruals, timing follows payment not consumption
BothCost and cash, separately labelledDifferences become explanations, not errorsRequires the discipline to keep them apart

The third row is the honest answer for most organisations, and it is less work than it sounds. The bank view is available on the first of the month and catches everything that moved. The ledger view arrives later and is correct in the accounting sense. Publishing the first with the second to follow gives budget holders something to act on while it still matters, provided the label is honest about which one they are looking at.

What does not work is publishing one and describing it as the other. A cash-based report presented as a cost report will be right most months and spectacularly wrong in the month the annual licence renews — and one such month is enough to lose the audience permanently.

What bank data can and cannot tell you

Worth being blunt, because the limits determine what this report is for. Bank data is a record of movement. It is complete, it is dated, and it cannot be forgotten — three properties the ledger does not always have in the first week of a month.

It knows exactly when money left. No estimate, no judgement, no cut-off argument. For cash management and for spotting a payment nobody expected, that is precisely the right data.

It does not know what the money was for.A description field is a hint, not a category, and a bank line that says a card processor’s name could be software, advertising or travel. Categorisation is applied on top, which is why it is the part that needs your attention rather than the extraction.

It does not know about obligations you have not paid.An invoice received on the twenty-eighth and paid in the following month is next month’s bank line and this month’s cost. If your budget is written on a cost basis, the bank view will systematically understate late-month activity.

It does not net internal movement. A transfer between your own accounts appears twice, once on each side, and unless it is excluded it inflates both spend and income. This is the single most common way a bank-built budget report is quietly wrong, and it is worth a dedicated exclusion rule rather than a monthly manual check.

The shape of the comparison

A budget-versus-actual table has five columns and nothing else. Every additional column is a request for someone to spend longer reading and is usually the reason the report goes unread.

ColumnWhat it holdsWhy it earns its place
CategoryThe budget line as writtenThe comparison is only valid if both sides use the same names
BudgetPlanned amount for the periodThe commitment being tested
ActualWhat the data says happenedThe fact
VarianceActual minus budget, with signThe number people scan for
NoteOne sentence, only where materialTurns a number into a decision

Add a year-to-date pair alongside the period pair and stop. Percentage columns are tempting and mostly harmful: a 300% variance on a line budgeted at fifty is noise, and it will draw more attention than a 4% variance on a line budgeted at half a million.

The note column is the one that gets dropped first and matters most. A variance without an explanation transfers the work to the reader, and the reader is usually the person least equipped to do it. One sentence, written by whoever prepared the report, is worth more than three extra analytical columns.

FlowParse
flowparse.io

Categories that survive contact with a year

The category list is the whole design of the report, and it is almost always designed by accident — inherited from whatever the accounting system shipped with, then extended one line at a time whenever something did not fit.

Two rules keep it usable. Keep it short enough to hold in your head. Somewhere between fifteen and thirty categories covers almost any small or mid-sized organisation. Beyond that, nobody remembers where things go, so similar costs land in different places in different months and the year-over-year comparison silently stops working.

Never create a category to explain one transaction.It is the most tempting move in the whole exercise and the most damaging. The one-off consultancy fee belongs in professional services with a note, not in a new category called “consultancy — project X” that will contain exactly one row forever and clutter every future report.

The mechanics of assigning transactions to those categories are covered in more depth on our transaction categorisation page, and the step-by-step method is in the categorisation guide. The short version: recurring payees stabilise fast, one-off payments always need a person, and the value comes from correcting a payee once rather than every month.

Timing differences, and why they deserve their own label

Most of what looks like variance is timing. The budget spread a cost evenly across twelve months; the payment happened once, in month three. Nothing is wrong, and yet the report shows a 300% overspend in March and an underspend in every other month.

Reports that do not distinguish timing from genuine variance train their readers to ignore them. After two or three months of alarming numbers that turn out to be nothing, budget holders learn that red cells are usually noise — and then they miss the one that is not.

The fix costs almost nothing: a flag on the row, and a note saying “annual premium, paid in full in March, budget phased evenly”. Once flagged, the same rows can be excluded from the exception list automatically in later months, which is the point at which the report starts saving time rather than consuming it.

It is also worth phasing the budget itself more honestly where you can. If insurance is paid annually in March, phasing it evenly across the year creates eleven months of false comfort and one of false alarm. Phasing it into March creates a report that matches reality, and the effort is a one-off.

Accruals, and the honest version of a cash report

A bank-built report is a cash report, and the temptation is to quietly present it as something more. Resist it. The stronger move is to label it accurately and add the two or three adjustments that matter most.

In practice a small number of items cause almost all the divergence: a large invoice received but not yet paid, a prepayment covering several future periods, and payroll timing when a pay date falls either side of a month end. Three manual adjustments, listed openly at the foot of the report, close most of the gap without pretending to be a full accrual exercise.

What matters is that the adjustments are visible. A report that says “cash basis, plus three listed adjustments” can be challenged, corrected and trusted. A report that has quietly applied unnamed adjustments cannot be checked by anyone, which means in practice it is checked by nobody.

When the full accounting view is needed, it comes from the ledger — see our trial balance conversion page for getting that side into the same spreadsheet, and the month-end close checklist for where the two views meet in a normal close.

Cost centres and the person who owns the line

A variance without an owner does not get resolved. It gets discussed. The most reliable improvement to any budget process is not analytical — it is attaching every budget line to one named person who is expected to explain it.

That requires the data to carry a cost centre, which bank data does not provide. It has to be assigned, usually through the same mechanism as categories: by payee for the obvious cases, by allocation rule for shared costs, and by hand for the rest. Our tagging feature covers how a row keeps the account, file and entity it came from, which is the foundation the cost-centre layer sits on.

Shared costs are where this gets political rather than technical. A single office rent split across four departments needs a basis — headcount, floor area, revenue — and whichever you pick, someone will consider it unfair. The workable answer is to pick a basis, write it down, and keep it for the year. Re-litigating the allocation every month costs more than any distortion the basis introduces, and the detailed treatment is on our cost centre spend report page.

FlowParse
flowparse.io

How it works

1 · Upload every account

Current accounts, card accounts, each entity. Up to 100 files at once, each row keeping the file and account it came from.

2 · Transactions extracted

Date, description, counterparty, amount and running balance, read by meaning rather than by fixed position, so layouts and banks can differ.

3 · Balances checked

Every statement's own closing balance is recalculated from its rows, so a missed or duplicated transaction is caught before it reaches a variance.

4 · Categorise and allocate

Apply your category list and cost centres. Correct a payee once; the correction holds for that payee thereafter.

5 · Export to your model

Excel or CSV with fixed columns, so the budget spreadsheet you already use can consume it without rework each month.

6 · Compare and annotate

Line up against budget by period and cost centre, then write one sentence against each material variance.

FlowParse
flowparse.io

Reading a variance properly

A variance has a sign, a size and a cause, and they are three separate questions that get collapsed into one far too often.

The sign is the least informative part. An underspend is not automatically good news. It can mean a project has not started, a hire has not been made, or an invoice has not arrived yet — all of which are problems dressed as savings, and the third one will reverse next month.

The size only means something relative to the line. Judge materiality against the budget for that line and against the total, not against a single percentage rule applied across every row.

The cause is the only part worth a meeting.Four causes cover nearly everything: timing, price, volume, and something genuinely unplanned. Naming which one it is converts the discussion from “why is this red” to a decision about whether anything should change.

It is worth writing those four causes at the top of the report as a legend. It sounds trivial and it changes behaviour: budget holders start categorising their own variances before the meeting, because the vocabulary is in front of them.

Thresholds worth setting

Without a threshold, every line demands attention and therefore none of them get it. With one, the report has a short exception list and the rest is context.

A workable rule is two conditions together: the variance exceeds a fixed cash amount anda percentage of that line’s budget. The cash floor stops trivial lines generating noise; the percentage stops large lines hiding a real problem inside a big number. Either test alone produces a list nobody reads.

Set the numbers so the exception list runs to five or six rows in a normal month. That is not a scientific target — it is the length a person will actually read before a meeting, and a report calibrated to human attention outperforms one calibrated to statistical significance.

Review the thresholds once a year, when the budget is rebuilt. Reviewing them more often turns them into a lever for making an uncomfortable month look calmer, which is exactly what they exist to prevent.

From variance to rolling forecast

Halfway through a year, the original budget is a historical document. Comparing month nine against a number set fourteen months earlier tells you about the forecasting, not about the business.

The usual answer is a rolling forecast alongside the fixed budget: the budget stays as the commitment against which performance is judged, and the forecast is updated with what is now known. Both columns sit in the same table, and the difference between them is itself informative — it is the accumulated effect of everything that has changed since the plan was written.

Bank data makes this cheaper than it used to be, because the actuals feeding the reforecast are already assembled. The work becomes judgement about the remaining months rather than data collection about the completed ones, which is the right division of effort and rarely the actual one.

If cash timing rather than cost is your concern, the cash flow page covers building a forward view from the same transactions, and the two reports share their entire data layer.

How often to run it

Monthly is right for almost everyone. Weekly produces noise that gets mistaken for signal; quarterly is too late to change anything inside the quarter.

The exception is a business with volatile cash or a tight facility, where a weekly cash view is genuinely needed. Even then, keep it separate from the budget report: they have different audiences, different cadences and different levels of tolerance for being provisional.

What matters more than frequency is consistency of the date. A report that appears on the fourth working day every month becomes part of how the organisation runs. One that appears somewhere between the fourth and the eighteenth is treated as an occasional document, however good it is, because nobody can plan around it.

FlowParse
flowparse.io

Seven mistakes that make the report useless

Counting transfers between your own accounts

The most common and most embarrassing. Every internal movement appears twice and inflates both sides. It needs an exclusion rule, not a monthly manual sweep.

Treating timing differences as overspend

Three months of false alarms and the audience stops reading. Flag them, note them, and phase the budget more honestly next year.

Letting the category list grow every month

A category created to explain one transaction destroys year-over-year comparability for a benefit that lasts one meeting.

Publishing without a note column

A number with no explanation moves the work to the reader, who has less context than the preparer and will simply not do it.

Changing the budget to match the actual

It makes the variance disappear and the information with it. Reforecast in a separate column; leave the original commitment visible.

Reporting to nobody in particular

A variance without a named owner gets discussed rather than resolved. One line, one person, every month.

Presenting a cash report as a cost report

Right most months, badly wrong in the month the annual renewal lands — and one such month costs the report its credibility for a year.

Who this is for

Anyone whose budget lives outside the accounting system, or whose spending is spread across more accounts than the system sees. That covers more organisations than it should.

Finance leads in growing companies

The budget is in a spreadsheet, the spending is across four accounts and two cards, and assembling it is the job that eats the first week of every month.

Department and budget holders

Accountable for a line they cannot see the detail behind — covered in depth on the department budget tracking page.

Bookkeepers and outsourced finance

Producing the same report for several clients, each with a different chart of accounts and a different idea of what a category means.

Founders without a finance function

No management accounts yet, but a real need to know whether the plan is holding — see the startup converter page for the burn-rate view of the same data.

For groups with several entities closing together, the combination problem comes first and is covered on our multi-entity reconciliation page and in the group finance use case. Founders tracking runway rather than departmental budgets will find the framing on the startup page closer to what they need.

What this is not

It is not a planning tool. It does not help you decide what the budget should be — it tells you what happened against the one you set. Building the budget itself is a separate exercise, and the guide to building one from last year’s data is the companion piece to this page.

It is not an accounting system and does not post journals. It produces a dataset and a comparison; what you do with them in the ledger is your accountant’s territory, and the export feature covers getting data into the system you already run.

It does not decide what a variance means. The four causes above are a vocabulary, not an algorithm. Whether an underspend on marketing is prudence or a stalled campaign is a question about your business, and no amount of transaction data answers it.

And it does not remove the need for judgement about accruals. It makes the cash position available immediately and honestly labelled, which is a genuine improvement over waiting three weeks for a number that will also need judgement applied to it.

Frequently asked questions

Start with one month

Convert last month’s statements for every account, categorise them once, and put the result next to your budget. If the variances turn out to be traceable, the rest of the process follows from there.

Related