Forecast Cash Runway in Excel or Google Sheets
Build a monthly cash runway forecast with scenario controls, error checks, and a cash-balance chart in Excel or Google Sheets.
A cash runway forecast rolls opening cash through each month’s expected cash receipts and payments. It then identifies the first month with a negative ending balance. This guide explains how to build an Excel or Google Sheets model with recurring costs, planned hiring, a one-time expense, three scenarios, and a cash-balance chart.
The example covers January through June 2026 in USD. Its values are illustrative, not actual company data. Replace them with verified inputs before using the forecast for cash planning.
In this guide, runway means the number of complete forecast months before ending cash first falls below zero. The model identifies a month, not the exact date cash is depleted.
What You'll Need
- Microsoft Excel with
LET,FILTER, andMINIFSsupport, or Google Sheets - A workbook with blank sheets named
InputsandRunway - Verified starting cash and monthly cash-flow assumptions
- Dates entered as first-of-month spreadsheet dates without time values
- Comma formula separators; replace commas with semicolons if required by your locale
Step-by-Step Guide
Define the runway calculation
Use cash that’s available to fund operations. Confirm the amount against your latest bank reconciliation, and exclude restricted funds that can’t pay ordinary expenses.
The model uses these definitions:
- Starting cash: Available cash at the beginning of the first month
- Cash receipts: Cash expected to arrive during the month, regardless of when revenue was recognized
- Outflows: Recurring costs, planned hiring, and a one-time expense
- Net cash flow: Cash receipts minus total outflows
- Monthly burn: The greater of zero or negative net cash flow
- Ending cash: Starting cash plus net cash flow
- Runway: Complete forecast months before the first negative ending balance
The model reports an ending balance of exactly zero separately from a negative balance.
Build the Inputs sheet
Start by entering this control table in Inputs!A1:B8:
| Cell | Entry |
|---|---|
| A1 | Input |
| B1 | Value |
| A2 | Starting cash |
| B2 | 120000 |
| A3 | Forecast start |
| B3 | 2026-01-01 |
| A4 | Forecast months |
| B4 | 6 |
| A5 | Selected scenario |
| B5 | Base |
| A6 | Hire start |
| B6 | 2026-04-01 |
| A7 | One-time expense |
| B7 | 15000 |
| A8 | One-time expense month |
| B8 | 2026-02-01 |
Format B2 and B7 as USD, B3, B6, and B8 as dates, and B4 as an integer.
Next, enter the scenario table in Inputs!D1:G4:
| Scenario | Monthly cash receipts | Recurring costs | New-hire monthly cost |
|---|---|---|---|
| Base | 30000 | 50000 | 10000 |
| Optimistic | 36000 | 48000 | 8000 |
| Conservative | 24000 | 55000 | 12000 |
Inputs!B2 is a point-in-time balance, while Inputs!B7 is a single expense. Values in Inputs!E2:G4 are nonnegative monthly cash flows.
Apply these data-validation rules:
B2,B7, andE2:G4: number greater than or equal to zeroB3,B6, andB8: valid first-of-month dates without time valuesB4: whole number between1and60B5: list containingBase,Optimistic, andConservative
For custom date validation, use this formula for B3:
=AND(ISNUMBER(B3),B3=INT(B3),DAY(B3)=1)
Change the reference to B6 or B8 for the other date cells. The cell=INT(cell) check rejects values containing a time, such as 2026-04-01 12:00.
Validation may not stop invalid pasted or imported values. For that reason, the schedule formulas return #N/A or Check inputs when required inputs are malformed.
Create a horizon-driven monthly schedule
Add these headers to Runway!A1:K1:
| Cell | Header |
|---|---|
| A1 | Month |
| B1 | Starting Cash |
| C1 | Cash Receipts |
| D1 | Recurring Costs |
| E1 | Planned Hiring |
| F1 | One-Time Expense |
| G1 | Total Outflows |
| H1 | Net Cash Flow |
| I1 | Ending Cash |
| J1 | Status |
| K1 | Monthly Burn |
In A2, enter the following formula and fill it through A61:
=LET(d,Inputs!$B$3,h,Inputs!$B$4,p,ROW()-1,hOK,IFERROR(AND(ISNUMBER(h),h=INT(h),h>=1,h<=60),FALSE),dOK,IFERROR(AND(ISNUMBER(d),d=INT(d),DAY(d)=1),FALSE),IF(NOT(hOK),IF(p=1,NA(),""),IF(p>h,"",IF(dOK,EDATE(d,p-1),NA()))))
Inputs!B4 controls how many rows become active. With the sample six-month horizon, A2:A7 should contain:
2026-01-01
2026-02-01
2026-03-01
2026-04-01
2026-05-01
2026-06-01
Cells A8:A61 appear empty, but they aren’t blank. Each contains a formula returning "". This distinction matters when you build the chart in Step 8.
Now enter this formula in B2 and fill it through B61:
=IF(IFERROR(A2="",FALSE),"",IF(ROW()=2,IF(AND(ISNUMBER(Inputs!$B$2),Inputs!$B$2>=0),Inputs!$B$2,NA()),IF(ISNUMBER(I1),I1,NA())))
The first row reads starting cash from Inputs!B2. Each later active row uses the preceding month’s ending cash.
Under the Base scenario, the six active starting balances should be:
120000, 100000, 65000, 45000, 15000, -15000
Zero starting cash is valid. A blank, text, or negative opening cash value returns #N/A.
Add monthly cash receipts and recurring costs
In C2, enter this cash-receipts formula and fill it through C61:
=IF(IFERROR(A2="",FALSE),"",LET(n,COUNTIF(Inputs!$D$2:$D$4,Inputs!$B$5),IF(n<>1,NA(),LET(matchRow,MATCH(Inputs!$B$5,Inputs!$D$2:$D$4,0),sourceValue,INDEX(Inputs!$E$2:$E$4,matchRow),sourceBlank,ISBLANK(INDEX(Inputs!$E$2:$E$4,matchRow)),IF(IFERROR(AND(ISNUMBER(A2),NOT(sourceBlank),ISNUMBER(sourceValue),sourceValue>=0),FALSE),sourceValue,NA())))))
The Base scenario returns 30000 in each active month.
Then enter this recurring-cost formula in D2 and fill it through D61:
=IF(IFERROR(A2="",FALSE),"",LET(n,COUNTIF(Inputs!$D$2:$D$4,Inputs!$B$5),IF(n<>1,NA(),LET(matchRow,MATCH(Inputs!$B$5,Inputs!$D$2:$D$4,0),sourceValue,INDEX(Inputs!$F$2:$F$4,matchRow),sourceBlank,ISBLANK(INDEX(Inputs!$F$2:$F$4,matchRow)),IF(IFERROR(AND(ISNUMBER(A2),NOT(sourceBlank),ISNUMBER(sourceValue),sourceValue>=0),FALSE),sourceValue,NA())))))
The Base scenario returns 50000 in each active month.
Both formulas require exactly one matching scenario. A missing or duplicated scenario, blank assumption, text amount, or negative amount returns #N/A. Numeric zero remains valid, and scenario matching is case-insensitive.
Add planned hiring and the one-time expense
Add this formula to E2, then fill it through E61:
=IF(IFERROR(A2="",FALSE),"",LET(n,COUNTIF(Inputs!$D$2:$D$4,Inputs!$B$5),d,Inputs!$B$6,dateOK,IFERROR(AND(ISNUMBER(d),d=INT(d),DAY(d)=1),FALSE),IF(n<>1,NA(),LET(matchRow,MATCH(Inputs!$B$5,Inputs!$D$2:$D$4,0),sourceValue,INDEX(Inputs!$G$2:$G$4,matchRow),sourceBlank,ISBLANK(INDEX(Inputs!$G$2:$G$4,matchRow)),IF(IFERROR(AND(ISNUMBER(A2),dateOK,NOT(sourceBlank),ISNUMBER(sourceValue),sourceValue>=0),FALSE),IF(A2>=d,sourceValue,0),NA())))))
With a hire start of 2026-04-01, Base planned-hiring costs should be:
0, 0, 0, 10000, 10000, 10000
The cost starts in April. A blank, text, mid-month, or time-bearing hire date returns #N/A.
For the one-time expense, enter this formula in F2 and fill it through F61:
=IF(IFERROR(A2="",FALSE),"",LET(d,Inputs!$B$8,dateOK,IFERROR(AND(ISNUMBER(d),d=INT(d),DAY(d)=1),FALSE),IF(IFERROR(AND(ISNUMBER(A2),ISNUMBER(Inputs!$B$7),Inputs!$B$7>=0,dateOK),FALSE),IF(A2=d,Inputs!$B$7,0),NA())))
The six active results should be:
0, 15000, 0, 0, 0, 0
A valid first-of-month date outside the active horizon produces zeros. A blank, text, mid-month, or time-bearing date produces #N/A. A blank, text, or negative expense amount does the same.
Calculate burn and ending cash
Enter the following formulas in row 2, then fill them through row 61.
In G2, calculate total outflows:
=IF(IFERROR(A2="",FALSE),"",IF(COUNT(D2:F2)=3,SUM(D2:F2),NA()))
In H2, calculate net cash flow:
=IF(IFERROR(A2="",FALSE),"",IF(AND(ISNUMBER(C2),ISNUMBER(G2)),C2-G2,NA()))
In I2, calculate ending cash:
=IF(IFERROR(A2="",FALSE),"",IF(AND(ISNUMBER(B2),ISNUMBER(H2)),B2+H2,NA()))
In J2, classify the ending balance:
=IF(IFERROR(A2="",FALSE),"",IF(ISNUMBER(I2),IF(I2<0,"Cash negative",IF(I2=0,"Zero cash","Positive")),"Check inputs"))
In K2, calculate monthly net burn:
=IF(IFERROR(A2="",FALSE),"",IF(ISNUMBER(H2),MAX(0,-H2),NA()))
For Base January:
Ending cash = 120000 + 30000 - 50000 - 0 - 0 = 100000
Expected January results:
- Total outflows:
50000 - Net cash flow:
-20000 - Ending cash:
100000 - Status:
Positive - Monthly burn:
20000
For February:
Ending cash = 100000 + 30000 - 50000 - 0 - 15000 = 65000
Together, these calculations check an ordinary month and a month containing the one-time expense.
Find the first cash-negative month
Create this summary in Runway!M1:N3:
| Cell | Entry |
|---|---|
| M1 | Summary |
| N1 | Value |
| M2 | First negative month |
| M3 | Full months before negative |
In N2, enter this horizon-driven formula:
=LET(h,Inputs!$B$4,hOK,IFERROR(AND(ISNUMBER(h),h=INT(h),h>=1,h<=60),FALSE),IF(NOT(hOK),"Check inputs",IFERROR(LET(cash,I2:INDEX(I:I,h+1),months,A2:INDEX(A:A,h+1),IF(COUNT(cash)<>h,"Check inputs",IF(COUNTIF(cash,"<0")=0,"Beyond forecast",MINIFS(months,cash,"<0")))),"Check inputs")))
In N3, enter:
=IFERROR(IF(N2="Beyond forecast","At least "&Inputs!$B$4,IF(AND(ISNUMBER(N2),ISNUMBER(Inputs!$B$3)),DATEDIF(Inputs!$B$3,N2,"M"),"Check inputs")),"Check inputs")
These formulas derive their ranges and wording from Inputs!B4; they don’t contain a fixed six-month count.
The Base ending-cash series should be:
100000, 65000, 45000, 15000, -15000, -45000
Expected summary:
First negative month: 2026-05-01
Full months before negative: 4
Cash remains nonnegative through April, then becomes negative during May. This result doesn’t identify the exact depletion date.
As a control, Base cash receipts total 180000, total outflows equal 345000, and June ending cash reconciles to:
120000 + 180000 - 345000 = -45000
Create a filtered chart range
Don’t chart A2:A61 and I2:I61 directly. Inactive cells in those ranges contain formulas returning "", which Excel can plot as trailing zeros.
Instead, create a helper range containing only active months. Add these headers:
| Cell | Entry |
|---|---|
| P1 | Month |
| Q1 | Ending Cash |
Before entering the formulas below, leave P3:Q61 empty. Each formula spills its results down automatically.
In P2, enter:
=FILTER(A2:A61,ISNUMBER(A2:A61))
In Q2, enter:
=FILTER(I2:I61,ISNUMBER(A2:A61))
With the six-month Base forecast, P2:Q7 should contain:
| Month | Ending Cash |
|---|---|
| 2026-01-01 | 100000 |
| 2026-02-01 | 65000 |
| 2026-03-01 | 45000 |
| 2026-04-01 | 15000 |
| 2026-05-01 | -15000 |
| 2026-06-01 | -45000 |
Cells below the spilled results are genuinely empty, rather than formulas returning empty text.
Create a line chart from Runway!P1:Q61:
- Horizontal axis:
Month - Series:
Ending Cash - Chart title:
Projected Ending Cash - Vertical-axis label:
USD
In Excel, set empty cells to display as gaps through Select Data > Hidden and Empty Cells > Gaps. Because the filtered helper leaves unused cells empty, the chart won’t add trailing zero points when the horizon is shorter than 60 months.
The line should cross below zero in May, matching Runway!N2. If the chart and summary disagree, inspect the formulas in P2:Q2, confirm that P3:Q61 doesn’t contain other values or formulas, and verify that the chart uses columns P:Q.
For an actual-versus-forecast view of burn, see the startup burn rate dashboard guide.
Compare the three scenarios
To compare scenarios, change only Inputs!B5. The active forecast and filtered chart range should recalculate from the corresponding scenario row.
Base
Expected ending cash:
100000, 65000, 45000, 15000, -15000, -45000
Expected summary:
First negative month: 2026-05-01
Full months before negative: 4
Optimistic
Set Inputs!B5 to Optimistic.
Expected ending cash:
108000, 81000, 69000, 49000, 29000, 9000
Expected summary:
First negative month: Beyond forecast
Full months before negative: At least 6
A positive June balance supports only “at least six months.” It doesn’t prove a longer runway unless you increase Inputs!B4 and provide assumptions for the added months.
Conservative
Set Inputs!B5 to Conservative.
Expected ending cash:
89000, 43000, 12000, -31000, -74000, -117000
Expected summary:
First negative month: 2026-04-01
Full months before negative: 3
These scenarios change cash receipts, recurring costs, and new-hire costs together. They’re planning assumptions, not probability-weighted predictions.
Check boundaries and formula failures
Run these checks in a copy of the workbook. If you use both applications, repeat them in Excel and Google Sheets. The results shown are expected from the formulas, not claims that the tests were executed.
| Check | Change | Expected result |
|---|---|---|
| Base arithmetic | Use the original inputs | January ending cash is 100000; February is 65000 |
| Base timeline | Keep Inputs!B5 as Base | Ending cash is 100000, 65000, 45000, 15000, -15000, -45000; N2 is 2026-05-01; N3 is 4 |
| Optimistic scenario | Set B5 to Optimistic | Ending cash is 108000, 81000, 69000, 49000, 29000, 9000; summary says Beyond forecast and At least 6 |
| Conservative scenario | Set B5 to Conservative | Ending cash is 89000, 43000, 12000, -31000, -74000, -117000; N2 is 2026-04-01; N3 is 3 |
| Horizon control | Change Inputs!B4 to a valid integer from 1 through 60 | The active schedule, summary ranges, runway wording, filtered helper range, and plotted periods change with the horizon |
| Chart boundary | Keep the six-month horizon and chart P1:Q61 | Only the six active Base balances are plotted; no trailing zero points appear |
| Zero starting cash | Set Inputs!B2 to 0 under Base | January ending cash is -20000; status is Cash negative; N2 is 2026-01-01; N3 is 0 |
| Exact-zero ending cash | Set Inputs!B2 to 20000; keep the expense in February | January ending cash is 0; status is Zero cash |
| Blank starting cash | Clear Inputs!B2 | Affected formulas return #N/A; status and summary say Check inputs |
| Blank scenario assumption | Clear Base cash receipts in E2, then repeat with F2 or G2 | The corresponding scenario formula returns #N/A; blank isn’t treated as zero |
| Malformed amount | Replace Base cash receipts with 30000 USD | Affected formulas return #N/A; status and summary say Check inputs |
| Negative amount | Enter a negative starting balance, expense, or scenario assumption | The related formula returns #N/A |
| Unknown scenario | Paste Downside into Inputs!B5 | Columns C:E return #N/A; the summary says Check inputs |
| Duplicate scenario | Replace another label in D2:D4 with Base | Scenario formulas reject the duplicate and return #N/A |
| Hiring boundary | Keep hire start at 2026-04-01 | Planned hiring is 0 in March and 10000 in April |
| Expense boundary | Keep expense month at 2026-02-01 | The expense appears only in February |
| Mid-month date | Enter 2026-04-15 for hiring or the expense | The related formula returns #N/A |
| Time-bearing date | Enter 2026-04-01 12:00 for hiring or the expense | The related formula returns #N/A |
| Blank or text date | Clear a required date or enter Not a date | The related formula returns #N/A, not a silent zero |
| Expense outside forecast | Set Inputs!B8 to 2026-07-01 with a six-month horizon | F2:F7 contains six zeros |
| Zero cash receipts or costs | Enter numeric 0 in a scenario assumption | Zero is accepted as a valid assumption |
| Opening-balance scope | Inspect B2:B61 | Only B2 reads Inputs!B2; later active rows roll forward prior ending cash |
This model has no transaction ledger, so duplicate transactions, transfers, and payment matching fall outside its scope.
Review the completed forecast for:
- Missing payroll taxes, contractors, rent, software, insurance, debt payments, and other material cash expenses
- Revenue entered when invoiced instead of cash receipts entered when collection is expected
- Text dates, mid-month dates, or hidden time values
- Formula cells overwritten with hard-coded amounts
- Scenario labels that don’t match the scenario table
- Values or formulas blocking the spilled helper ranges in
P:Q - A chart that uses
A:Iinstead of the filtered helper range inP:Q
If you need linked income statement, balance sheet, and cash flow schedules, use a startup three-statement model instead of turning this runway schedule into a full accounting model.
Use ModelMonkey to inspect or adjust the forecast
ModelMonkey can use workbook context in Google Sheets and Microsoft Excel to help inspect ranges, work with formulas, analyze the forecast, and create or adjust a chart. If the workflow presents a preview, review the proposed changes before proceeding.
To check this runway model, open ModelMonkey in the workbook and submit:
Inspect Inputs!A1:G8 and Runway!A1:Q61.
The forecast horizon is controlled by Inputs!B4 and may contain 1 to 60 active monthly rows. Check active rows for formula errors, blank scenario assumptions, malformed amounts, and invalid dates, including dates with time values.
Confirm the first active month where Ending Cash in column I is below zero. Compare it with Runway!N2:N3.
Check that P2 and Q2 use FILTER formulas to return only active Month and Ending Cash values. Create or adjust a line chart from the filtered helper range in P:Q. Do not chart the fixed A2:A61 and I2:I61 ranges directly because inactive cells contain formulas returning empty text.
Do not replace missing or invalid inputs with zero. Show any proposed formulas or changes for review.
Compare its formulas, analysis, and chart with the expected Base, Optimistic, and Conservative values in this guide. ModelMonkey can assist with spreadsheet work, but it doesn’t guarantee that every formula or conclusion is correct.
Update and interpret the forecast
Update the model on your regular planning cadence and whenever a material cash assumption changes.
For each update:
- Replace starting cash with the reconciled opening balance for the new forecast period.
- Update monthly cash receipts based on expected collection timing.
- Review recurring costs for new, canceled, or repriced commitments.
- Update the hiring date and monthly cash cost.
- Enter the amount and month of the modeled one-time expense.
- Increase
Inputs!B4if the result saysBeyond forecastand you need a longer view. - Repeat the scenario and boundary checks.
- Confirm that the chart, first-negative-month summary, and cash schedule agree.
Treat the first negative month as a planning signal. A monthly forecast shows which period needs attention, but it can’t tell you whether depletion occurs early or late within that month.
Wrapping Up
The workbook calculates monthly net cash flow, burn, ending cash, and the first cash-negative period across three scenarios. With the illustrative Base inputs, cash first becomes negative in May 2026 after four complete forecast months.
Replace every assumption with verified company data before relying on the result. Increase the horizon before drawing conclusions beyond the modeled periods, and compare any ModelMonkey-assisted changes with the control values above.
Frequently Asked Questions
What is the basic cash runway formula?
For constant monthly burn, a common estimate is:
Cash runway = Available cash ÷ Monthly net burn
That shortcut is less useful when receipts, hiring, or one-time expenses change by month. This model calculates each month separately.
What if monthly net cash flow is positive?
Column K reports monthly burn as zero:
=MAX(0,-NetCashFlow)
Positive net cash flow increases ending cash. It doesn’t produce a finite runway unless a later forecast period becomes negative.
Does zero cash mean the business is cash-negative?
No. The model labels an ending balance of exactly zero as Zero cash. The first negative month requires ending cash below zero.
A projected zero balance still provides no buffer for payment timing differences or forecast error.
How do I change the forecast horizon?
Set Inputs!B4 to an integer from 1 through 60. The month rows, summary ranges, runway wording, and filtered chart helper adjust automatically.
To support more than 60 months:
- Fill the formulas in
A61:K61down to the new capacity. - Change
h<=60in the columnAformula andRunway!N2to the new maximum. - Raise the upper limit in
Inputs!B4data validation. - Extend the ranges referenced by the
FILTERformulas inP2andQ2. - Extend the chart source range in columns
P:Q.
Runway!N3 already builds its “At least” result from Inputs!B4, so its wording doesn’t require a manual change.
Why use expected cash receipts instead of recognized revenue?
Runway measures available cash. A sale recognized or invoiced in one month may be collected later, so recognized revenue can overstate near-term inflows. Enter cash in the month it’s expected to arrive unless you build a separate receivables schedule.
Can this forecast identify the exact date cash runs out?
No. The model uses monthly inflows and outflows, so it identifies the first month with negative ending cash. Estimating an exact date requires daily cash timing and verified payment schedules.