What it is
GBV is the top line of a rental business. It adds up what guests paid: rent plus guest fees such as cleaning and pet fees. It is measured before OTA commissions, payment fees, and the management fee.
Taxes and refundable deposits are usually excluded because they are not revenue for the owner or the manager.
Why operators track it
- Top line. A common way managers size their business and growth.
- Channel comparison. Needed as the denominator for channel cost.
- Reconciliation. GBV minus channel fees should match OTA payouts. Differences point to missing adjustments.
- Owner trust. Owners have complained online about seeing net-only numbers with no gross figure (Reddit).
How it is calculated
GBV = rent + guest fees (before channel commissions, payment fees, and management fees)
- Rent: after guest discounts.
- Guest fees: cleaning, pet, early check-in, and similar.
- Excluded: taxes, refundable damage deposits.
- Date basis: by stay date for monthly reporting. Booking date is used for sales views. Do not mix them.
Worked example
Example data The same made-up portfolio is used on every hospitality page: a manager with 120 homes, four of them shown in detail.
In October, the four example homes had $29,150 of rent, $4,150 of cleaning fees, and $300 of other guest fees. GBV = $33,600.
How to read it
- State the date basis. Booked in October and stayed in October are different numbers.
- Compare GBV to payouts. The gap is channel fees, refunds, and adjustments.
- Do not compare to someone else's GBV without the definition. Some include taxes.
- We do not publish a benchmark. Levels vary by market, season, and property type.
Definitional choices and common pitfalls
- Date basis. Stay date, booking date, or cash date. Mixing them is a common owner statement error (VR Goals).
- Taxes. Usually excluded. Some platforms show totals with tax.
- Damage protection and insurance fees. Decide whether they count as guest fees.
- Cancellations. Exclude cancelled stays; include any kept cancellation fees as revenue.
How different roles use it
| Role | How they use it |
|---|---|
| Finance / trust accounting | Reconciles GBV to channel payouts and deposits. |
| Revenue manager | Tracks GBV by channel and month. |
| Owner relations | Shows owners the gross figure behind their net payout. |
| Product / engineering lead | Keeps rent, fees, and taxes as separate fields. |
Questions it answers
- How much did guests spend this month, by channel?
- How much of GBV reaches the owner?
- Is growth coming from more nights, higher rates, or higher fees?
How to present it in a report
- GBV by month with rent and fees stacked.
- By channel, with channel cost beside it.
- A note on date basis and tax treatment.
| Channel | Stays | Rent | Guest fees | GBV |
|---|---|---|---|---|
| OTA A | 10 | $13,000 | $2,000 | $15,000 |
| OTA B | 5 | $8,150 | $1,100 | $9,250 |
| OTA C | 3 | $2,500 | $450 | $2,950 |
| Direct | 4 | $5,500 | $900 | $6,400 |
Taxes excluded. Before channel commissions.
Data you need
Fields
| Field | What it means | Example value |
|---|---|---|
| Rent | After discounts | $1,600 |
| Guest fees by type | Cleaning, pet, other | $250 |
| Taxes | Kept separate | $148 |
| Channel | Source of booking | Vrbo |
| Status | Confirmed, cancelled | confirmed |
What the raw data looks like
Example data A few rows as they might come out of the source system.
| Reservation | Channel | Stay month | Rent | Cleaning | Other fees | Taxes |
|---|---|---|---|---|---|---|
| R-88412 | Airbnb | 2026-10 | $1,600 | $250 | $0 | $148 |
| R-88470 | Vrbo | 2026-10 | $2,000 | $250 | $75 | $185 |
| R-88533 | Direct | 2026-10 | $450 | $100 | $0 | $42 |
Where this data usually lives
- Property management system (PMS) holds units, the calendar with block types, reservations, rates, fees, and often owner statements and trust accounting. For example: Guesty, Hostaway, OwnerRez, Track, Streamline, and Escapia. Some larger managers run their own in-house PMS.
- OTAs and booking channels (Airbnb, Vrbo, Booking.com, and partner distribution sites) hold payout reports, host fees, reviews, and cancellations. Payouts are usually net of host fees.
- Accounting software holds the general ledger, AP, and bank reconciliation.
The same field can live in more than one system. Agree with the customer which one is the source of truth.
Common data gaps and traps
- Payout files are net. OTA payouts often show only what was paid out. Rebuild gross from reservation detail.
- Fees lumped together with rent.
- Mid-stay changes (extensions, early departures) not reflected in the totals.
Related metrics
- Channel cost %: what channels take out of GBV.
- Net owner revenue: what reaches the owner.
- Direct booking share
FAQ
- Is GBV the same as revenue?
- Not for the manager. GBV includes money that goes to channels, cleaners, and owners. Manager revenue is usually the management fee plus any fees it keeps.
- Should taxes be in GBV?
- Usually not. They are collected and remitted. If you include them, label it.
- Booking date or stay date?
- Stay date for monthly performance and owner statements. Booking date for sales and pace.
For your data teamFormula variants, tables, SQL sketch, and dashboard spec
Formula details
gbv = SUM(rent) + SUM(guest_fees) -- confirmed stays, by stay night
excluded: taxes, refundable deposits
Worked example detail
| Channel | Rent | Guest fees | GBV |
|---|---|---|---|
| OTA A | $13,000 | $2,000 | $15,000 |
| OTA B | $8,150 | $1,100 | $9,250 |
| OTA C | $2,500 | $450 | $2,950 |
| Direct | $5,500 | $900 | $6,400 |
| Total | $29,150 | $4,450 | $33,600 |
Tables and fields
| Table | Fields | Notes |
|---|---|---|
reservations |
reservation_id, unit_id, channel, status, check_in, check_out | |
reservation_lines |
reservation_id, line_type, amount | line_type: rent, cleaning_fee, pet_fee, tax, deposit |
SQL sketch
SELECT r.channel,
SUM(l.amount) FILTER (WHERE l.line_type NOT IN ('tax','deposit')) AS gbv
FROM reservations r JOIN reservation_lines l USING (reservation_id)
WHERE r.status='confirmed' AND r.check_in >= '2026-10-01' AND r.check_in < '2026-11-01'
GROUP BY r.channel; -- split cross-month stays by night in production
Build spec
Copy this into a ticket. It lists the grain, inputs, logic, and edge cases.
metric: hospitality.gross_booking_value
grain: one row per reservation line, aggregated by stay month and channel
inputs:
- rent
- guest fee lines
- reservation status
- channel
logic:
- gbv = rent + guest fees
- exclude taxes and deposits
edge_cases:
- cancelled with kept fee: include fee
- cross-month stay: allocate by night
- currency: convert at a stated rate
As a dashboard card
- Stacked column of GBV by month (rent and fees), with a channel filter.
Common mistakes
- Mixing booking-date and stay-date totals.
- Using OTA payouts as GBV.
- Including taxes.