The advanced cash flow model, worked through
The method, in short
Cash flow can always be described as every movement in the accounts except cash. Multiplying every movement by −1 expresses any cash flow statement you like, in whatever structure best captures your business. The challenge is then to group and allocate the transactions in the accounts onto those cash flow lines, so that they give the best possible picture of the cash flow. These groupings and mapping rules can be made at different levels:
- Statementone cash flow line describes the whole line
- ↳Accountit doesn't, but one describes each account
- ↳Dimensionit doesn't, and only a tag on the transaction separates them
- ↳Transactionit doesn't, and only the counter-account and debit/credit separate them
When every movement has its cash flow line, the check is mechanical: the total reconciles automatically with the period's change in cash.
The starting point — balanced financials for a period
Method: The starting point is your P&L and balance-sheet movements over a period. Gather the list of every line item that is not a total or a subtotal, and how much each one moved. That is the ledger at its highest grouping. When the model is finished, every line item except cash has been mapped to a cash flow statement.
The logic: The movements in the P&L and the balance sheet always sum to zero, which means everything except cash is already a very simplified cash flow statement — just from looking at the line items. The maths does require the sign on those lines to be flipped before they become drivers of the cash flow, which is the same reason revenue is negative in the ledger yet adds to cash.
Example: February. The statements balance to zero, which is the one thing that has to be true before any of this works. Each movement is shown twice: as it sits in the statements, and multiplied by −1, the form it takes once it reaches the cash flow statement. Accounts payable shows −90 because the payable grew by 90, and net revenue shows −900 because revenue is a credit. Note that the equity line moves 150, not the 262 the period earned. The result is not inside equity here — it is the P&L lines themselves, which is exactly why P&L movements and balance-sheet movements can sit in one list without anything being counted twice.
| Statement line | Cash flow line | Movement | Movement × −1 |
|---|---|---|---|
| Net revenue | Unmapped | −900 | 900 |
| Raw materials and consumables | Unmapped | 280 | −280 |
| Other external costs | Unmapped | 150 | −150 |
| Personnel costs | Unmapped | 170 | −170 |
| Depreciation and amortisation | Unmapped | 26 | −26 |
| Financial items | Unmapped | 12 | −12 |
| Intangible fixed assets | Unmapped | 94 | −94 |
| Tangible fixed assets | Unmapped | 180 | −180 |
| Accounts receivable | Unmapped | 60 | −60 |
| Other receivables | Unmapped | 25 | −25 |
| Accounts payable | Unmapped | −90 | 90 |
| Accrued expenses | Unmapped | −20 | 20 |
| Equity | Unmapped | 150 | −150 |
| Long-term liabilities | Unmapped | −200 | 200 |
| Cash and bank | — the model equals this | 63 | |
| The statements | 0 |
The identity: The × −1 column already sums to 63 — the movement on cash and bank. Nothing has been mapped yet and the identity already holds. Mapping does not create the 63; it only decides how it is split into lines.
Map the line items whose movement represents a single cash flow
Method: The first step is to go through the line items in the P&L and balance sheet and ask, of each one, whether a single cash flow line already describes it in its entirety. Where it does, that line item and its whole movement are mapped straight to it, and nothing underneath has to be opened.
The logic: A statement line is the sum of its accounts, and each account the sum of its transactions. So where every transaction under the line belongs on the same cash flow line, mapping the line gives the same figure as mapping each transaction. That is what makes the level a choice, and it holds only while the whole movement has one cause.
Example: In this example we can trace eight line items in the P&L and the balance sheet straight to a cash flow line of their own. The line item is then described by that line in full: net revenue belongs in its entirety under the cash flow line EBITDA. The structure we chose starts at EBITDA, to show how much of it actually turns into cash. We also know that the movement on the fixed assets, together with depreciation and amortisation, gives a fair picture of the investments. But depreciation and amortisation in the P&L holds both intangible and tangible assets, so the line has to be broken up at the account level — and at this level it stays unmapped. Investments in tangible assets therefore shows −180 for now, and becomes −200 when depreciation joins it in step 3. Accrued expenses is the plain case: the whole movement is what other change in net working capital describes, so nothing under it needs opening. Financial items goes straight to interest paid (assuming interest is paid as incurred — if part of it sits in an accrual, this line needs the account level too, and the test is the same one). Six left.
| Statement line | Cash flow line | Movement | Movement × −1 |
|---|---|---|---|
| Net revenue | EBITDA | −900 | 900 |
| Raw materials and consumables | EBITDA | 280 | −280 |
| Other external costs | EBITDA | 150 | −150 |
| Personnel costs | EBITDA | 170 | −170 |
| Depreciation and amortisation | Unmapped | 26 | −26 |
| Financial items | Interest paid | 12 | −12 |
| Intangible fixed assets | Investments in intangible assets | 94 | −94 |
| Tangible fixed assets | Investments in tangible assets | 180 | −180 |
| Accounts receivable | Unmapped | 60 | −60 |
| Other receivables | Unmapped | 25 | −25 |
| Accounts payable | Unmapped | −90 | 90 |
| Accrued expenses | Other change in net working capital | −20 | 20 |
| Equity | Unmapped | 150 | −150 |
| Long-term liabilities | Unmapped | −200 | 200 |
| Cash and bank | — the model equals this | 63 | |
| The statements | 0 |
Map by account where a line item can represent several different cash flows
Method: Where no one cash flow line describes a whole statement line, because its accounts need different ones, map the accounts instead.
The logic: A statement line is always an aggregation of transactions — and in many cases of several accounts. So where a line holds movements that drove cash in different ways, we can break it open and map the accounts underneath to the cash flow line each of them belongs on. What matters is that we are still working towards full coverage: every line item has to be mapped, and never twice — which goes for the accounts inside a line we choose to split as well.
Example: Depreciation and amortisation splits in two, and each part joins the asset it writes down. This is where the method parts ways with the recipe. The indirect method subtracts depreciation from profit and then adds it back. Here it is never subtracted in the first place: it is routed to the same cash flow line as the asset it wrote down, where the −180 net movement and the −20 depreciation combine into the −200 that actually left the bank — the equipment was paid on purchase, so the whole addition is cash. There is no add-back line because there is nothing to add back. Equity splits the same way: 2091 retained earnings carries February's dividend and 2093 the shareholder contribution, one cash flow line each. The dividend was decided and paid within the month, so the dividend liability on 2898 nets to zero; in a month where it doesn't, 2898 belongs on the dividend line too.
| Statement line | Cash flow line | Movement | Movement × −1 |
|---|---|---|---|
| Net revenue | EBITDA | −900 | 900 |
| Raw materials and consumables | EBITDA | 280 | −280 |
| Other external costs | EBITDA | 150 | −150 |
| Personnel costs | EBITDA | 170 | −170 |
| Depreciation and amortisation | 26 | −26 | |
| 7810 Amortisation, intangibles | Investments in intangible assets | 6 | −6 |
| 7830 Depreciation, equipment | Investments in tangible assets | 20 | −20 |
| Financial items | Interest paid | 12 | −12 |
| Intangible fixed assets | Investments in intangible assets | 94 | −94 |
| Tangible fixed assets | Investments in tangible assets | 180 | −180 |
| Accounts receivable | Unmapped | 60 | −60 |
| Other receivables | Unmapped | 25 | −25 |
| Accounts payable | Unmapped | −90 | 90 |
| Accrued expenses | Other change in net working capital | −20 | 20 |
| Equity | 150 | −150 | |
| 2091 Retained earnings | Dividends paid | 300 | −300 |
| 2093 Shareholder contributions | Shareholder contributions | −150 | 150 |
| Long-term liabilities | Unmapped | −200 | 200 |
| Cash and bank | — the model equals this | 63 | |
| The statements | 0 |
Use transaction tags where an account represents several different cash flows
Method: Where no one cash flow line describes a whole account, and only some of the transactions on it represent a particular cash flow, you can use the dimension tags in the ledger.
The logic: Just as the accounts make up a statement line, the tagged transactions together with the untagged ones make up an account's balance. That is what makes it possible to break an account's balance for the period along at most one dimension of tags, and map the parts to different cash flow lines.
Example: In our example the tax account (1630) sits in the balance sheet under other receivables. We could not map other receivables straight to a cash flow line, because the line holds movements that mean several different things. Nor could we map 1630 as a whole to tax payments, because the account carries several kinds of inflow and outflow: preliminary tax, employer contributions, VAT, interest, and transfers in and out of the account itself. Instead we have tagged the transactions that actually concern income tax with the tag "Tax payment" during the period. That lets us lift exactly those transactions out of 1630 and map them to the cash flow line tax payments, and map the rest of the account's movement to other change in net working capital. Where a company settles each of them against its own liability account instead, the account level in step 3 already separates them and no tag is needed.
| Statement line | Cash flow line | Movement | Movement × −1 |
|---|---|---|---|
| Net revenue | EBITDA | −900 | 900 |
| Raw materials and consumables | EBITDA | 280 | −280 |
| Other external costs | EBITDA | 150 | −150 |
| Personnel costs | EBITDA | 170 | −170 |
| Depreciation and amortisation | 26 | −26 | |
| 7810 Amortisation, intangibles | Investments in intangible assets | 6 | −6 |
| 7830 Depreciation, equipment | Investments in tangible assets | 20 | −20 |
| Financial items | Interest paid | 12 | −12 |
| Intangible fixed assets | Investments in intangible assets | 94 | −94 |
| Tangible fixed assets | Investments in tangible assets | 180 | −180 |
| Accounts receivable | Unmapped | 60 | −60 |
| Other receivables | 25 | −25 | |
| 1630 · tagged "Tax payment" | Tax payments | 40 | −40 |
| 1630 · not tagged "Tax payment" | Other change in net working capital | −15 | 15 |
| Accounts payable | Unmapped | −90 | 90 |
| Accrued expenses | Other change in net working capital | −20 | 20 |
| Equity | 150 | −150 | |
| 2091 Retained earnings | Dividends paid | 300 | −300 |
| 2093 Shareholder contributions | Shareholder contributions | −150 | 150 |
| Long-term liabilities | Unmapped | −200 | 200 |
| Cash and bank | — the model equals this | 63 | |
| The statements | 0 |
Capture and combine payments by mapping on the counter-account
Method: To capture payments in and out directly in the cash flow statement, you can map the transactions by a rule: was the counter-account on the transaction a cash account? If it was, was the row a debit or a credit — and let the two cases go to a cash flow line each.
The logic: This is where an indirect model turns direct. A row that is a debit, with cash on the other side, is money out; a credit with cash on the other side is money in. Just as with the dimension tags, what matters most is full coverage: every transaction is mapped once. So if you add a rule for an account that only catches the transactions whose counter-account is cash, a rule is needed for the transactions whose counter-account is not.
Example: We want a few more lines that show customer and supplier payments specifically. Four rules are enough: incoming payments, outgoing refunds, outgoing payments and incoming refunds. They are driven by 1510 and 2440, and apply only where the counter-account is cash and bank. Because we need full coverage, 1510 and 2440 are mapped where the counter-account is not a cash account too — and that part is what catches the invoicing, the VAT, the write-downs and the offsets. The loan account splits the same way, into a new loan drawn and a repayment made, which is how the statement shows borrowing gross: the net movement on its own hides one inside the other.
| Statement line | Cash flow line | Movement | Movement × −1 |
|---|---|---|---|
| Net revenue | EBITDA | −900 | 900 |
| Raw materials and consumables | EBITDA | 280 | −280 |
| Other external costs | EBITDA | 150 | −150 |
| Personnel costs | EBITDA | 170 | −170 |
| Depreciation and amortisation | 26 | −26 | |
| 7810 Amortisation, intangibles | Investments in intangible assets | 6 | −6 |
| 7830 Depreciation, equipment | Investments in tangible assets | 20 | −20 |
| Financial items | Interest paid | 12 | −12 |
| Intangible fixed assets | Investments in intangible assets | 94 | −94 |
| Tangible fixed assets | Investments in tangible assets | 180 | −180 |
| Accounts receivable | 60 | −60 | |
| 1510 · credit against 1930 | Incoming payments | −850 | 850 |
| 1510 · debit against 1930 | Outgoing refunds | 10 | −10 |
| 1510 · no cash counter-row | Other change in net working capital | 900 | −900 |
| Other receivables | 25 | −25 | |
| 1630 · tagged "Tax payment" | Tax payments | 40 | −40 |
| 1630 · not tagged "Tax payment" | Other change in net working capital | −15 | 15 |
| Accounts payable | −90 | 90 | |
| 2440 · debit against 1930 | Outgoing payments | 315 | −315 |
| 2440 · credit against 1930 | Incoming refunds | −10 | 10 |
| 2440 · no cash counter-row | Other change in net working capital | −395 | 395 |
| Accrued expenses | Other change in net working capital | −20 | 20 |
| Equity | 150 | −150 | |
| 2091 Retained earnings | Dividends paid | 300 | −300 |
| 2093 Shareholder contributions | Shareholder contributions | −150 | 150 |
| Long-term liabilities | −200 | 200 | |
| 2350 · credit against 1930 | New loans | −400 | 400 |
| 2350 · debit against 1930 | Loan repayments | 200 | −200 |
| Cash and bank | — the model equals this | 63 | |
| The statements | 0 |
The finished model
The logic: Assembled from whatever level each cash flow line needed, the model holds one property: every movement is mapped exactly once. That is what makes the check mechanical: either the total equals the movement on the cash account, or some movement was mapped twice or not at all.
Example: Fourteen cash flow lines, chosen by this company. Drill down into any of them to see what it was mapped from — a whole statement line, the accounts under one, a tag, or the transactions themselves. The total is the movement on 1930.
| Line item | Amount |
|---|---|
| 300 | |
| 3010 Net revenue | 900 |
| 4010 Raw materials and consumables | −280 |
| 6990 Other external costs | −150 |
| 7010 Personnel costs | −170 |
| 850 | |
| 1510 · credit against 1930 | 850 |
| −10 | |
| 1510 · debit against 1930 | −10 |
| −315 | |
| 2440 · debit against 1930 | −315 |
| 10 | |
| 2440 · credit against 1930 | 10 |
| −470 | |
| 1510 · no cash counter-row | −900 |
| 2440 · no cash counter-row | 395 |
| 1630 · not tagged "Tax payment" | 15 |
| 2990 Accrued expenses | 20 |
| Change in net working capital | 65 |
| −40 | |
| 1630 · tagged "Tax payment" | −40 |
| −12 | |
| 8410 Financial items | −12 |
| Operating cash flow | 313 |
| −200 | |
| 1220 Tangible fixed assets | −180 |
| 7830 Depreciation, equipment | −20 |
| −100 | |
| 1060 Intangible fixed assets | −94 |
| 7810 Amortisation, intangibles | −6 |
| Investing cash flow | −300 |
| −300 | |
| 2091 Retained earnings | −300 |
| 150 | |
| 2093 Shareholder contributions | 150 |
| 400 | |
| 2350 · credit against 1930 | 400 |
| −200 | |
| 2350 · debit against 1930 | −200 |
| Financing cash flow | 50 |
| Cash flow | 63 |
In one picture: Every line of the P&L and balance sheet on the left, the fourteen cash flow lines on the right, and the mapping in between. Where one of them fans out, the label on each strand is the rule that split it.
The point: The first article, How to build a cash flow statement, deliberately refused to name a method: it treated cash flow as an effect of every non-cash movement and left the structure open. This is what that buys. A model does not have to choose between indirect and direct, and the working-capital lines above show why — the payments in and out as they actually happened, and underneath them the aggregate change that keeps profit tied to cash. A purely direct statement leaves that bridge to a note beside it; a purely indirect one never shows the payments. Both come out of one rule set over one ledger, which is why they can sit in the same statement and still reconcile.
Frequently asked questions
Because an indirect statement stops at the change in each balance. Receivables grew by 60, payables grew by 90 — true, and no help to whoever manages cash. The lines that explain cash are the payments behind those changes: what customers actually paid in, what was actually paid out to suppliers. A purely indirect statement never shows them.
The transaction level exists for exactly this. It opens a net change into the payments that drove it, while the rows with no cash counter-row keep the payment lines tied to the change in the account. You keep the indirect statement's reconciliation and gain the lines it could never show.
Because a purely direct statement is a list of payments with the rest of the reporting cut away. It carries no profit line to start from, so the bridge between profit and cash survives only as a note bolted on beside the statement, not as the structure of it — and with the structure go the subtotals a reader anchors on, and the relation to the balance-sheet measures built from the same lines, like net working capital.
The mixed model keeps the relation: payment lines where payments explain cash, aggregate lines where the statement has to tie back to the P&L and the balance sheet.
First check whether the counter-account can do it. A missing tag is only fatal when the distinction is invisible in the journal itself — where the rows differ by intent rather than by what they were booked against. Where the split follows the counter-account and the direction, step 5 handles it without any tag at all.
Where it doesn't, you don't split it — not from the data as it stands. Every number in the model comes from the ledger, and a split the ledger cannot carry is a split the model cannot show. An estimate presented as a mapping destroys the one property everything else rests on: that every number traces to the ledger.
What the method gives you instead is a precise finding: this account, this missing tag, this level of detail out of reach — which is what you bring to whoever books the transactions. The durable fixes are upstream: give the distinction its own account in the chart of accounts, or make the tag required when transactions are booked. Until then, map at the coarser level; an honest lumped line beats an invented split.
Yes. The lines were yours to define, and they stay yours to change — the logic only requires that every movement has exactly one of them. That is what makes a restructure systematic instead of a rebuild: the levels, the coverage and the check all survive the new structure.
What a new structure does demand is a fresh pass over the mapping. A line that splits, merges or disappears sends its movements back to be re-decided, at whatever level the new lines need — and the check says when you are done: the total ties to the change in cash again. And because what you stored was rules rather than figures, prior periods re-map under the new structure too, as far as their history carries the detail the new rules need.