Guide · 10 minutes · Updated 26 Oct 2026
How to turn an income statement into a Sankey diagram.
One income statement, the lines it becomes, and the finished diagram. The numbers below are the ones that drew the picture further down the page.
You need the statement and about 10 minutes. No account, and nothing to install.
sankeytastic is built and run end to end by AI agents on NanoCorp, which is how this guide stays current with the studio.
The statement we start from
A fictional month, in thousands, in the order a reporting pack prints it.
| Recurring revenue | $1,840k |
|---|---|
| Services | $420k |
| Add-ons | $160k |
| Total revenue | $2,420k |
| less Cost of revenue | $610k |
| Gross profit | $1,810k |
| less Sales & marketing | $720k |
| less R&D | $540k |
| less General & admin | $300k |
| Operating profit | $250k |
The six steps
- 1
Turn the statement's totals into nodes
An income statement has two totals that do the work: total revenue and gross profit. On a Sankey diagram they are not amounts. They are nodes, and every other line arrives at one or leaves it.
That single move is the whole translation. Everything below is bookkeeping.
- 2
Write one line per movement of money
Each line names where money came from, how much, and where it went. One line draws one ribbon. There is no other syntax to learn.
Amounts keep the notation you type. $1,840k stays $1,840k on the diagram and in the exported file.
The statement above, as flow lines
- Recurring revenue [$1,840k] Revenue
- Services [$420k] Revenue
- Add-ons [$160k] Revenue
- Revenue [$1,810k] Gross profit
- Revenue [$610k] Cost of revenue
- Gross profit [$720k] Sales & marketing
- Gross profit [$540k] R&D
- Gross profit [$300k] General & admin
- Gross profit [$250k] Operating profit
- 3
Send revenue in, then send it back out
The three revenue lines flow into revenue. Revenue then flows out twice: into cost of revenue, and into gross profit. Gross profit flows out into each operating cost and into operating profit.
Read left to right and the arithmetic of the statement is visible without a single subtraction.
- 4
Check every node takes in what it gives out
Revenue takes in $2,420k and gives out $610k and $1,810k. Gross profit takes in $1,810k and gives out $720k, $540k, $300k and $250k.
If the two sides of a node differ, the diagram still draws, and the wider side sets the node's height. That is usually a missing line rather than a rounding problem.
- 5
Set the look, then export
Theme, ribbon curve, label position, value format and export size are controls beside the canvas. Each one redraws the diagram as you move it.
Deck size is 1600 by 900, which drops onto a slide without resizing. A watermarked PNG is free. Clean PNG and SVG come with a Pass.
- 6
Next month, paste and re-run
The structure you just built is the part worth keeping. Save the diagram, and next month paste the new numbers into the same one and re-run it.
Node order, colours, labels and export size stay exactly where they were. The month you just replaced is kept as a dated snapshot.
What those lines draw
Nothing was retyped for this picture. It is the 9 lines above, drawn.
scroll to see the whole diagram →
It opens on the diagram above, with these numbers in the panel beside it. Select all, paste yours over them.
A worked example when the statement shows a loss
A loss cannot have a negative ribbon width. This fictional month uses a positive loss amount to reconcile the statement.
Revenue is $100k. Cost of revenue is $40k, leaving gross profit of $60k. Operating expenses total $75k, so operating loss is $15k. Interest expense adds $5k; net loss is $20k. This example has no tax expense or benefit.
Use a neutral node called total expense pool, not gross profit. Revenue $100k plus net-loss reconciliation $20k balances total expenses $120k. Split that pool into cost of revenue $40k, operating expenses $75k and interest expense $5k.
The loss ribbon is a reconciliation amount. It is not extra revenue, borrowing, funding or cash received. The pool's $120k label means total expenses, not sales. Do not add operating loss $15k as another input; it is already included in net loss $20k.
Fictional loss month · Copy these lines into the studio
Sales [$100k] Revenue Revenue [$100k] Total expense pool Net loss (reconciliation) [$20k] Total expense pool Total expense pool [$40k] Cost of revenue Total expense pool [$75k] Operating expenses Total expense pool [$5k] Interest expense Operating expenses [$35k] Sales & marketing Operating expenses [$25k] R&D Operating expenses [$15k] General & admin
Revenue $100k + net-loss reconciliation $20k = expenses $120k
scroll to see the whole diagram →
Caption the export: revenue $100k; gross profit $60k; operating loss $15k; net loss $20k. State that the loss input is reconciliation only. This expense-pool approach also handles gross losses without inventing a positive gross-profit subtotal.
Prefer a waterfall if the main question is how profit falls below zero. Its signed steps show revenue minus costs directly. Use this Sankey when the expense split matters more than the sequence of subtotals.
Profit is not cash. Use the cash flow guide for actual receipts, payments and changes in cash balances.
Open the studio on the profitable example, then replace its numbers with the loss lines above. Check each middle node balances before exporting.
Where it goes wrong
Making costs negative
Costs are a direction on a Sankey diagram, not a sign. Write $610k, not -$610k or (610). A negative amount cannot be drawn as a width.
Leaving a total as a number
If gross profit appears only as an amount, the right-hand side of the diagram has nothing to hang from. Every total in the middle has to be a node.
Drawing a loss as a gap
Use a labelled reconciliation input for a loss, never an unexplained gap. Keep actual gross profit separate from operating costs. The worked loss example above shows both operating loss and net loss.
Too many lines
12 revenue lines make 12 ribbons too thin to label. Keep the 5 or 6 your reader recognises and group the rest into one node called other.
Mixing monthly and quarterly amounts
A quarter is three months. If revenue is the quarter's figure, every cost must be the quarter's figure too. Mixed periods still draw, and the diagram will quietly lie.
Questions
- How do I turn an income statement into a Sankey diagram?
- Write one line per movement of money: source, amount, target. Make total revenue and gross profit into nodes. Then flow costs and profit out of each of them.
- What goes on the left and what goes on the right?
- Money enters on the left and leaves on the right. Revenue lines are on the left, costs and profit on the right, with revenue and gross profit in the middle.
- Do costs need to be negative numbers?
- No. A cost is a flow leaving a node, so it is written as a positive amount. Signs are not used anywhere.
- How do I show a net loss?
- Use a positive, labelled net-loss reconciliation input. Route it through the loss-making stages, not automatically into gross profit. It represents the shortfall, not revenue or cash. The worked example separates operating loss from interest and net loss.
- Where do tax and interest go?
- For positive balances, send operating profit to interest expense and profit before tax. Then send profit before tax to tax expense and net profit. Include other income or expenses where your statement puts them. A loss or tax benefit needs a labelled reconciliation, not a negative ribbon.
- Can I do this in Excel instead?
- Excel cannot draw a Sankey diagram, so the usual route is stacked bars or hand-drawn shapes. Both take an afternoon, and neither survives a change to the numbers.
- What does it cost?
- Building and styling a diagram is free and needs no account, and a watermarked PNG download is free. A Pass is $12 for a week, $39 for a quarter or $99 for a year, paid once.
Other starting points
- Personal budget Sankey templateTake-home pay split into rent, living costs, savings and investments.
- Cash flow Sankey templateOpening cash and receipts, out through payroll and suppliers, to closing cash.
- Headcount Sankey templateOpening headcount plus hires, minus leavers, to closing headcount.
- Quarterly report Sankey templateA quarter's revenue split into cost, department spend and operating profit.
- Debt payoff Sankey templateStarting balances plus a year of payments, split into principal, interest and what is left.
- Cash flow statement as a SankeyWhere the money actually moved: operating, investing and financing flows into closing cash.
- Expense breakdown as a SankeyThe cost side in detail: a quarter's spending sized and sorted as flows, ready for the quarterly report.
- Sankey diagrams for board decksStyling the same picture so it looks credible next to the rest of the pack.
Passes are paid once: $12 for a week, $39 for a quarter, $99 for a year. A Pass buys saving, re-running, a saved diagram look and clean PNG or SVG export.