Proper Spreadsheets

Templates › Business

Cash Flow Forecast

Made for small businesses worried about the next few months.

Enter your expected money in and money out by category, and see the closing bank balance for each of the next twelve months, including the worst month. The summary carries a chart that redraws itself as you type.

Of the 24 columns, you fill in 13 and the other 11 work themselves out, and all 15 figures on the summary do too. There is room for 275 rows of your own.

£4.99one payment, yours to keep

  • Opens in Excel, Google Sheets and Numbers
  • Delivered straight away
  • No macros, nothing to install
  • Change it free before you buy

Payment is handled by Stripe. Your card details go to them and never to us. Sales are final, which is why every tab, column and calculation is shown on this page first.

Already have a spreadsheet of your own? Check it for mistakes, free.

The workbook's summary and the table behind it
A row typed into the real file. Every figure that changes is the spreadsheet's own arithmetic. What the film shows, in order:
  1. A new row is typed into the Cash Items tab, one cell at a time, in the white cells a person fills in.
  2. The shaded cells in that row fill themselves in.
  3. The figures on the Forecast Summary tab change to include the new row.
  4. The chart, Monthly amounts by category, redraws with it.
The chart, drawn from the totals in the table beside it. See it full size
Where you type, and the shaded columns that work themselves out. See it full size

Everything inside, before you pay

This is the whole design: every tab, every column and how each calculated one is worked out. White cells are yours to fill in; the shaded ones work themselves out and are locked so a formula cannot be overwritten by accident. There is room for 275 rows. Open any tab to see its columns.

Starting Position

4 columns

Your bank balance today, and the level you want to be warned about. Ready for 1 rows, every one with its formulas in place.

ColumnWhat goes in it
Balance In The Bank NowType an amount in £.
Balance As AtType a date.
Low Balance Warning LevelAny month closing below this is flagged in the summary.Type an amount in £.
NotesType any text.

Cash Items

11 columns

One row per thing you expect to come in or go out. Set the amount for a single month, then say which months it runs from and to. Ready for 250 rows, every one with its formulas in place.

ColumnWhat goes in itWorked out as
ItemType any text.
In Or OutPick one: Money in or Money out.
CategoryPick one: Income, Housing, Utilities, Food and shopping, Transport, Insurance, Subscriptions, Debt repayments, Savings and tax or Other.
Amount Per MonthAlways enter a positive figure. The In Or Out column decides the direction.Type an amount in £.
First MonthLeave blank to start from the first month of the forecast.Pick one of the Month entries on Monthly Forecast.
Last MonthLeave blank if it carries on to the end of the forecast.Pick one of the Month entries on Monthly Forecast.
Start KeyUsed behind the scenes to work out which months this item lands in.Fills itself in.

Worked out from this row's Amount Per Month and First Month, using Month Key and Month on Monthly Forecast.

The formulaIF(ISBLANK([amount]), "", IFERROR(INDEX([Monthly Forecast!month_key], MATCH([start_month], [Monthly Forecast!month_label], 0)), 0))
End KeyFills itself in.

Worked out from this row's Amount Per Month and Last Month, using Month Key and Month on Monthly Forecast.

The formulaIF(ISBLANK([amount]), "", IFERROR(INDEX([Monthly Forecast!month_key], MATCH([end_month], [Monthly Forecast!month_label], 0)), 999999))
Months In ForecastFills itself in.

Worked out from this row's Amount Per Month, Start Key and End Key, using Month Key on Monthly Forecast.

The formulaIF(ISBLANK([amount]), "", COUNTIFS([Monthly Forecast!month_key], ">=" & [start_key], [Monthly Forecast!month_key], "<=" & [end_key]))
Total Over ForecastFills itself in.

The Amount Per Month times the Months In Forecast.

The formulaIF(ISBLANK([amount]), "", ROUND([amount] * [months_applied], 2))
NotesType any text.

Monthly Forecast

9 columns

One row per month. The money in, money out and closing balance are worked out from your cash items. Ready for 24 rows, every one with its formulas in place.

ColumnWhat goes in itWorked out as
Month StartingUse the first day of each month.Type a date.
MonthFills itself in.

Worked out from this row's Month Starting.

The formulaIF(ISBLANK([month_start]), "", TEXT([month_start], "MMM YYYY"))
Month KeyUsed behind the scenes to keep the months in order.Fills itself in.

Worked out from this row's Month Starting.

The formulaIF(ISBLANK([month_start]), "", YEAR([month_start]) * 12 + MONTH([month_start]))
Money InFills itself in.

Worked out from this row's Month Starting and Month Key, using Amount Per Month, In Or Out, Start Key and End Key on Cash Items.

The formulaIF(ISBLANK([month_start]), "", SUMIFS([Cash Items!amount], [Cash Items!direction], "Money in", [Cash Items!start_key], "<=" & [month_key], [Cash Items!end_key], ">=" & [month_key]))
Money OutFills itself in.

Worked out from this row's Month Starting and Month Key, using Amount Per Month, In Or Out, Start Key and End Key on Cash Items.

The formulaIF(ISBLANK([month_start]), "", SUMIFS([Cash Items!amount], [Cash Items!direction], "Money out", [Cash Items!start_key], "<=" & [month_key], [Cash Items!end_key], ">=" & [month_key]))
Net For MonthFills itself in.

Worked out from this row's Month Starting, Money In and Money Out.

The formulaIF(ISBLANK([month_start]), "", [income] - [outgoings])
Opening BalanceFills itself in.

Worked out from this row's Month Starting and Month Key, using Balance In The Bank Now on Starting Position and Net For Month and Month Key on Monthly Forecast.

The formulaIF(ISBLANK([month_start]), "", SUM([Starting Position!opening_balance]) + SUMIFS([Monthly Forecast!net], [Monthly Forecast!month_key], "<" & [month_key]))
Closing BalanceThe total row shows the lowest closing balance of the whole forecast.Fills itself in.

Worked out from this row's Month Starting and Month Key, using Balance In The Bank Now on Starting Position and Net For Month and Month Key on Monthly Forecast.

The formulaIF(ISBLANK([month_start]), "", SUM([Starting Position!opening_balance]) + SUMIFS([Monthly Forecast!net], [Monthly Forecast!month_key], "<=" & [month_key]))
NotesType any text.

Forecast Summary

15 figures

The headline answers: where the balance ends up, and which month is tightest.

FigureWorked out as
Balance in the bank now

The total of Balance In The Bank Now on Starting Position.

The formulaSUM([Starting Position!opening_balance])
Months in the forecast

The number of rows on Monthly Forecast with Month Key filled in.

The formulaCOUNT([Monthly Forecast!month_key])
Total money in over the forecast

The total of Money In on Monthly Forecast.

The formulaSUM([Monthly Forecast!income])
Total money out over the forecast

The total of Money Out on Monthly Forecast.

The formulaSUM([Monthly Forecast!outgoings])
Net change over the forecast

The total of Net For Month on Monthly Forecast.

The formulaSUM([Monthly Forecast!net])
Balance at the end of the forecast

Worked out from Closing Balance and Month Key on Monthly Forecast.

The formulaIFERROR(INDEX([Monthly Forecast!closing_balance], MATCH(MAX([Monthly Forecast!month_key]), [Monthly Forecast!month_key], 0)), 0)
Worst monthThe month with the lowest closing balance.

Worked out from Month and Closing Balance on Monthly Forecast.

The formulaIFERROR(INDEX([Monthly Forecast!month_label], MATCH(MIN([Monthly Forecast!closing_balance]), [Monthly Forecast!closing_balance], 0)), "")
Lowest closing balance

The smallest Closing Balance on Monthly Forecast.

The formulaMIN([Monthly Forecast!closing_balance])
Shortfall to cover in the worst monthHow much extra you would need so that no month goes below zero.

Worked out from Closing Balance on Monthly Forecast.

The formulaIF(MIN([Monthly Forecast!closing_balance]) < 0, ABS(MIN([Monthly Forecast!closing_balance])), 0)
Months ending below zero

The number of rows on Monthly Forecast where Closing Balance is below 0.

The formulaCOUNTIF([Monthly Forecast!closing_balance], "<0")
Months ending below your warning level

Worked out from Closing Balance on Monthly Forecast and Low Balance Warning Level on Starting Position.

The formulaCOUNTIF([Monthly Forecast!closing_balance], "<" & SUM([Starting Position!low_balance_alert]))
Average money in each month

Worked out from Money In and Month Key on Monthly Forecast.

The formulaIFERROR(SUM([Monthly Forecast!income]) / COUNT([Monthly Forecast!month_key]), 0)
Average money out each month

Worked out from Money Out and Month Key on Monthly Forecast.

The formulaIFERROR(SUM([Monthly Forecast!outgoings]) / COUNT([Monthly Forecast!month_key]), 0)
Tightest month for spendingThe month with the most money going out.

Worked out from Month and Money Out on Monthly Forecast.

The formulaIFERROR(INDEX([Monthly Forecast!month_label], MATCH(MAX([Monthly Forecast!outgoings]), [Monthly Forecast!outgoings], 0)), "")
Committed outgoings each monthAdds up every outgoing line at its monthly amount, whether or not it runs all year.

The total of Amount Per Month on Cash Items where In Or Out is “Money out”.

The formulaSUMIF([Cash Items!direction], "Money out", [Cash Items!amount])