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.
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
| Column | Type | Worked out as |
|---|---|---|
| Booking Ref | text | |
| Guest | text | |
| Platform | choice (list) | |
| Check In | date | |
| Check Out | date | |
| Nights | number | IF(OR(ISBLANK([check_in]),ISBLANK([check_out])),"",[check_out]-[check_in]) |
| Guest Paid | currency | |
| Platform Fee | currency | |
| Cleaning Cost | currency | |
| Other Costs | currency | |
| Net To Me | currency | IF(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 Night | currency | IF(OR(ISBLANK([gross_paid]),ISBLANK([check_in]),ISBLANK([check_out])),"",IFERROR([net]/[nights],0)) |
| Month | text | IF(ISBLANK([check_in]),"",TEXT([check_in],"YYYY-MM")) |
| Year | number | IF(ISBLANK([check_in]),"",YEAR([check_in])) |
By Month
| Column | Type | Worked out as |
|---|---|---|
| Month Starting | date | |
| Nights Available | number | |
| Month Key | text | IF(ISBLANK([month_start]),"",TEXT([month_start],"YYYY-MM")) |
| Bookings | number | IF(ISBLANK([month_start]),"",COUNTIF([Bookings!stay_month],[month_key])) |
| Nights Booked | number | IF(ISBLANK([month_start]),"",SUMIF([Bookings!stay_month],[month_key],[Bookings!nights])) |
| Occupancy | percent | IF(ISBLANK([month_start]),"",IFERROR([nights_booked]/[nights_available],0)) |
| Guests Paid | currency | IF(ISBLANK([month_start]),"",SUMIF([Bookings!stay_month],[month_key],[Bookings!gross_paid])) |
| Platform Fees | currency | IF(ISBLANK([month_start]),"",SUMIF([Bookings!stay_month],[month_key],[Bookings!platform_fee])) |
| Cleaning | currency | IF(ISBLANK([month_start]),"",SUMIF([Bookings!stay_month],[month_key],[Bookings!cleaning_cost])) |
| Other Costs | currency | IF(ISBLANK([month_start]),"",SUMIF([Bookings!stay_month],[month_key],[Bookings!other_costs])) |
| Net Income | currency | IF(ISBLANK([month_start]),"",[gross_income]-[fees]-[cleaning]-[other]) |
| Net Per Night Let | currency | IF(ISBLANK([month_start]),"",IFERROR([net_income]/[nights_booked],0)) |
What I Really Make
| Measure | Worked out as |
|---|---|
| Bookings recorded | COUNTA([Bookings!booking_ref]) |
| Nights let | SUM([Bookings!nights]) |
| Total guests paid | SUM([Bookings!gross_paid]) |
| Platform fees paid | SUM([Bookings!platform_fee]) |
| Cleaning paid | SUM([Bookings!cleaning_cost]) |
| Other costs | SUM([Bookings!other_costs]) |
| Net after all costs | SUM([Bookings!gross_paid])-SUM([Bookings!platform_fee])-SUM([Bookings!cleaning_cost])-SUM([Bookings!other_costs]) |
| Costs as a share of income | IFERROR((SUM([Bookings!platform_fee])+SUM([Bookings!cleaning_cost])+SUM([Bookings!other_costs]))/SUM([Bookings!gross_paid]),0) |
| Average nightly rate | IFERROR(SUM([Bookings!gross_paid])/SUM([Bookings!nights]),0) |
| Average net per night let | IFERROR((SUM([Bookings!gross_paid])-SUM([Bookings!platform_fee])-SUM([Bookings!cleaning_cost])-SUM([Bookings!other_costs]))/SUM([Bookings!nights]),0) |
| Average nights per booking | IFERROR(SUM([Bookings!nights])/COUNTA([Bookings!booking_ref]),0) |
| Occupancy across the months listed | IFERROR(SUM([By Month!nights_booked])/SUM([By Month!nights_available]),0) |
| Best month for net income | MAX([By Month!net_income]) |
| Average net income per month | IFERROR(SUM([By Month!net_income])/COUNT([By Month!nights_available]),0) |
| Guests paid this year | SUMIF([Bookings!stay_year],YEAR(TODAY()),[Bookings!gross_paid]) |
| Net this year | SUMIF([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 year | SUMIF([Bookings!stay_year],YEAR(TODAY()),[Bookings!nights]) |






