Flux analysis, and the thresholds that stop it being noise
In short
Flux analysis is the month-end comparison of each account against a prior period, a budget or a forecast, with a written explanation required for any movement past a threshold. That threshold has to be a pair — an absolute floor and a relative floor applied together — because either alone floods the review with one class of account and hides another.
Key takeaways
- An absolute floor alone floods the queue with large accounts and hides small ones; a relative floor does exactly the reverse.
- Apply the pair together, then add a hard ceiling flagging on absolute size alone — or a 4% move on the biggest account escapes.
- Sign flips and accounts moving to or from zero need their own rules: the percentage change is meaningless or undefined.
- A commentary is accepted only if it names a driver and attributes an amount, leaving a visible unexplained residual.
- Last month's explanation does not carry forward. A recurring variance is re-asserted each period or it stops being a control.
Flux analysis is the comparison, at close, of each account's balance or movement against a chosen base — last month, the same month last year, budget, or a rolling average — with a written explanation required wherever the difference matters. It is a completeness control: not a hunt for errors, but a demand that every material movement have a named cause before the period is signed.
What decides whether it works is the threshold, and almost everyone implements it as one number. One number is always wrong, in one of 2 predictable directions.
Four comparison bases, and when each is honest
- Prior month. Catches coding faults fastest, useless for anything seasonal — a landscaper's March always alarms beside February.
- Same month last year. Handles seasonality, hides drift: a cost creeping up 4% a month arrives as one annual change with one explanation.
- Budget or forecast. The only base testing a decision rather than a bookkeeping event; worthless if nobody revisited the budget after Q1.
- Rolling average of the last 3 periods. The best default where there is no budget, absorbing one-off months without hiding a trend.
One threshold always fails, in the same two ways
An absolute-only threshold means every large account clears it every month, so the reviewer works a list of movements that are simply the business operating, while a small expense account tripling goes unseen. A relative-only threshold reverses it: small accounts flood on trivial swings, and the largest account moves a substantial sum without reaching the percentage.
So flag only when both floors are crossed, then add the rules the pair alone misses. Worked below against an absolute floor of 5,000, a relative floor of 5%, and a hard ceiling of 50,000.
| Account | Prior to current | Change | Change % | Outcome |
|---|---|---|---|---|
| Bank charges | 820 to 2,140 | +1,320 | +161% | Not flagged — below the absolute floor |
| Cost of sales | 412,000 to 448,000 | +36,000 | +8.7% | Flagged — it clears both floors |
| Revenue | 1,240,000 to 1,301,000 | +61,000 | +4.9% | Flagged by the ceiling alone; the pair misses it |
| Subscriptions | 1,150 to 1,190 | +40 | +3.5% | Not flagged by any rule, correctly |
| Consultancy | 0 to 18,400 | +18,400 | undefined | Flagged by the new-account rule; no ratio exists |
| Other income | 6,200 to -1,900 | -8,100 | sign flip | Flagged by the sign rule, whatever the size |
The third row justifies the whole arrangement. A 4.9% movement on the largest account outweighs everything else on the page combined, and the paired threshold suppresses it. The ceiling exists for that account.
A threshold that flags the same accounts every month is a subscription to a report nobody reads.
What a commentary must contain to count as explained
"Higher due to increased activity" explains nothing and is the modal answer. An accepted commentary needs 4 things; the third makes the control real.
- A named driver. Not a direction but a cause: 3 sites onboarded mid-month, a supplier price change effective on the 12th, an annual premium landing here.
- An amount attributed to that driver, so the explanation's arithmetic is visible rather than asserted.
- A residual — whatever the drivers miss, stated explicitly. Requiring drivers to cover 80% of the movement stops a plausible sentence standing in for an investigation.
- A recurrence flag: whether to expect this again next period, which is what makes the commentary usable by a forecast.
Residuals are where the interesting failures surface. Unexplained movements in income and expense of similar size, in one month, are usually a client transferring money between their own accounts — the detection rule is in transfers coded as income and as expense. A jump in fee expense with no matching sales movement usually means a settlement booked net, the gross-up problem in payouts that never match the sales behind them. A variance in an already-closed period points at duplicated data, as in the feed re-delivering transactions after a reconnect.
Who signs it, and what the signature asserts
The preparer writes the commentary; a second person accepts it. The reviewer is not re-checking arithmetic the system already did — they test the attribution, and may reject a commentary that is merely true. Both names and timestamps belong on the record, and nothing carries forward: a recurring variance is re-asserted each period, or the control becomes a subscription.
This is a close control, not a reporting pack. Advisory dashboards sit elsewhere; what flux owes the close is a defensible answer to why each material movement happened, before anyone relies on the figures — including whoever carries them onto a filing, where a wrong number produces a return that comes straight back rejected.
Implementing it is mostly threshold plumbing and a commentary store with versions and owners — the sort of thing we build under internal tools and ops, inside the reconciliation and close topic for accounting and tax practices.
Frequently asked questions
Short answers to the follow-ups this page tends to raise.
What thresholds should a flux analysis use?
A pair, applied together, plus 3 overrides. Flag when the absolute change clears a floor set from the client's own scale and the percentage clears a relative floor; then always flag above a hard ceiling regardless of percentage, on any sign change, and on any account moving to or from zero. Either floor alone floods the review and hides a whole class of account.
What makes a flux commentary acceptable rather than merely written?
It has to name a driver and attribute an amount to it, leaving a stated residual. "Higher due to increased activity" fails both tests. Requiring drivers to cover 80% of the movement, with the rest declared unexplained, is the single change that most improves commentary quality: it makes an incomplete explanation visible instead of persuasive.
Should flux analysis compare against the prior month or the prior year?
Prior month for coding faults, prior year for anything seasonal, and ideally both. Prior-month comparison surfaces a miscoded transaction within weeks but produces false alarms in a seasonal business. Prior-year comparison handles seasonality but hides gradual drift, because a cost creeping up each month arrives as one annual change with one tidy explanation.
- flux analysis
- close
- variance
- controls
The work behind this page
Builds from our portfolio that this page draws on.
Read next
- What a bank reconciliation statement has to prove, as a data objectNot a document but an assertion: two balances, a list of items explaining the gap, and enough stored evidence for someone else to recompute it months later.definition
- The suspense account, and why an automated coder must be barred from itA suspense account holds an amount whose treatment a named person has not yet established. It is a human instrument, which is exactly why an automated coder must not write to it.definition
- A bookkeeping pilot passed, then the team went back to the spreadsheetQuiet abandonment after a successful trial is almost never a training problem. It is a placement problem, and there is a usage measurement that tells you which of four causes you have.diagnostic
- A credit note is not a negative invoice: where the sign really livesModel it as an invoice with a minus in front and three things break: allocation, tax reporting, and every aging report that reads the ledger afterwards.definition
- A two-hundred-page client scan splits into the wrong number of documentsBoundary errors are wildly uneven across document types, so an overall accuracy figure hides them. Count documents in against documents out, per type, and fix the cause where the pages are produced.diagnostic
- Clients answer the first document reminder and ignore every one after itReminder decay is a content and addressing fault rather than a frequency fault, and one split of your own send data tells you which of the two you have.diagnostic
Related across the site
Working on something in this space?
Tell us where you are in a sentence or two. We'll tell you honestly whether we're the right team, and what a sensible first slice of the work looks like.
Start the conversation