This article will explain how family bookings are handled during the booking process, in the extranet, and in XML messages, with a special emphasis on the various options for retrieving and interpreting the number of guests in XML reservations.
The Basics
Before we jump into child pricing and occupancy, we need to understand how rooms, rates, and occupancy are configured and handled on Booking.com.
Understanding room capacity
Room capacity generally refers to the number of adults that can stay in a room. This is mostly validated by the number of beds configured for that room.
Understanding roomrate occupancy
A roomrate is typically calculated for the maximum number of adults that can stay in a room. We can also interpret this as “price of a room”, regardless of how many guests are staying. This is what we refer to as “standard pricing”.
Occupancy pricing (single-use, derived, RLO and OBP) all refer to a number of adults up to and including the maximum occupancy (allowing the property to set different prices or pricing rules for varying number of guests).
Adding children into the mix
What is child occupancy?
Child occupancy can be considered as an add-on to adult occupancy. It allows a predefined number of children to be added on top of the existing adult occupancy. It is important to note that in our system child occupancy is not “real” occupancy, therefore it doesn’t follow any rules, constraints or logic that relies on the number of persons.
What is child pricing?
Similar to child occupancy mentioned above, child pricing is a supplement to the regular roomrate, and it is added on top of the price for the maximum number of adults for that roomrate.
Child pricing and occupancy only get taken into account when the total number of guests (adults and children) exceeds the maximum number of adults for the available/selected roomrate.
Let’s see some examples
In our examples we will take two unit types:
- A Family Room with a capacity of 2 adults and 2 children (base price €120)
- An Apartment with a capacity of 4 adults (base price €200)
The property has the following child pricing set up:
- Children up to and including 3 years old stay for free
- Children from 4 to 11 years old stay for €50 per child per night
- Children 12 and up are considered adults
Note that in the above screenshot, only the Family Room is configured to have child occupancy. This means that child pricing is only applicable for that room. For any other room, children can stay, but will be considered as adults, and follow adult prices.
Scenario 1: Searching for 2 adults and 2 children
Here is an overview of what we can book. We have some extra charges configured for this property (9% VAT incl, 7% city tax excl, and cleaning fee €15 excl), so our prices are displayed with all of that taken into account.
The base price for the Family Room is €120 for the two adults, and you can see that child occupancy and pricing is active here. The two children increase the base price by €50 each, and the extra fees are calculated on top of that.
The apartment however does not have child occupancy configured, therefore the child pricing will be ignored, and the guest will need to only pay the price of the room itself (in this case for 4 adults).
If we book the Family Room, this is what the reservation will look like on extranet:
A note on child pricing
Since January 20, 2020 child pricing is included in the roomrate for all properties (instead of having it as a supplement that needs to be paid at the property).
For reservations that are made before January 20th, that same reservation would look like this:
(In both cases any fees, charges and addons that are configured “per person” would only be calculated for the adults.)
And if we were to book the apartment, we would get the following:
Notice that in this case it doesn’t matter if child pricing is included or excluded, since we don’t have child occupancy configured and the price is for adults.
Scenario 2: Searching for 2 adults and 2 children (free)
If children stay for free, child occupancy will be active, but the price will remain unchanged.
Understanding occupancy and guest count in XML reservations
Now that we’ve made our family bookings, let's take a look at how this information is transferred to connected partners. There are several XML elements that convey occupancy and guest count information. Most of them are optional features, and can be used independently or in combinations. We will also list redundant and/or deprecated features that are still in use by some XML providers.
Optional features can be configured on the feature management page in the Connectivity Provider Portal.
Occupancy
Optional feature: ‘include_room_level_occupancy’
Provides the maximum number of adults for the booked roomrate. In our Family Room example this would be 2, and in our Apartment example this would be 4, even though we’re only booking for two adults.
Keep in mind, this refers only to adults, and will not provide any information about possible child occupancy, since Booking.com does not support actual roomrates for children (only a fixed supplement price).
OTA
<HotelReservations>
<HotelReservation>
<RoomStays>
<RoomStay>
<TPA_Extensions>
<Occupancy>2</Occupancy>
</TPA_Extensions>
</RoomStay>
</RoomStays>
</HotelReservation>
</HotelReservations>
B.XML
<reservations>
<reservation>
<room>
<occupancy>2</occupancy>
</room>
</reservation>
</reservations>
Max children
Provides the maximum number of children allowed for a room (defined in Children Policies). Once again in our Family Room example, this would be 2, but in our Apartment example, this would be 0, since we didn’t set up child occupancy for this room type. This does not mean that children are not allowed for this room type, only that there is no specific occupancy/pricing allocated for it.
OTA
<HotelReservations>
<HotelReservation>
<RoomStays>
<RoomStay>
<RoomTypes>
<RoomType>
<RoomDescription>
<MaxChildren>2</MaxChildren>
</RoomDescription>
</RoomType>
</RoomTypes>
</RoomStay>
</RoomStays>
</HotelReservation>
</HotelReservations>
B.XML
<reservations>
<reservation>
<room>
<max_children>2</max_children>
</room>
</reservation>
</reservations>
Guest count
Displays the booked number of adults for a room.
OTA
<HotelReservations>
<HotelReservation>
<RoomStays>
<RoomStay>
<GuestCounts>
<GuestCount Count="2"/>
</GuestCounts>
</RoomStay>
</RoomStays>
</HotelReservation>
</HotelReservations>
B.XML
<reservations>
<reservation>
<room>
<numberofguests>2</numberofguests>
</room>
</reservation>
</reservations>
Guest count per room [NEW!]
Optional feature: ‘guestcount_per_room’
This feature modifies the output of guest information in reservation messages. The original guest counts element is expanded to include a breakdown of adults, children and their ages for each roomstay.
Turning this feature on will automatically disable all of the deprecated features mentioned below.
OTA
<OTA_HotelResNotifRQ> <HotelReservations> <HotelReservation> <RoomStays> <RoomStay> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="2"/> <GuestCount AgeQualifyingCode="8" Count="1" Age="5"/> <GuestCount AgeQualifyingCode="8" Count="1" Age="6"/> </GuestCounts> </RoomStay> <RoomStay> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1"/> <GuestCount AgeQualifyingCode="8" Count="1" Age="11"/> </GuestCounts> </RoomStay> </RoomStays> </HotelReservation> </HotelReservations> </OTA_HotelResNotifRQ>
B.XML
<reservations> <reservation> <room> <guest_counts> <guest_count count="2" type="adult"/> <guest_count count="1" type="child" age="6"/> <guest_count count="1" type="child" age="5"/> </guest_counts> </room> <room> <guest_counts> <guest_count count="1" type="adult"/> <guest_count count="1" type="child" age="11"/> </guest_counts> </room> </reservation> </reservations>
Notice that in B.XML the original <numberofguests> element is replaced by <guest_counts>.
Guest count with children [DEPRECATED]
Optional feature: ‘guest_count_with_children’
Modifies the guest count to include the booked number of children as well. In our example of a booking for 2 adults and 2 children, the guest count would now be 4.
OTA
<HotelReservations>
<HotelReservation>
<RoomStays>
<RoomStay>
<GuestCounts>
<GuestCount Count="4"/>
</GuestCounts>
</RoomStay>
</RoomStays>
</HotelReservation>
</HotelReservations>
B.XML
<reservations>
<reservation>
<room>
<numberofguests>4</numberofguests>
</room>
</reservation>
</reservations>
Child count [DEPRECATED]
Optional feature: ‘childcount’
Provides searched occupancy with a breakdown of adults, children and their ages on reservation level. Original room-level guest count element remains unchanged.
OTA
<HotelReservations>
<HotelReservation>
<ResGlobalInfo>
<GuestCounts>
<GuestCount AgeQualifyingCode="10" Count="2"/>
<GuestCount Age="5" AgeQualifyingCode="8" Count="1"/>
<GuestCount Age="6" AgeQualifyingCode="8" Count="1"/>
</GuestCounts>
</ResGlobalInfo>
</HotelReservation>
</HotelReservations>
B.XML
<reservations>
<reservation>
<guest_counts>
<guest_count count="2" type="adult"/>
<guest_count age="5" count="1" type="child"/>
<guest_count age="6" count="1" type="child"/>
</guest_counts>
</reservation>
</reservations>
Child count per room [DEPRECATED]
Optional feature: ‘childcount_per_room’
Provides a breakdown of adults, children and their ages on room level.
Original room-level guest count element remains unchanged.
OTA
<HotelReservations>
<HotelReservation>
<RoomStays>
<RoomStay>
<TPA_Extensions>
<GuestCounts>
<GuestCount AgeQualifyingCode="10" Count="2"/>
<GuestCount Age="6" AgeQualifyingCode="8" Count="1"/>
<GuestCount Age="5" AgeQualifyingCode="8" Count="1"/>
</GuestCounts>
</TPA_Extensions>
</RoomStay>
</RoomStays>
</HotelReservation>
</HotelReservations>
B.XML
<reservations>
<reservation>
<room>
<guest_counts>
<guest_count count="2" type="adult"/>
<guest_count age="5" count="1" type="child"/>
<guest_count age="6" count="1" type="child"/>
</guest_counts>
</room>
</reservation>
</reservations>
Deprecated features are still supported and may be used by providers who have adopted them previously. We recommend using the new guestcount_per_room instead.
Searched vs Booked vs “Who’s actually coming?”
Quick reference for the terms ‘searched’, ‘booked’ and ‘max’ occupancy
Searched occupancy refers to the information that the booker has entered in any of our search fields when looking for a property, and also on the property page itself when looking for availability. This is information that the booker enters for the whole reservation, regardless of how many rooms they end up booking.
Max occupancy in a reservation is often confused with the room capacity (also called max occupancy). What it in fact refers to is the maximum number of guests that the roomrate allows. The easiest way to visualize it is by counting the number of person icons on the room selection page. It can also be interpreted as "what occupancy the guest is paying for."
Booked occupancy refers to the second stage of the book funnel, when the booker has already selected which rooms they want and the searched information is now allocated into those rooms. This is essentially a combination of the searched occupancy, divided into the roomrate occupancy of the selected room(s).
On Booking.com, guests up to the age of 18 are considered children, regardless of the property's children policy. The policy can be used to define different pricing for guests up to 18 years of age, but it will not affect the guest's age category in the reservation message.
Booking.com does not require the booker to specify which guests go into which rooms, so our system does an approximation based on the search input and the selected roomrates. Usually in group bookings what the booker can select does not match 1:1 with what they searched for, and in these instances we will drop the search information from the XML message, and some information might be missing.
Furthermore, what was originally intended by the booker in terms of who goes where might not be the same as what our system has guessed, leading to confusion at check-in.
There are also situations in which the search is skipped, such as modifying a reservation (search happened previously). In this case the original information about children will be lost, and we will only send the selected roomrate occupancy in the XML messages.
Comments
0 comments
Article is closed for comments.