Cash flow

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:

  1. Statementone cash flow line describes the whole line
  2. Accountit doesn't, but one describes each account
  3. Dimensionit doesn't, and only a tag on the transaction separates them
  4. 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.

1

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.

The statements · nothing mapped2026-02-01 to 2026-02-28 · SEK 000s
Statement lineCash flow lineMovementMovement × −1
Net revenueUnmapped−900900
Raw materials and consumablesUnmapped280−280
Other external costsUnmapped150−150
Personnel costsUnmapped170−170
Depreciation and amortisationUnmapped26−26
Financial itemsUnmapped12−12
Intangible fixed assetsUnmapped94−94
Tangible fixed assetsUnmapped180−180
Accounts receivableUnmapped60−60
Other receivablesUnmapped25−25
Accounts payableUnmapped−9090
Accrued expensesUnmapped−2020
EquityUnmapped150−150
Long-term liabilitiesUnmapped−200200
Cash and bank— the model equals this63
The statements0

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.

2

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 level · 8 of 14 mapped2026-02-01 to 2026-02-28 · SEK 000s
Statement lineCash flow lineMovementMovement × −1
Net revenueEBITDA−900900
Raw materials and consumablesEBITDA280−280
Other external costsEBITDA150−150
Personnel costsEBITDA170−170
Depreciation and amortisationUnmapped26−26
Financial itemsInterest paid12−12
Intangible fixed assetsInvestments in intangible assets94−94
Tangible fixed assetsInvestments in tangible assets180−180
Accounts receivableUnmapped60−60
Other receivablesUnmapped25−25
Accounts payableUnmapped−9090
Accrued expensesOther change in net working capital−2020
EquityUnmapped150−150
Long-term liabilitiesUnmapped−200200
Cash and bank— the model equals this63
The statements0
3

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.

Account level · 10 of 14 mapped2026-02-01 to 2026-02-28 · SEK 000s
Statement lineCash flow lineMovementMovement × −1
Net revenueEBITDA−900900
Raw materials and consumablesEBITDA280−280
Other external costsEBITDA150−150
Personnel costsEBITDA170−170
Depreciation and amortisation26−26
7810 Amortisation, intangiblesInvestments in intangible assets6−6
7830 Depreciation, equipmentInvestments in tangible assets20−20
Financial itemsInterest paid12−12
Intangible fixed assetsInvestments in intangible assets94−94
Tangible fixed assetsInvestments in tangible assets180−180
Accounts receivableUnmapped60−60
Other receivablesUnmapped25−25
Accounts payableUnmapped−9090
Accrued expensesOther change in net working capital−2020
Equity150−150
2091 Retained earningsDividends paid300−300
2093 Shareholder contributionsShareholder contributions−150150
Long-term liabilitiesUnmapped−200200
Cash and bank— the model equals this63
The statements0
4

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.

Dimension level · 11 of 14 mapped2026-02-01 to 2026-02-28 · SEK 000s
Statement lineCash flow lineMovementMovement × −1
Net revenueEBITDA−900900
Raw materials and consumablesEBITDA280−280
Other external costsEBITDA150−150
Personnel costsEBITDA170−170
Depreciation and amortisation26−26
7810 Amortisation, intangiblesInvestments in intangible assets6−6
7830 Depreciation, equipmentInvestments in tangible assets20−20
Financial itemsInterest paid12−12
Intangible fixed assetsInvestments in intangible assets94−94
Tangible fixed assetsInvestments in tangible assets180−180
Accounts receivableUnmapped60−60
Other receivables25−25
1630 · tagged "Tax payment"Tax payments40−40
1630 · not tagged "Tax payment"Other change in net working capital−1515
Accounts payableUnmapped−9090
Accrued expensesOther change in net working capital−2020
Equity150−150
2091 Retained earningsDividends paid300−300
2093 Shareholder contributionsShareholder contributions−150150
Long-term liabilitiesUnmapped−200200
Cash and bank— the model equals this63
The statements0
5

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.

Transaction level · 14 of 14 mapped2026-02-01 to 2026-02-28 · SEK 000s
Statement lineCash flow lineMovementMovement × −1
Net revenueEBITDA−900900
Raw materials and consumablesEBITDA280−280
Other external costsEBITDA150−150
Personnel costsEBITDA170−170
Depreciation and amortisation26−26
7810 Amortisation, intangiblesInvestments in intangible assets6−6
7830 Depreciation, equipmentInvestments in tangible assets20−20
Financial itemsInterest paid12−12
Intangible fixed assetsInvestments in intangible assets94−94
Tangible fixed assetsInvestments in tangible assets180−180
Accounts receivable60−60
1510 · credit against 1930Incoming payments−850850
1510 · debit against 1930Outgoing refunds10−10
1510 · no cash counter-rowOther change in net working capital900−900
Other receivables25−25
1630 · tagged "Tax payment"Tax payments40−40
1630 · not tagged "Tax payment"Other change in net working capital−1515
Accounts payable−9090
2440 · debit against 1930Outgoing payments315−315
2440 · credit against 1930Incoming refunds−1010
2440 · no cash counter-rowOther change in net working capital−395395
Accrued expensesOther change in net working capital−2020
Equity150−150
2091 Retained earningsDividends paid300−300
2093 Shareholder contributionsShareholder contributions−150150
Long-term liabilities−200200
2350 · credit against 1930New loans−400400
2350 · debit against 1930Loan repayments200−200
Cash and bank— the model equals this63
The statements0
6

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.

Cash flow model2026-02-01 to 2026-02-28 · SEK 000s
Line itemAmount
300
3010 Net revenue900
4010 Raw materials and consumables−280
6990 Other external costs−150
7010 Personnel costs−170
850
1510 · credit against 1930850
−10
1510 · debit against 1930−10
−315
2440 · debit against 1930−315
10
2440 · credit against 193010
−470
1510 · no cash counter-row−900
2440 · no cash counter-row395
1630 · not tagged "Tax payment"15
2990 Accrued expenses20
Change in net working capital65
−40
1630 · tagged "Tax payment"−40
−12
8410 Financial items−12
Operating cash flow313
−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 contributions150
400
2350 · credit against 1930400
−200
2350 · debit against 1930−200
Financing cash flow50
Cash flow63

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.

P&L and balance sheetThe cash flow statementNet revenueRaw materials and consumablesOther external costsPersonnel costsAccounts receivablecredit against 1930debit against 1930no cash counter-rowAccounts payabledebit against 1930credit against 1930no cash counter-rowAccrued expensesOther receivables1630 Tax accountwhen not tagged "Tax payment"when tagged "Tax payment"Financial itemsTangible fixed assetsDepreciation and amortisation7830 Depreciation, equipment7810 Amortisation, intangiblesIntangible fixed assetsEquity2091 Retained earnings2093 Shareholder contributionsLong-term liabilitiescredit against 1930debit against 1930EBITDAIncoming paymentsOutgoing refundsOutgoing paymentsIncoming refundsOther change in net working capitalTax paymentsInterest paidInvestments in tangible assetsInvestments in intangible assetsDividends paidShareholder contributionsNew loansLoan repayments

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.