Month·End·Close
← Month-End Close

Flux & Variance

Flux analysis example: a revenue account and a receivables account worked through

Two accounts, start to finish — what to pull, what the pivot shows, which drivers to name, and the commentary that comes out the other end.

Most explanations of flux analysis stop at the method. This one runs two accounts all the way through, because the part that's actually hard isn't knowing you should explain a variance — it's knowing where to look and when to stop.

All figures below are illustrative and the entity is synthetic. No company data appears anywhere on this page. The shapes are realistic; the numbers are made up to tie cleanly.

The setup

Northwind Trading is a products business selling through retailers and online marketplaces. Close for August 2026, comparing against July. Thresholds are set at $50,000 and 10 percent — an account flags only if it exceeds both, which keeps the queue to things worth a sentence.

Example 1: a revenue account (income statement)

Product revenue came in at $2,413,500 against $1,985,000 in July. That's a $428,500 increase, about 21.6 percent — past both thresholds, so it needs commentary.

The pull

Because income statement accounts reset each period, one month of data only tells you that month's total. You need both. Pull the GL detail for July and August together, pivot it with the date as the column field and customer as the row field, then add a column for the difference and sort by it.

Sorting by the difference rather than by size is the step that saves the most time. The largest customers aren't necessarily the ones that moved.

What the pivot showed

CustomerJulyAugustChange
Big-box retailer A412,000724,000+312,000
Online marketplace B338,500525,000+186,500
Regional distributor C94,000—(94,000)
All other customers1,140,5001,164,500+24,000
Total1,985,0002,413,500+428,500

Three lines account for nearly all of it, which is typical for revenue — movement tends to concentrate in a handful of customers rather than spreading evenly.

Notice the third row. Distributor C billed nothing in August after $94,000 in July. A pivot sorted by change surfaces that immediately; scanning a transaction list would not, because the absence of activity leaves no line to scan.

Checking the drivers before writing

DriverAmount
Retailer A seasonal reset order ahead of Q4+312,000
Marketplace B promotional period volume+186,500
Distributor C placed no order in August(94,000)
All other customers, net+24,000
Drivers named+428,500
Unexplained residual0

Had the write-up stopped after the two increases, the residual would be $70,000 unexplained — and the commentary would have read as complete while missing a customer who stopped ordering entirely. That's the case the residual check exists to catch.

Commentary Product revenue increased $428,500 (21.6%) month over month. Retailer A placed a seasonal reset order ahead of Q4, contributing $312,000 (billing register, invoices 7841–7856). Marketplace B volume rose $186,500 during its August promotional period (marketplace settlement report, August). Offsetting this, distributor C placed no order in August against $94,000 in July; the account confirmed a delayed reorder now scheduled for September. Remaining customers were up $24,000 in aggregate with no individually material movement.

Four sentences, every number sourced, the offset named rather than buried, and nothing left over. The last sentence matters: it tells the reviewer the remainder was looked at and found unremarkable, rather than leaving them to wonder.

Example 2: accounts receivable (balance sheet)

Trade receivables closed August at $2,925,450 against $2,140,000 at July month end — a $785,450 increase, about 36.7 percent.

The pull is different here

This is the part people get wrong coming from the income statement. A balance sheet account carries forward, so July's activity is already sitting in the opening balance. You don't need July's detail. August's activity is the movement.

So: pull August GL detail for the account, and pivot by transaction type rather than by customer. The first question isn't who — it's what kind of activity moved the balance.

Transaction typeAmount
New invoices billed+3,847,200
Cash receipts applied(3,015,300)
Credit memos and returns(41,600)
FX revaluation, foreign-currency invoices(4,850)
Net movement+785,450
Unexplained residual0

The second-level question

That table explains the mechanics but not the business. Billings exceeded collections by roughly $830,000 — the useful question is why.

Here it connects back to the first example: the same two customers that drove the revenue increase were invoiced late in the month, so those receivables hadn't yet come due by 8/31. That's a timing effect, not a collections problem, and saying which one it is matters more than the numbers.

A reviewer's next question is nearly always whether the balance is aging. If the increase is recent billings, that's normal growth. If it's old invoices that haven't been collected, that's a different conversation and probably an allowance question.

Commentary Trade receivables increased $785,450 (36.7%) from July month end. August billings of $3,847,200 exceeded cash receipts of $3,015,300 (AR aging, August; cash receipts journal). The gap is timing rather than collections: $498,500 of the August increase relates to retailer A and marketplace B invoices issued after 8/20 and not yet due at month end. Credit memos of $41,600 and FX revaluation of $4,850 account for the remainder. Aging over 60 days decreased from the prior month.

What the two examples have in common

The mechanical steps differ — two periods versus one, customer pivot versus transaction-type pivot — but the shape is identical:

  1. Pull the right data for the comparison you're running.
  2. Pivot on the dimension where a change means something about the business.
  3. Sort by change, not by size.
  4. Name drivers until the residual closes.
  5. Say what the movement means, not just what it was.

Step four is where most commentary falls short, and it's the only step you can check arithmetically.

You can run a review like this one yourself, step by step: the same company and product revenue accounts (the receivables detail differs between the two pages), with every movement, driver and residual computed as it runs, and an export you can break to see what happens when the file is incomplete.

How this looks in other businesses

The examples above are a products business. The method transfers; the pivot dimension changes.

Software and subscriptions — pivot revenue by plan, contract, or billing type rather than by customer. New bookings, expansions, and churn are the usual driver categories, and they behave differently enough that separating them is worth the extra step.

Services — pivot by engagement or project. Utilization and rate tend to explain more than customer count does.

Project and milestone-billed businesses carry a genuine structural difference worth knowing about. When revenue is recognized before you have an unconditional right to bill, the amount sits in a contract asset rather than in receivables — under ASC 606, a receivable requires an unconditional right to payment, where only the passage of time stands in the way. The contract asset converts to a receivable once that right becomes unconditional.

Practically, that means two things for flux. Receivables gains a driver line for transfers in from contract assets as milestones are reached. And the contract asset account is its own flux, explained by work performed against work billed — a different question from the billed-versus-collected one above.

Seasonal businesses of any kind get more from a same-month-prior-year comparison than from month over month, because it holds the season constant. A month-over-month comparison across a holiday selling period produces large movements that are entirely expected, and explaining them one at a time tells nobody anything.


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: flux analysis vs variance analysis, what flux analysis is, income statement flux analysis, balance sheet flux analysis, and the free Excel template these examples are set up for.

Found something wrong or missing? Tell me here — anonymous, thirty seconds.