Every tool that reports occupancy, ADR, or RevPAR is making a series of small definitional choices — what counts as an "available" night, whether a cancelled booking counts, whether a fee belongs in "revenue." Those choices are usually invisible until two dashboards disagree on the same portfolio. Here's exactly what BNBinsights does, so you know before you compare it to anything else.

Occupancy rate

Occupancy = Confirmed booked nights ÷ Available nights

We count a night as booked only if it belongs to a confirmed reservation — cancelled bookings, inquiries that never converted, and pending holds are excluded from the numerator. We count a night as available if the unit was live and bookable that night; nights you've blocked for your own stay or for maintenance are excluded from the denominator, since the unit genuinely had no chance to earn revenue then.

This second choice is the one that most often causes a mismatch with other reports. If a tool counts every calendar night as "available" regardless of owner blocks, its occupancy percentage will be lower than ours for the identical underlying calendar — not because the bookings differ, but because the denominator does.

ADR (Average Daily Rate)

ADR = Room revenue ÷ Booked nights

We derive ADR from the actual per-reservation financials your PMS holds — the realized nightly room revenue for each booking, not the listed base price. This matters because listed prices and realized prices routinely diverge: length-of-stay discounts, weekly/monthly discounts, coupon codes, and last-minute price drops all lower what a guest actually pays below the sticker rate. A tool that estimates ADR from the base listing price rather than the realized reservation total will overstate it, sometimes significantly during discount-heavy periods like Dubai's summer low season.

We also exclude non-room revenue — cleaning fees, security deposits, and other pass-through charges — from the ADR calculation. Those are real revenue lines, but bundling them into a "nightly rate" makes ADR incomparable across bookings of different lengths and inflates it relative to what a comp-set analysis actually needs.

RevPAR (Revenue Per Available Room/Night)

RevPAR = ADR × Occupancy rate

Equivalently, RevPAR is total room revenue divided by total available nights — the same number either way you calculate it, since it's the single metric that captures both how much you charge and how often you sell. It's the metric we'd point to first if a portfolio only had room for one: an operator improving ADR while occupancy collapses, or vice versa, needs RevPAR to see the net effect. See our full RevPAR explainer for worked examples.

Revenue

Revenue in BNBinsights is the guest-paid total minus refundable damage deposits, allocated across the stay's nights on an accrual basis — so a 5-night December booking that spans two calendar months has its revenue split correctly across both months' reports, rather than landing entirely on the check-in date.

Why this still won't match every other number you see

Even with a consistent internal methodology, expect gaps against two other kinds of numbers:

Backfill and ongoing sync

When you connect a PMS, BNBinsights backfills up to 25 months of historical reservation data using these same definitions applied retroactively — so your trend view isn't a mix of old estimates and new methodology. After the initial backfill, data stays current automatically without re-syncing.

Common questions

Why doesn't my occupancy match my PMS's built-in report?
Most often it's the denominator, not the numerator. We exclude owner-blocked and maintenance nights from available nights; some PMS dashboards count every calendar night as available regardless of blocks. Either choice shifts the occupancy percentage even when the underlying bookings are identical.
Why is my ADR different in BNBinsights than in my Airbnb host dashboard?
Airbnb's dashboard sometimes reflects the listed base price before discounts, or bundles fees into a total that inflates the per-night figure. We derive ADR from realized per-reservation room revenue divided by booked nights, net of discounts and non-room fees.
What counts as an available night?
Any night the unit was live and bookable. Owner-stay and maintenance-blocked nights are excluded, since the unit couldn't have earned revenue then — a methodology choice, not the only valid one, which is why occupancy figures vary between tools.
Why do public market reports disagree with each other so much?
Different listing samples, different available-night definitions, different date windows, and different filtering for low-quality listings. Two trackers on the same city and month can post occupancy figures 20-30 points apart from methodology alone.
Why we're publishing this: operators switching from a PMS's built-in report, or comparing against a public market average, deserve to know exactly what's behind the numbers rather than assume a discrepancy means an error. These definitions are applied consistently across every view in the product — portfolio, per-unit, and monthly trend.

Related reading

See these definitions applied to your own data

BNBinsights connects to your PMS and calculates occupancy, ADR, and RevPAR consistently across your entire portfolio — automatically, with a 25-month historical backfill.

Join the waitlist