Flux & Variance
Income statement flux analysis: explaining what drove the period
Income statement flux analysis — P&L flux, in most people's shorthand — compares revenue and expense activity between two periods and explains what the business did differently. Because these accounts reset each period, you're comparing activity rather than balances — which changes the pull, the question, and the answer.
An income statement account starts at zero every period. Whatever is in it is what happened during that period and nothing else. That sounds obvious and it has a direct consequence: a single month of detail tells you the balance, not the change. To explain a movement you need both periods in front of you.
That's the opposite of a balance sheet account, where the current month's detail is already the movement because the prior period is sitting in the opening balance.
Pull both periods and pivot on date
The workable approach is one extract covering both periods, pivoted with the date as the column field. You get the two periods side by side against whatever dimension the account is organized around — customer, vendor, cost center, product — and the movement becomes visible by category rather than as a single net number you then have to go decompose. A free tool does this grouping for you if you'd rather not rebuild the pivot by hand every period.
For a revenue account, the row dimension is usually customer or product. For an expense account it's more often vendor or expense type. The right dimension is the one where a change tells you something about the business rather than about the ledger.
Volume, rate, and mix
Most income statement movements decompose into three things, and naming which one moved is usually the difference between an explanation and a restatement.
- Volume — more or fewer units, transactions, headcount, or days. The same thing happened more times.
- Rate — the same volume at a different price or cost per unit. A price increase, a renegotiated contract, a wage adjustment.
- Mix — the same total volume distributed differently across things with different margins or costs. Nothing got more expensive; the composition changed.
Mix is the one that gets missed, because it produces a movement without anything obviously changing. Revenue flat but margin down, with no price change and no volume change, is usually mix. An explanation that says "lower margin due to lower pricing" when pricing didn't move is the kind of thing that survives a quick read and falls apart when someone checks.
For revenue by product, the price volume mix calculator does this split for you: paste two periods of units and revenue and it separates volume, mix, price, new and lost products so the pieces add up to the movement.
Revenue and expense accounts behave differently
Within a P&L schedule the accounts are not equally hard, and knowing which is which is most of what makes the review fast.
Revenue tends to concentrate: a handful of customers or products usually account for most of any movement, so the fastest route is sorting the pivot by absolute change and working down until you've covered enough of the variance to stop. Three drivers frequently account for eighty percent of it.
Expenses are more mixed. Some behave like revenue — one large vendor, one obvious driver. Others are made up of many small charges where no single line is material and the aggregate is, which needs a different kind of write-up entirely.
Accounts carrying a lot of journal entry activity are the slowest, because the ledger shows that entries posted and what they netted to, but not what each was for. That detail lives in the entry itself. It's also the category where automated drafting tends to fail, for the same reason: the answer isn't in what you handed over.
Seasonality shows up as period activity
On the income statement, seasonality appears directly in the numbers: revenue concentrated in certain months, spend that follows it, costs that only occur in particular quarters.
This is the main argument for comparing against the same month last year rather than only against last month. A month-over-month comparison in a seasonal business produces large movements that are entirely expected, and explaining them one by one is work that tells nobody anything. The prior-year comparison holds the season constant and shows what actually changed.
Plenty of packages ask for both, along with year to date. Those are separate questions — a driver that explains this month against last month often says nothing about the year against last year.
What a size threshold misses here
Flagging on the size of a movement is standard, and on the income statement it has a specific blind spot: an expense that should have been incurred and wasn't.
A recurring accrual that stopped posting, a vendor who didn't invoice, a cost that was capitalized when it should have been expensed — all of these produce a lower expense, which is rarely what anyone goes looking for. And if the account is small enough, the absence produces no flag at all.
The same applies to a new expense category that appeared this period. It has no prior-period comparison, so depending on how the schedule is built, it may never enter the comparison. Those are structural exceptions — they need a different check, not a lower threshold.
Which comparison to run
- Month over month — the most common for internal close review. Good for catching errors, noisy in a seasonal business.
- Same month prior year — holds seasonality constant. Often the more informative comparison for revenue and variable costs.
- Year to date against prior year to date — smooths timing differences and is common in reporting packages. A movement here is frequently the accumulation of things that were individually unremarkable month to month.
- Against budget — a different question entirely, testing an assumption rather than comparing two things that happened. The distinction matters more than the vocabulary does.
If you work this in Excel: the free flux template flags what needs explaining and shows the residual your drivers don't cover. The CloseOps Flux & Variance System ($79) starts from your trial balance instead: confirm each account's classification and it builds the income statement and balance sheet flux statements, then ranks what to investigate.
Related: a worked example on both statements, balance sheet flux analysis, why the two need different data pulls, and a free Excel template for running either.
Found something wrong or missing? Tell me here — anonymous, thirty seconds.