Cash flow statement
The cash flow statement explains why your bank balance and your profit disagree. It reconciles the cash you held at the start of a period to the cash you held at the end, and shows what every movement in between was for.
If you hold money on behalf of other people - a marketplace collecting for sellers, a payroll product holding a payrun, a savings app holding deposits - the two numbers never agree, and the gap is not an error. Collect $1,000 on a booking and keep $150 of it: your profit and loss says you earned $150, your bank says $1,000 arrived. Both are right. This report is where the other $850 shows up.
What it answers
The statement runs top to bottom as one document: opening cash, then every movement grouped into three activities, then the net change, then closing cash. The last line is the balance you can actually spend.
- Operating - money moving because the business is doing what it does. Collecting from customers, paying suppliers, settling what you owe onward.
- Investing - money spent on or returned from things you own for the long term, like equipment.
- Financing - money from or to whoever funds you. An investment round, a loan drawn down, a loan repaid.
Ledfra uses the direct method: it lists the cash movements that actually happened. The alternative, the indirect method, starts from net profit and works backwards through adjustments until it arrives at cash. Both are permitted, and the indirect method is more common in published accounts because most systems cannot see individual movements. Ledfra can see every one, so it shows you them.
Reading the report
A marketplace month, as the statement renders it. The platform collects from buyers, holds the sellers’ share until payout, and keeps a commission.
| Account | Amount |
|---|---|
| Opening cash | $412,900 |
| Operating activities | |
| Seller payables | $150,000 |
| Commission income | $186,000 |
| Payment processing fees | −$38,600 |
| Salaries | −$120,000 |
| Marketing | −$24,000 |
| Net cash from operating activities | $153,400 |
| Investing activities | |
| Equipment | −$18,000 |
| Net cash used in investing activities | −$18,000 |
| Financing activities | |
| Term loan | −$25,000 |
| Net cash used in financing activities | −$25,000 |
| Net change in cash | $110,400 |
| Closing cash | $523,300 |
The bank balance grew by $110,400 this month. The profit and loss for the same month reports a profit of $3,400: commission of $186,000 less $38,600 of processing fees, $120,000 of salaries and $24,000 of marketing. Nothing else on this statement is income or expense.
Those two numbers are thirty times apart, and both are correct. The statement above accounts for every dollar between them:
- +$150,000 of seller money. The platform collected $1,240,000 for sellers and paid out $1,090,000, so it is sitting on $150,000 more of other people’s money than it was a month ago. That is cash in the bank and a liability on the balance sheet, never revenue. It is also the single most common way a platform mistakes itself for profitable.
- −$18,000 on equipment. Cash left the building, but buying an asset is not an expense, so the P&L never sees it.
- −$25,000 repaying a loan. Repaying principal reduces what you owe. It is not a cost of doing business, so it does not touch profit either.
$3,400 of profit, plus $150,000 held for sellers, less $18,000 of equipment and $25,000 of loan repayment, is $110,400. That is the whole reconciliation, and it is the question this report exists to answer: we earned this much and the bank moved by that much, so where is the difference?
Cash is attributed to what it moved against
Every line on this report names a counterparty account, never a bank account. That is deliberate: your bank is where the money is, and the question the report answers is what it was for.
One $1,000 booking, paid by card, splits across two lines. $850 lands against the payable you owe the seller and $150 against your commission income, because that is what the money was collected for. A report that simply said “Stripe +$1,000” would tell you nothing you did not already know from your bank.
When a movement touches several accounts at once, the cash is split across them in proportion to their amounts, to the cent. Nothing is rounded away and nothing is invented.
Tell Ledfra which accounts hold cash
Ledfra cannot guess this. An account called “Stripe” holds real money, and one called “Receivables” holds a promise of money, and only you know which is which in your chart of accounts.
Open an account in the chart of accounts editor and turn on Holds cash. It is available on asset accounts only, because cash is money you have. Mark your bank accounts and your payment processor balances. Do not mark receivables, and never mark an escrow or payable account - that is money you are holding for someone else, and it belongs on the other side of the report.
Classifying a branch of your chart
Ledfra classifies most of your chart on its own. Income and expenses are operating, equity is financing, and that is right for the great majority of accounts. You do not have to take that on trust: the chart of accounts editor shows the activity on each of the five top-level categories, and on any category you have classified yourself. Anything without a label inherits from the nearest one above it.
Two cases it cannot work out from structure alone. A loan sits under Liabilities next to your ordinary payables and looks identical, but repaying it is financing, not operating. Equipment sits under Assets next to your receivables, but buying it is investing. Both are things only you know.
Set Cash flow activity on the category, not on each account. Everything below it inherits, including accounts you add later, and a category further down can override it. Marking a “Debt” category as Financing once is enough - every loan you file under it afterwards is classified correctly the day it is created.
It reconciles, and says so
At the top of the report, two figures sit side by side: the movements added up, and the change in your cash balances. They are worked out independently - one from the movements, one from the balances at each end - so when they agree, that agreement means something.
When they disagree the report says so plainly rather than quietly showing you a number. That is the same posture as the trial balance, which proves debits equal credits rather than asking you to take it on faith.
- It reports history, not a forecast. This is a statement of a period that has already happened. Ledfra does not project cash forward and has no runway or planning features.
- Direct method only. If your accountant needs the indirect presentation for a filing, they will need to prepare it from these figures.
- It depends on the flags you set. The report is only as right as your cash accounts and category classifications. Nothing else in Ledfra depends on them, so a mistake here is invisible until you read this page.
- It is available in the app, not the API. The public REST API covers ledgers, accounts, account balances, and transactions. There is no cash flow endpoint yet.
- One ledger, one currency. There is no consolidation across ledgers, and a ledger holds a single currency, so the statement is single-currency too.
Where to go next
- Profit & loss - what you earned in the period, which this report exists to reconcile against.
- Balance sheet - where you stand at one instant. Its cash figure is the closing line here.
- Chart of accounts - how to structure the accounts this report reads, including why held money is a liability.
- What is Ledfra? - how the ledger underneath all of these works.