sheetsmith

Templates › Home and property

Short Let & Holiday Rental Tracker

Made for hosts running short lets.

A booking log with monthly occupancy, income and net after platform fees and cleaning. The summary carries a chart that redraws itself as you type.

Tabs
3
Columns
26
Fill themselves in
32

£7one 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.

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.
The summary page, every figure calculated from the tables
The chart, drawn from the totals in the table beside it
What is inside: the tabs, the columns and what fills itself in
Where you type, and the shaded columns that work themselves out
The guide sheet that opens first and explains the file
Everything included in the download

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 348 rows.

Bookings

One row per stay. Fill in the guest, the dates and the money, and the rest works itself out. Room for 300 rows.

ColumnTypeWorked out as
Booking Reftext
Guesttext
Platformchoice (list)
Check Indate
Check Outdate
NightsnumberIF(OR(ISBLANK([check_in]),ISBLANK([check_out])),"",[check_out]-[check_in])
Guest Paidcurrency
Platform Feecurrency
Cleaning Costcurrency
Other Costscurrency
Net To MecurrencyIF(ISBLANK([gross_paid]),"",[gross_paid]-IF(ISBLANK([platform_fee]),0,[platform_fee])-IF(ISBLANK([cleaning_cost]),0,[cleaning_cost])-IF(ISBLANK([other_costs]),0,[other_costs]))
Net Per NightcurrencyIF(OR(ISBLANK([gross_paid]),ISBLANK([check_in]),ISBLANK([check_out])),"",IFERROR([net]/[nights],0))
MonthtextIF(ISBLANK([check_in]),"",TEXT([check_in],"YYYY-MM"))
YearnumberIF(ISBLANK([check_in]),"",YEAR([check_in]))

By Month

One row per month. Enter the month and how many nights the place was available, and the income, costs and occupancy are pulled from the bookings. Room for 48 rows.

ColumnTypeWorked out as
Month Startingdate
Nights Availablenumber
Month KeytextIF(ISBLANK([month_start]),"",TEXT([month_start],"YYYY-MM"))
BookingsnumberIF(ISBLANK([month_start]),"",COUNTIF([Bookings!stay_month],[month_key]))
Nights BookednumberIF(ISBLANK([month_start]),"",SUMIF([Bookings!stay_month],[month_key],[Bookings!nights]))
OccupancypercentIF(ISBLANK([month_start]),"",IFERROR([nights_booked]/[nights_available],0))
Guests PaidcurrencyIF(ISBLANK([month_start]),"",SUMIF([Bookings!stay_month],[month_key],[Bookings!gross_paid]))
Platform FeescurrencyIF(ISBLANK([month_start]),"",SUMIF([Bookings!stay_month],[month_key],[Bookings!platform_fee]))
CleaningcurrencyIF(ISBLANK([month_start]),"",SUMIF([Bookings!stay_month],[month_key],[Bookings!cleaning_cost]))
Other CostscurrencyIF(ISBLANK([month_start]),"",SUMIF([Bookings!stay_month],[month_key],[Bookings!other_costs]))
Net IncomecurrencyIF(ISBLANK([month_start]),"",[gross_income]-[fees]-[cleaning]-[other])
Net Per Night LetcurrencyIF(ISBLANK([month_start]),"",IFERROR([net_income]/[nights_booked],0))

What I Really Make

The headline figures, taken straight from the bookings and the monthly rows.

MeasureWorked out as
Bookings recordedCOUNTA([Bookings!booking_ref])
Nights letSUM([Bookings!nights])
Total guests paidSUM([Bookings!gross_paid])
Platform fees paidSUM([Bookings!platform_fee])
Cleaning paidSUM([Bookings!cleaning_cost])
Other costsSUM([Bookings!other_costs])
Net after all costsSUM([Bookings!gross_paid])-SUM([Bookings!platform_fee])-SUM([Bookings!cleaning_cost])-SUM([Bookings!other_costs])
Costs as a share of incomeIFERROR((SUM([Bookings!platform_fee])+SUM([Bookings!cleaning_cost])+SUM([Bookings!other_costs]))/SUM([Bookings!gross_paid]),0)
Average nightly rateIFERROR(SUM([Bookings!gross_paid])/SUM([Bookings!nights]),0)
Average net per night letIFERROR((SUM([Bookings!gross_paid])-SUM([Bookings!platform_fee])-SUM([Bookings!cleaning_cost])-SUM([Bookings!other_costs]))/SUM([Bookings!nights]),0)
Average nights per bookingIFERROR(SUM([Bookings!nights])/COUNTA([Bookings!booking_ref]),0)
Occupancy across the months listedIFERROR(SUM([By Month!nights_booked])/SUM([By Month!nights_available]),0)
Best month for net incomeMAX([By Month!net_income])
Average net income per monthIFERROR(SUM([By Month!net_income])/COUNT([By Month!nights_available]),0)
Guests paid this yearSUMIF([Bookings!stay_year],YEAR(TODAY()),[Bookings!gross_paid])
Net this yearSUMIF([Bookings!stay_year],YEAR(TODAY()),[Bookings!gross_paid])-SUMIF([Bookings!stay_year],YEAR(TODAY()),[Bookings!platform_fee])-SUMIF([Bookings!stay_year],YEAR(TODAY()),[Bookings!cleaning_cost])-SUMIF([Bookings!stay_year],YEAR(TODAY()),[Bookings!other_costs])
Nights let this yearSUMIF([Bookings!stay_year],YEAR(TODAY()),[Bookings!nights])