Method · 5 min read
OPEX variance: which accounts and cost centres explain the spending gap
A spending report says you are 2,200 over. It rarely says which accounts moved, and it almost never says whether the three lines marked not planned are new costs or the same cost filed somewhere else.
The question it answers
Take a cost ledger with a plan and an actual in it, pick the two, and get the gap broken down by account: what was planned, what was spent, what separates them, and which side of the comparison each line sits on.
Three groups come out of it. Lines present on both sides. Spending with no plan under that key. Plan with no spending under that key. The last two are the interesting ones, and they are also the two most often misread.
The columns you need
Four, and none of them is a product:
- A period label and a scenario label - one month read twice, once for the plan and once for what happened.
- An account - a code or a name, meaning the same account on both sides.
- An amount.
A cost centre, a department or an entity are optional. Each one you map can join the comparison level, or simply group the reading.
The convention that decides every sign
Before anything is read, the tool asks how your file writes costs: as positive amounts, or as negative ones. It never guesses, and this is the one refusal worth explaining.
Nothing in the values can settle it. A file where everything is positive may follow either convention. Read the wrong way round, every overrun becomes a saving - and no total on the screen would contradict it. So the choice is yours, it is shown with a worked example, and it travels with the result.
One sentence follows the figures everywhere, including into the review pack: costs are shown as positive amounts, and a negative variance is favorable. Favorable is not the same as good news - a project stopped also spends less.
The comparison level changes the reading
You choose what a line is compared on: the account alone, or the account plus a cost centre, a department, an entity. This is the second declaration, and it changes what you see without changing a single total.
A cost moved from one cost centre to another disappears from the first reading and appears as two opposite lines in the second - a plan not spent here, spending not planned there. That is a reorganisation, not new spending, and the screen says so next to the figures rather than in a footnote.
What it looks like on a small ledger
The sample ledger has seven accounts across one quarter, with a budget and an actual. Budget 30,500, actual 32,700: a gap of 2,200, unfavorable.
- 6200 Travel 8,000 planned, 11,000 spent - the biggest overrun at 3,000.
- 6300 Consulting 5,000 planned, 3,000 spent - 2,000 under, which may be a project stopped.
- 6100 Rent 12,000 planned, 12,200 spent - a 200 gap by account alone.
That last line is the one to look at twice. Compared by account and cost centre, the rent is not a 200 movement at all: it is 12,000 planned and unspent in Paris and 12,200 spent and unplanned in Lyon. Seven lines become nine. The total stays 2,200 either way.
Build yours
Read your own ledger
Drop a cost ledger, declare the convention, pick the level, and read the gap. It all runs inside your browser: nothing is uploaded, which you can check in the Network panel while you work.
Open OPEX VarianceWhat it will not do
It never names a cause. A ledger does not carry the reasons for its own overruns. If your file has a column that comments a line, it is repeated exactly as written, under a heading that concludes nothing.
It never calls a reclassification new spending. When the level you chose splits a cost into two opposite lines, the screen says what that means before you read the number.
It does no budget phasing, no allocation, no accrual reversal. It compares two scenarios of one period, as they are written in your file.
It recommends nothing. No cut, no target, no priority.
Questions
Can I use my sales export?
No. This reads a cost ledger, which has no product, no quantity and no price. It is a separate source, and the product never joins the two.
What if a cost centre is missing on some lines?
Those lines group under (Unassigned) when the cost centre is in the comparison level. They are never attached to an existing centre by guesswork.
Does my file leave the browser?
No. The whole calculation runs in the page, on your machine. There is no upload, no account, and no server that could hold your figures. How to verify that in two minutes.