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.

Child rates are prices and not rate plans

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.

[New version] Setting up children policies and child rates (pricing)

To set up children policies and child rates for a property, you must do the following:

  1. 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.
  2. 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: AdultsOnly
::::: 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][b_xml-countrycurrencies]. 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. int 0..1
:::: Occupancy/
@MaxAdultOccupancy
Specifies the maximum number of adult guests allowed to stay in the room. int 0..1
:::: Occupancy/
@MaxChildOccupancy
Specifies the maximum number of children allowed to stay in the room. int 0..1 The value for @MaxChildOccupancy is always lower than that for @MaxAdultOccupancy, because you cannot have a room with only children.
:::: 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>
            </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>

[Old version] Setting up children policies and child rates (pricing)

Soon to be deprecated

You can still set up children policies and special bed options following the old version, but you should follow the new version instead. For more information, see the updated version of setting up children policies.

You can specify special bed options (for adults or children) at property level. Use /ota/OTA_HotelDescriptiveContentNotif to modify the details of a property.

Before you start

Overlay

Content API uses an overlay system. Every time you update an existing property, room type, or other object, the body of your request replaces whatever information was stored in our servers at that time. This means existing information may be deleted if you don't include it in your request.

To update an object without deleting information, make sure your request contains both the fields you want to update and those you want to keep the same. Copy/paste sample requests from this page at your own risk.

You need:

Children policies

You can specify children policies for your property by providing a Service Object in Services array. An example of such object can be found below.

Request

HTTP request

POST https://supply-xml.booking.com/hotels/ota/OTA_HotelDescriptiveContentNotif

Request body

Example:

<!-- WARNING: This request overlays existing objects. Copy/pasting may lead to loss of information. -->
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelDescriptiveContentNotifRQ
  xmlns="http://www.opentravel.org/OTA/2003/05"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  PrimaryLangID="en-us"
  EchoToken="GUID"
  TimeStamp="2015-06-09T09:30:47Z"
  xsi:schemaLocation="http://www.opentravel.org/2014B/OTA_HotelDescriptiveContentNotifRQ.xsd"
  id="OTA2014B"
  Version="8.0"
  Target="Production">
  <HotelDescriptiveContents>
    <HotelDescriptiveContent
      HotelCode="{PropertyID}"
      HotelDescriptiveContentNotifType="Overlay">
      <HotelInfo>
        <Services>
          <!-- Children and existing bed-->    
          <Service
            Code="218"
            ExistsCode="1"
            Quantity="2">
          <!-- ExistsCode="1" means "children are welcome". -->
          <!-- Use Quantity="0" if children are welcome but cannot stay in existing beds. -->
            <Features>
              <Feature>
                <DescriptiveText>max_age_12</DescriptiveText>
                <!-- Options: max_age_1, max_age_2 ... max_age_18. -->
                <Charge
                  Amount="12300"
                  DecimalPlaces="2"/>
              </Feature>
            </Features>
          </Service>
          <!-- Extra bed -->
          <Service
            Code="5038"
            Quantity="4" >
          <!-- Use Quantity="0" if extra beds are not offered. -->
            <Features>
              <Feature ID="adult_bed">
                <Charge Amount="123"/>
              </Feature>
              <Feature ID="infant_bed">
                <Charge Amount="321"/>
              </Feature>
              <Feature ID="children_bed">
                <DescriptiveText>max_age_6</DescriptiveText>
                <!-- Options: max_age_1, max_age_2 ... max_age_18. -->
                <Charge Amount="246"/>
              </Feature>
            </Features>
          </Service>
        </Services>
      </HotelInfo>
    </HotelDescriptiveContent>
  </HotelDescriptiveContents>
</OTA_HotelDescriptiveContentNotifRQ>

Response

The response contains an OTA_HotelDescriptiveContentNotifRS object:

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelDescriptiveContentNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelDescriptiveContentNotifRS.xsd" TimeStamp="2018-08-27T08:17:04+00:00" Target="Production" Version="3.000">
    <Success />
</OTA_HotelDescriptiveContentNotifRS>
<!-- RUID: [UmFuZG9etc] -->

Example

In this scenario, we specify that the property can accommodate one child and that they can sleep for free in existing beds. The payload will look like below - please note that this is an excerpt and not a valid XML document.

...
<Services>
  ...
  <!-- Children and existing bed-->
  <Service
    Code="218"
    ExistsCode="1"
    Quantity="1">
  <!-- ExistsCode="1" means "children are welcome". -->
  <!-- Use Quantity to specify the number of children allowed to stay in existing beds -->
  <!-- Use Quantity="0" if children are welcome but cannot stay in existing beds. -->
    <Features>
      <Feature>
        <DescriptiveText>max_age_6</DescriptiveText>
        <!-- Options: max_age_1, max_age_2 ... max_age_18. -->
        <Charge
          Amount="0"
          />
        <!-- Amount set to 0 means children can stay for free, any other value represents the price in property's currency -->
      </Feature>
    </Features>
  </Service>
  ...
</Services>
...

Next steps