How I Ran My Storage Lot Off a Spreadsheet (and Why I Stopped)
Who owes me rent, and which space are they in? I store RVs, boats and campers on my own place south of Grand Forks. For years, a spreadsheet and notebook held the operation. This is how that broke, and what I built afterward.
The Spreadsheet Era
I had a spreadsheet row for each client, a notebook out in the shop, and memory covering the gaps. There were 60-some clients to keep straight.
My spreadsheet and notebook handled most of the recordkeeping. Then mistakes cost me real money, sometimes discovered months afterward.
Where It Broke
1. Who owed me money?
That was the question that exposed the whole mess. I had to compare the sheet with my checkbook and notebook. That reconciliation became a project I managed monthly at best. Delays left somebody occupying unpaid storage.
2. A payment here, a space there
I'd enter a check in one record and miss the other. A camper moved from the gravel row into the building for winter, but the sheet stayed put.
Twice, my paperwork assigned two clients to the same bay. The physical lot and my written records disagreed.
3. The calendar had opinions
Three months paid on January 31st should take that example to April 30th. My sheet gave May 1st one year and April 28th another. It depended on who typed the date.
Those small calendar mistakes accumulated, each requiring an awkward phone call.
4. The winter back corner
The big rigs went into the back of the building for the winter. If a customer stopped paying in December, I couldn't get their rig out before spring.
I needed to see who was buried where, and whether those back rows were paid through April. A spreadsheet didn't know what I meant by the back.
What I Actually Needed
I finally wrote down the jobs the replacement had to handle:
- A property diagram showing each occupied position, its customer and the rent-covered date.
- Customer phone numbers alongside overdue accounts and those approaching their payment deadline.
- Consistent month-end calculations instead of whichever date someone had typed.
- A placement history whenever a customer changed spaces.
- Exported records for my accountant when tax preparation came around.
My list didn't include nightly reservations, gates, dynamic pricing or a mobile app. My seasonal and monthly storage work needed an answer about rent.
So I Built the Map
I earn my living building websites and software, so I made my own fix. I drew the whole property to scale on a single screen.
Each rig or unit became a rectangle, coloured from the client's paid-until date. Green meant paid; amber warned of a date within three weeks. Red meant overdue, and blue meant I'd left the date unset.
My morning routine changed from an hour spent cross-checking to a ten-second glance. A green map told me everyone was paid. Opening a red rectangle brought up that customer's record, including their contact number.
Each spreadsheet problem got a particular correction. Dragging a rig elsewhere preserved the placement history. The old placement closed with a date instead of disappearing.
The "+1 month" button handled the calendar, including January 31st. The overdue call list filled itself from those records.
Online payments were checked with Stripe on the server. A payment either matched one client or waited in a review queue for me. I didn't want the software guessing about somebody's money.
It Runs My Lot Today
The map has run my own lot for a while, with real clients and their actual paid-until dates. Eventually I prepared it for sale, including a fictional demonstration property.
It's BayRoster, for RV and boat lots, small self-storage operations and boat slips. Its separate public site is bayroster.com.
PineRoster is the separate product for seasonal campgrounds. That isn't the business I run at my storage lot.
What Those Records Mean
The colours rely on the dates entered. A paid date doesn't prove a rig has arrived. A paid booking still needs arrival, placement and regular-account checks.
Cash and check payments can remain manually recorded, with the owner specifying the period covered. Calendar buttons handle month ends; they can't decide what a payment was for.
Online card payments begin disabled and require Stripe setup. Direct date extensions need an eligible paid-through account and one clear customer match. The amount must cover whole months at that account's rate. Verified payments needing a decision go to owner review.
Ledger accounts record charges and payments separately. BayRoster has no scheduled autopay; the renter chooses to pay. Saving a card doesn't authorize a charging schedule.
Call lists and CSV exports help with office jobs. An exported CSV isn't a complete backup of the system.
The Price and the Public Example
The website, hosting and software together cost $60 monthly for one property. Setup gets its own quote. Stripe fees and other outside costs remain separate.
I chose flat pricing so a 40-space lot wouldn't pay more software fees whenever another space filled. That's the pricing choice I made for this product.
The public demo has fake customers and a published password. The demonstration's shared records reset. Explore the layout without entering real renter information; it isn't a private account or a live payment test.
If You're Staying on the Spreadsheet
No hard feelings. My sheet lasted years. Looking back, three habits would have saved me real money:
- Record the paid-until date. A March payment tells me less than the date when that client's covered time ends.
- Compare spaces monthly. I'd walk the lot with my list, rather than leave that check for a yearly cleanup.
- Set one month-end rule. Writing it down would have stopped the same client getting two different answers.
If a manageable spreadsheet handles your work, keep it. I replaced mine because the recordkeeping gaps were costing me.
Run a Lot? Kick the Tires on Mine
Examine a fictional rig's spot and paid date. Compare that view with the records you need for your own property.