Setting up children policies and child rates (pricing)
You can indicate whether a property accepts children and specify:
- The price for each additional child per age or age range.
- The max occupancy for a room type specifying both the max amount of adults and children.
- From what age children are welcome.
- Whether and how many cribs or extra beds (rollaways) are available.
The documentation uses rates and prices interchangeably, because both refer to the eventual rate or price a guest sees on Booking.com. A rate plan is a label to organise rates or prices. Therefore, pay attention to the difference between child rate and child rate plan. Child rate is pricing, while child rate plan (or derived rate plan) is a rate plan derived from a parent rate plan.
To understand more about when child pricing and occupancy get taken into account in the price of a reservation, take a look at this article.
Setting up children policies and child rates (pricing)
To set up children policies and child rates for a property, you must do the following:
On the property level, use the HotelDescriptiveContentNotif endpoint to:
- Indicate whether children are allowed.
- Specify prices for each extra child per age or age range.
On the room level, use the HotelInvNotif endpoint to:
- Specify the max occupancy for a room type, including max number of adults and children.
- Specify the number of additional guests, cribs, and beds (rollaways).
Using the HotelDescriptiveContentNotif endpoint
POST
https://supply-xml.booking.com/hotels/ota/OTA_HotelDescriptiveContentNotif
The HotelDescriptiveContentNotif
endpoint enables you to indicate whether children are allowed and at what age. In addition, it also enables you to specify prices for each additional child per age or age range.
Body parameters
The following table only describes the body parameters that concern the children policies and pricing. Ensure that you include all the other existing policies for your property in the request body.
Parameter | Description | Type | Required/Optional | Notes |
---|---|---|---|---|
>>>>> PolicyInfo | Contains the PolicyInfo details. | object | 0..* | - |
>>>>> PolicyInfo /@AcceptedGuestType | Specifies whether the property admits adults and children, or only adults. | enum | 0..1 | Accepts AdultOnly and ChildrenAllowed . Default: AdultOnly |
>>>>> PolicyInfo /@MinGuestAge | Specifies the minimum age that children are allowed (in case ChildrenAllowed ) to stay at the property. | integer | 0..1 | |
>>>>> FeePolicy | Contains the FeePolicy details. | object | ||
>>>>> FeePolicy /@ChargeFrequency | Specifies the unit of time on which the charge is calculated. | integer | 0..1 | Accepts 20 (per person per stay) and 21 (per person per night). Default: 21 . |
>>>>> FeePolicy /@Amount | Specifies the amount charged in the country's local currency. | integer | 0..1 | |
>>>>> FeePolicy /@DecimalPlaces | The number of decimal places to apply to @Amount . | int | 0..1 | Default: 0 |
>>>>> FeePolicy /@MinAge | Specifies the minimum age for the children policy to apply. In combination with @MaxAge it becomes an age range. | integer | 0..1 | You can use this attribute with Fee Tax Type (FTT) code 37, 38, or 44. If you want to specify different prices per age range, you must create multiple FeePolicy elements (of 37 , 38 , or 44 ) within the same request. See example. |
>>>>> FeePolicy /@MaxAge | Specifies the maximum age for the children policy to apply. The max value is 255 (adult). | integer | 0..1 | You can use this attribute with Fee Tax Type (FTT) code 37, 38, or 44. If you want to specify different prices per age range, you must create multiple FeePolicy elements (of 37 , 38 , or 44 ) within the same request. See example. |
Body request example
The following policies request example includes existing property policies so that you do not remove them via overlay.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelDescriptiveContentNotifRQ Target="Test"> <HotelDescriptiveContents> <HotelDescriptiveContent HotelName="Fake Hotel" ID="101010" LanguageCode="en" PropertyLicenseNumber="AB-CD-1234" HotelDescriptiveContentNotifType="New"> <Policies> <Policy> <PolicyInfo CheckInTime="17:00-20:00" CheckOutTime="12:00" AcceptedGuestType="ChildrenAllowed" MinGuestAge="0"/> <PetsPolicies PetsAllowedCode="Pets By Arrangements"> <PetsPolicy NonRefundableFee="charges_may_apply"/> </PetsPolicies> <CancelPolicy> <CancelPenalty PolicyCode="1"> <TPA_Extensions> <NoShowPolicy Penalty="default"/> </TPA_Extensions> </CancelPenalty> <CancelPenalty PolicyCode="29"> <TPA_Extensions> <NoShowPolicy Penalty="total_price"/> </TPA_Extensions> </CancelPenalty> </CancelPolicy> <GuaranteePaymentPolicy> <GuaranteePayment PolicyCode="1"> <TPA_Extensions> <PrepaymentPolicy EffectiveFrom="after_reservation_is_made"/> </TPA_Extensions> </GuaranteePayment> <GuaranteePayment PolicyCode="29"> <TPA_Extensions> <PrepaymentPolicy EffectiveFrom="after_cancellation_fee_begins"/> </TPA_Extensions> </GuaranteePayment> </GuaranteePaymentPolicy> <TaxPolicies> <TaxPolicy Code="36" Percent="1200" DecimalPlaces="2" Type="Exclusive"/> <TaxPolicy Code="3" Amount="800" DecimalPlaces="2" Type="Inclusive" ChargeFrequency="20"/> </TaxPolicies> <FeePolicies> <FeePolicy Code="5009" Amount="1500" DecimalPlaces="2" Type="Conditional" ChargeFrequency="12"> <TPA_Extensions> <Conditions> <Condition Type="guest_doesnt_clean_before_checkout"/> </Conditions> </TPA_Extensions> </FeePolicy> <FeePolicy Code="44" ChargeFrequency="21" Amount="0" DecimalPlaces="2" MinAge="0" MaxAge="3" /> <FeePolicy Code="44" ChargeFrequency="21" Amount="6000" DecimalPlaces="2" MinAge="4" MaxAge="12" /> <FeePolicy Code="37" ChargeFrequency="20" Amount="2000" DecimalPlaces="2" MinAge="0" MaxAge="3" /> <FeePolicy Code="38" ChargeFrequency="21" Amount="7000" DecimalPlaces="2" MinAge="4" MaxAge="255" /> <FeePolicy Code="5036" Amount="10000" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="2"> <TPA_Extensions> <ParkingFeePolicy ParkingType="location_nearby" ParkingReservation="needed" ParkingProperty="private"/> </TPA_Extensions> </FeePolicy> </FeePolicies> </Policy> </Policies> </HotelDescriptiveContent> </HotelDescriptiveContents> </OTA_HotelDescriptiveContentNotifRQ>
Response body example
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelDescriptiveContentNotifRS Target="Test"> <Success /> </OTA_HotelDescriptiveContentNotifRS>
Using the HotelInvNotif endpoint
POST
https://supply-xml.booking.com/hotels/ota/OTA_HotelInvNotif
The HotelInvNotif
endpoint enables you to specify how many guests can stay in a room type and whether it supports additional guests, cribs, or extra beds (rollaways).
Body parameters
The following table only describes the body parameters that concern the children policies. Ensure that you include all the other existing SellableProduct
elements in the request body.
Parameter | Description | Type | Min/max | Notes |
---|---|---|---|---|
>>>> Occupancy | Contains the room type occupancy details. | object | 1..1 | You cannot specify Occupancy in subrooms. |
>>>> Occupancy /@MaxOccupancy | Specifies the maximum number of guests allowed to stay in the room type. | int | 0..1 | |
>>>> Occupancy /@MaxAdultOccupancy | Specifies the maximum number of adult guests allowed to stay in the room type. | int | 0..1 | |
>>>> Occupancy /@MaxChildOccupancy | Specifies the maximum number of children allowed to physically stay in the room type. | integer | 0..1 | required |
>>>> TPA_Extensions | Contains the room type's additional child occupancy details. | object | 1..1 | required |
>>>> TPA_Extensions /@MaxChildPayableOccupancy | Specifies the maximum number of children that are eligible for the children rate. | integer | 0..1 | required |
>>>> Quantities | Contains the crib and extra bed details. | object | 1..1 | - |
>>>> Quantities /@MaximumAdditionalGuests | Specifies the maximum number of additional guests allowed to stay in the room in cribs or extra beds (rollaways). | int | 0..1 | |
>>>> Quantities /@MaxCribs | Specifies the maximum number of cribs in the room. | int | 0..1 | In case you want to specify that a room with one additional guest can hold a crib OR an extra bed (but not both), you specify 1 for both. |
>>>> Quantities /@MaxRollaways | Specifies the maximum number of extra beds in the room. | int | 0..1 | If you want to specify that a room with one additional guest can hold a crib OR an extra bed (but not both), you must specify 1 for both. |
Body request example
The following policies request example includes existing SellableProduct
elements so that you do not remove them via overlay.
<OTA_HotelInvNotifRQ Target="Test"> <SellableProducts HotelCode="12345"> <SellableProduct InvStatusType="Initial"> <GuestRoom> <Occupancy MaxOccupancy="2" MaxAdultOccupancy="2" MaxChildOccupancy="1"/> <Quantities MaximumAdditionalGuests="1" MaxCribs="1" MaxRollaways="0"> <Room NonSmoking="1" RoomType="Double" SizeMeasurement="16" /> <Amenities> <Amenity AmenityCode="61"/> <Amenity AmenityCode="69" Value="1"/> <Amenity AmenityCode="33" Value="2"/> </Amenities> <RoomLocation RoomLocationCode="2"> <Floors> <Floor Number="4" /> <Floor Number="7" /> <Floor Number="9" /> </Floors> </RoomLocation> <TPA_Extensions> <Occupancy MaxChildPayableOccupancy="1" /> </TPA_Extensions> </GuestRoom> </SellableProduct> </SellableProducts> </OTA_HotelInvNotifRQ>
Response body example
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelInvNotifRS Target="Test"> <InventoryCrossRefs> <InventoryCrossRef ResponseInvCode="1234512" /> </InventoryCrossRefs> <Success /> </OTA_HotelInvNotifRS>