Rent Roll
Overview
The Rent Roll is a one-page snapshot of every rental unit across the client’s portfolio as of a point in time. It answers the questions a landlord asks every month: “What am I collecting right now? What am I leaving on the table? Which units are vacant?”
Rows are units. Columns show the unit, the active lease (if any), current rent, market rent, occupancy status, and lease-end date.
Report layout
Header: Client name, as-of date (defaults to today), total units, occupied count, vacant count, monthly rent collected, monthly market rent, monthly opportunity (market − collected).
Filters: Property (multi-select), Status (All / Occupied / Vacant), Expiring within (30/60/90 days).
Table columns:
| Column | Notes |
|---|---|
| Property | Property name (link). |
| Unit | Unit label (link). |
| Tenant | Tenant name on the active lease, or ”—” if vacant. |
| Current rent | Lease.baseRent on the active lease at the as-of date, normalised to monthly (bi-weekly × 26/12, semi-monthly × 2, weekly × 52/12). |
| Market rent | Unit.marketRent. |
| Opportunity | market − current (positive = under-market; negative = over-market). |
| Lease end | Lease.endDate, or “Month-to-month” when blank. |
| Days to end | Computed from as-of date; colour-coded (red ≤ 30, amber ≤ 60). |
| Status | Occupied / Vacant / Off-market / Owner-occupied. |
How it’s computed
The report driver walks every Unit under each Property in scope, then joins the active Lease (status active or pending, startDate <= asOf and (endDate null or >= asOf)).
- Units with no active lease appear as Vacant — their
Unit.statusis used when it’s something more specific than Vacant (Off-market, Owner-occupied). - Market rent comes from
Unit.marketRent. If unset, the opportunity column shows ”—” rather than a misleading zero. - Current rent normalisation always converts to a monthly equivalent so totals add up. The row still shows the native frequency in a tooltip.
- Expiring soon does not count month-to-month leases (no
endDate). Those are considered indefinite.
Export
Exports the currently-filtered rows to CSV with the same columns. The header row includes the as-of date and the filter state so the file is self-describing when emailed to the client.