Skip to main content

How Amenitiz calculates revenue and performance metrics

Learn how Amenitiz calculates revenue, occupancy, ADR, RevPAR, guests and other performance metrics across Reports, Dashboard and Performance page, including detailed formulas, allocation logic and special cases such as overbookings and mother cottages.

R
Written by Raquel Muzquiz
Updated over a week ago

Overview

This article explains how key revenue and performance metrics are calculated in Amenitiz.

It applies to the following areas:

  • General Report

  • Revenue Report

  • Pick Up Report

  • Occupancy Report

  • Annual Comparative Report

  • Dashboard

  • Performance page

All these reports use aligned definitions and consistent calculation logic.

If you need to understand how figures such as occupancy rate, ADR, RevPAR, revenue (gross and net), or guests are calculated, this article provides the official definitions.


Room and availability concepts

Booked rooms (Rooms sold)

Definition:Total number of booked rooms for a given night. A room is considered booked for each night between its:

  • Arrival date

  • Departure date

Only bookings in confirmed or modified status are included. If more than one booking exists for the same room on the same night, all bookings are counted. This may result in occupancy above 100% in case of overbookings.

Formula: Rooms sold = sum(booked_rooms)

Available rooms

Definition: Total number of rooms that were available to receive bookings for a given night. For each individual room and date:

  • If there is a booking → the room is considered available.

  • If there is no booking → the room is considered unavailable if:

    • The room calendar status is out_of_inventory or out_of_order, or

    • All rates for that room are closed, or

    • The Availability Calendar is set to zero or lower (values can be negative).

The following do not impact availability:

  • Closed to arrival

  • Closed to departure

  • Booking Engine visibility

This definition ensures that, except in overbooking cases, booked rooms are less than or equal to available rooms.

Formula: Rooms available = sum(available_rooms)

Special case: Mother cottages

Mother cottages affect availability and occupancy calculations.

  • If a mother cottage is out of order or out of inventory, all child rooms are unavailable.

  • If a mother cottage is booked, all its child rooms are unavailable.

  • Mother cottages are unavailable by default, except when booked.

  • If a child room is booked through a mother cottage, it is always considered unavailable individually.

  • For occupancy purposes, rooms inside a mother cottage are counted as individual rooms.

  • When a mother cottage is booked, all rooms within the cottage are considered occupied.

Occupancy rate

Definition: Percentage of available rooms that are booked for a given night.

Formula: Occupancy rate = sum(booked_rooms) / sum(available_rooms)

Occupancy may exceed 100% in case of overbookings.

Unoccupied rooms

Definition: Total number of rooms not occupied on a given night.

Formula: Unoccupied rooms = max(available_rooms − rooms_sold, 0)

If overbookings occur (rooms sold exceed rooms available), unoccupied rooms are floored to 0 and never negative.


Revenue logic

Revenue attribution logic

Revenue can be attributed in two different ways depending on the metric.

Effective date revenue

Revenue is attributed to the date on which the charge is applied. This reflects accounting timing and is used in charge-based reports.

Night stay revenue

Revenue is attributed to the specific nights of stay that generated it.

Revenue from a stay is allocated across each night between arrival and departure.

This reflects operational performance and is used for KPIs such as:

  • ADR

  • RevPAR

  • RevPAC

Gross revenue, Net revenue and Taxes

Revenue is calculated from charges linked to bookings in confirmed or modified status.

For each charge:

  • Gross revenue = total

  • Net revenue = base_amount

  • Taxes = total − base_amount

Important rules
- Discounts and counterpart charges are subtracted from their parent charge.
- Revenue is derived from:
total for gross revenue
base_amount for net revenue

Revenue breakdown types

Revenue is categorised as follows:

Room Revenue (Gross / Net / Taxes)

Includes charges of type booked_night, excluding rooms classified as reception_hall.

Extras Revenue (Gross / Net / Taxes)

Includes charges of type extra and custom, excluding reception_hall rooms.

City Tax Revenue (Gross / Net / Taxes)

Includes charges of type city_tax, excluding reception_hall rooms.

Reception Hall Revenue (Gross / Net / Taxes)

Includes all charge types for rooms classified as reception_hall. Reception Hall revenue is real revenue but is not part of accommodation activity and does not impact room performance KPIs such as Occupancy or RevPAR.

Total Revenue (Gross / Net / Taxes)

Sum of all charges from all rooms, regardless of type.


Performance KPIs

ADR (Average Daily Rate)

Definition: Average revenue per booked room for a given date. Revenue and booked rooms are based on stay dates.

Formula: ADR = sum(revenue) / sum(booked_rooms)

Available per combination of:

  • Date

  • Hotel

  • Room

RevPAR (Revenue per Available Room)

Definition: Average revenue earned per available room for a given date. Revenue and rooms available are based on stay dates.

Formula: RevPAR = sum(revenue) / sum(available_rooms)

RevPAC (Revenue per Guest)

Definition: Revenue divided by number of guests for a given date range. Revenue and guests are based on stay dates.

Formula: RevPAC = sum(room_revenue) / sum(number_of_guests)

Length of stay

Definition: Number of nights between arrival date and departure date. For reporting periods, length of stay is calculated as a weighted average.

Formula: sum(average_length_of_stay × booked_rooms) / sum(booked_rooms)

If multiple bookings exist for the same room and night, the average length of stay between them is used.

Lead time

Definition: Number of days between booking creation date and arrival date. Calculated as a weighted average for reporting periods.

Formula: sum(average_lead_time × booked_rooms) / sum(booked_rooms)

If multiple bookings exist for the same room and night, the average lead time between them is used.

Number of guests

Definition: Total number of guests staying in each room for a given night.

Only bookings in confirmed or modified status are included.

Formula: Guests = sum(guests)


Breakfast metrics

Breakfasts sold

Definition: Total number of extra breakfasts sold.

Breakfasts are counted when:

  • Recorded as an extra or custom charge

  • Tagged with an extra category marked as breakfast

Not included:

  • Breakfast included by default in the room rate

  • Cancelled breakfasts (counterpart charges)

If a breakfast has a 100% discount, it is included, as it was discounted rather than cancelled.

Allocation logic:

  • If the breakfast charge occurs during the stay → allocated to the date of the charge.

  • If the charge occurs outside the stay period → allocated to the arrival date.

Breakfast capture rate

Definition: Percentage of extra breakfasts sold per guest.

Formula: Breakfast capture rate = sum(breakfasts_sold) / sum(guests)

Allocation follows the same logic as breakfasts sold.

Breakfast gross revenue

Definition: Gross revenue generated from extra breakfasts.

Includes charges of type extra and custom linked to breakfast.

Formula: sum(total)

Allocation follows the same date logic described above.


Registered payments revenue

Registered payments revenue by payment method

Definition: Total revenue collected from registered guest payments.

Source: Paid transactions from the client_transactions table (transactions with a payment date).

Allocation logic:

  • Revenue is assigned to the payment date.

  • Refunds are assigned to the refund date.

Refunds cannot be reliably linked to their original transaction in most cases, as the original transaction reference is typically not available.

Important notes
- Reported on a cashflow basis.
- Available at hotel level only.
- Not allocated at room level.
- Not used for occupancy or room performance KPIs.

Booking Activity metrics

Cancelled bookings

Definition: Total number of bookings cancelled on a given date.

Formula: sum(cancelled_bookings)

Granularity: Available for every combination of date and hotel_id.

Notes:
- Cancelled bookings are allocated to the cancellation date.
- Bookings are a non-additive (distinct-count) metric, as a single booking may include multiple rooms.

Active bookings created

Definition: Total number of active bookings created on a given date.

A booking is considered active when its status is confirmed, modified or pending.

Formula: sum(active_bookings_created)

Granularity: Available for every combination of date and hotel_id.

Notes:
- Created bookings are allocated to the booking creation date.
- Bookings are a non-additive (distinct-count) metric, as a single booking may include multiple rooms.

FAQs

Why can occupancy exceed 100%?

If more than one booking exists for the same room and night, all bookings are counted. Overbookings are reflected in occupancy calculations.


Why do unoccupied rooms never appear as negative?

If rooms sold exceed rooms available, the value is floored to 0.


Why does revenue differ between reports?

Some reports use effective date logic (charge date), while performance KPIs use night stay allocation logic.


Are cancelled bookings included?

No. Only bookings in confirmed or modified status are included.


Is accrual accounting applied?

No. Switching to full accrual accounting is outside the scope of these calculations.

Did this answer your question?