Managing flexible child pricing

Flexible child pricing enables you to:

  • Manage children policies on the property level.
  • Create, update, retrieve, and delete age buckets (with age ranges) on the property level.
  • Create, update, retrieve, and delete prices for children on the roomrate or roomrate-date (inventory) level.

Managing children policies

Setting up a children policy on the property level is not new. You can do it in two ways:

  • If you have the HotelDescriptiveContentNotif endpoint (Content API) implemented, add the following two attributes to the PolicyInfo element when creating age buckets:
    • AcceptedGuestType (You must set this to "ChildrenAllowed".)
    • MinGuestAge
  • If not, then the property can set up a children policy using the Extranet.

What are age buckets?

An age bucket is a category for children prices that specifies the age range to which the eventual price applies to. You can create up to three age buckets per property. Each age bucket exists of a minimum and maximum age, where the maximum age is inclusive. Therefore, the minimum age of an age bucket (excluding the first, which does not have a preceding age bucket) must be larger than the maximum age of the preceding bucket. Let's look at an example scenario:

  • Age bucket 1 with minimum age 0 and maximum age 3.
  • Age bucket 2 with minimum age 4 and maximum age 12.
  • Age bucket 3 with minimum age 13 and maximum age 17.

You can see that the ages are inclusive and do not overlap. If they do, the system throws an error. When sending prices for children, the system checks whether the age bucket you specified exists, or whether the age range you specified matches an existing age bucket.

Creating or updating age buckets

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

The POST /ota/OTA_HotelDescriptiveContentNotif enables you to create or update age buckets (with age ranges) for children on the property level. These age buckets are inclusive, which means the minimum age of, for example, the second age bucket must be larger than the maximum age of the first bucket.

→ If you have not implemented HotelDescriptiveContentNotif (also known as Content API), then your property can also set up age buckets using the Extranet.

Creating or updating

If you are not creating a property using the HotelDescriptiveContentNotif endpoint, creating and updating age buckets basically work the same way. For either you must set HotelDescriptiveContentNotifType to Overlay.

Ensure that you add all other existing Policies data to not remove anything.

Request body parameters

The following table only describes the body parameters that concern flexible child pricing. Ensure that you include all the other existing policies for your property in the request body to not remove existing information because of overlay logic.

Parameter Attribute Description Type Required/Optional Notes
>>> Policies Contains the Policy elements. object required -
>>>> Policy Contains the Policy details. object required -
>>>>> PolicyInfo Contains the PolicyInfo details. object optional -
AcceptedGuestType Specifies whether the property admits adults and children, or only adults. enum required Accepts AdultOnly and ChildrenAllowed. Default value is AdultsOnly. You must set it to ChildrenAllowed if you want to create age buckets or send children prices.
MinGuestAge Specifies the minimum age that children are allowed to stay at the property. integer optional The value for MinGuestAge must be the same as the MinAge of the first (with lowest age range) AgeBucket.
>>>>> FeePolicies Contains the FeePolicy elements. object
>>>>>> FeePolicy Contains the FeePolicy details. object
ChargeFrequency Specifies the unit of time on which the charge is calculated. integer optional Accepts 20 (per person per stay) and 21 (per person per night). Default: 21.
Amount Specifies the amount charged in the [country's local currency][b_xml-countrycurrencies]. integer optional
DecimalPlaces The number of decimal places to apply to @Amount. integer optional Default: 0
>>>>> TPA_Extensions Contains the Agebuckets array. object
>>>>>> AgeBuckets Contains the Agebucket elements. array optional
>>>>>>> AgeBucket Contains the Agebucket details. object required
MinAge Specifies the minimum age for the age bucket range. integer required* Required if you added the AgeBuckets object.
MaxAge Specifies the maximum age for the age bucket range. integer required* This value is inclusive and cannot overlap with the MinAge of the preceding Agebucket. So with a MinAge of 0 and a MaxAge of 6, the MinAge for the next AgeBucket should be 7.

Request body example

<OTA_HotelDescriptiveContentNotifRQ>
   <HotelDescriptiveContents>
      <HotelDescriptiveContent HotelName="HOTEL_NAME" HotelCode="6963343" HotelDescriptiveContentNotifType="Overlay">
          ...
          <Policies>
             <Policy>
               <PolicyInfo AcceptedGuestType="ChildrenAllowed" MinGuestAge="0"/>
               ...
               <TPA_Extensions>
                 <AgeBuckets>
                     <AgeBucket MinAge="0" MaxAge="3"/> 
                     <AgeBucket MinAge="4" MaxAge="12"/>
                     <AgeBucket MinAge="13" MaxAge="17"/>
                 </AgeBuckets>
               </TPA_Extensions>
            </Policy>
         </Policies>
      </HotelDescriptiveContent>
   </HotelDescriptiveContents>
</OTA_HotelDescriptiveContentNotifRQ>

Response body example

The following is a successful response body example:

<OTA_HotelDescriptiveContentNotifRS>
  <Success />
</OTA_HotelDescriptiveContentNotifRS>

Response body elements

The following table describes the response elements:

Element Description Type Notes
OTA_HotelDescriptiveContentNotifRS Contains the response data. object
> success Indicates whether the request was successful. boolean
ruid Specifies the unique id of the request. string You can send this id to Booking.com customer support if you run into an issue. This can help to understand what went wrong.

Retrieving age buckets

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

The POST /ota/OTA_HotelDescriptiveInfo enables you to retrieve existing age buckets (with age ranges) for children on the property level.

Request body parameters

The following table describes the required request body elements for this endpoint:

Parameter Attribute Description Type Required/Optional Notes
OTA_HotelDescriptiveInfoRQ Contains the HotelDescriptiveInfos object. object required -
> HotelDescriptiveInfos Contains the HotelDescriptiveInfo object. object required -
>> HotelDescriptiveInfo Contains the HotelDescriptiveInfo details. object required -
HotelCode Specifies the unique property id. integer required

Request body example

<OTA_HotelDescriptiveInfoRQ>
    <HotelDescriptiveInfos>
        <HotelDescriptiveInfo HotelCode="6963343">
        </HotelDescriptiveInfo>
    </HotelDescriptiveInfos>
</OTA_HotelDescriptiveInfoRQ>

Response body example

The following is a successful response body example:

<OTA_HotelDescriptiveInfoRS>
   <HotelDescriptiveContents>
       <HotelDescriptiveContent HotelName="HOTEL_NAME" LanguageCode="en" ID="6963343" Status="Open / bookable" CurrencyCode="USD">
         ...
          <Policies>
             <Policy>
               ...
               <TPA_Extensions>
                 <AgeBuckets>
                     <AgeBucket MinAge="0" MaxAge="3" AgeBucketID="1"/> 
                     <AgeBucket MinAge="4" MaxAge="12" AgeBucketID="2"/>
                     <AgeBucket MinAge="13" MaxAge="17" AgeBucketID="3"/>
                 </AgeBuckets>
               </TPA_Extensions>
            </Policy>
         </Policies>
      </HotelDescriptiveContent>
   </HotelDescriptiveContents>
</OTA_HotelDescriptiveInfoRS>

Response body elements

The following table only describes the response body parameters that concern the children policies and pricing.

Element Attribute Description Type Notes
>>>>> TPA_Extensions Contains the Agebuckets array. object
>>>>>> AgeBuckets Contains the Agebucket elements. array
>>>>>>> AgeBucket Contains the Agebucket details. object
MinAge Specifies the minimum age for the age bucket range. integer
MaxAge Specifies the maximum age for the age bucket range. integer
AgeBucketID Specifies the unique id of the age bucket. integer You can use this id to send children prices.

Removing age buckets

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

The POST /ota/OTA_HotelDescriptiveContentNotif enables you to remove age buckets by sending an empty AgeBuckets object.

Request 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 to not remove other existing information because of overlay logic.

Parameter Attribute Description Type Required/Optional Notes
>>> Policies Contains the Policy elements. object required -
>>>> Policy Contains the Policy details. object required -
>>>>> PolicyInfo Contains the PolicyInfo details. object optional -
AcceptedGuestType Specifies whether the property admits adults and children, or only adults. enum optional Accepts AdultOnly and ChildrenAllowed. Default: AdultsOnly
MinGuestAge Specifies the minimum age that children are allowed (in case ChildrenAllowed) to stay at the property. integer optional
>>>>> FeePolicies Contains the FeePolicy elements. object
>>>>>> FeePolicy Contains the FeePolicy details. object
ChargeFrequency Specifies the unit of time on which the charge is calculated. integer required Accepts 20 (per person per stay) and 21 (per person per night). Default: 21.
Amount Specifies the amount charged in the [country's local currency][b_xml-countrycurrencies]. integer optional
DecimalPlaces The number of decimal places to apply to @Amount. integer optional Default: 0
>>>>> TPA_Extensions Contains the Agebuckets array. object required
>>>>>> AgeBuckets Contains the Agebucket elements. array required
>>>>>>> AgeBucket Contains the Agebucket details. object required
MinAge Specifies the minimum age for the age bucket range. integer required* Required if you added the AgeBuckets object.
MaxAge Specifies the maximum age for the age bucket range. integer required* This value is inclusive and cannot overlap with the MinAge of another Agebucket. So with a MinAge of 0 and a MaxAge of 6, the MinAge for the possible following AgeBucket should be 7.

Request body example

<OTA_HotelDescriptiveContentNotifRQ>
   <HotelDescriptiveContents>
      <HotelDescriptiveContent HotelName="HOTEL_NAME" HotelCode="6963343" HotelDescriptiveContentNotifType="Overlay">
          ...
          <Policies>
             <Policy>
               ...
               <TPA_Extensions>
                 <AgeBuckets>
                 </AgeBuckets>
               </TPA_Extensions>
            </Policy>
         </Policies>
      </HotelDescriptiveContent>
   </HotelDescriptiveContents>
</OTA_HotelDescriptiveContentNotifRQ>

Response body example

The following is a successful response body example:

<OTA_HotelDescriptiveContentNotifRS>
  <Success />
</OTA_HotelDescriptiveContentNotifRS>

Response body elements

The following table describes the response elements:

Element Description Type Notes
OTA_HotelDescriptiveContentNotifRS Contains the response data. object
> success Indicates whether the request was successful. string
ruid Specifies the unique id of the request. string You can send this id to Booking.com customer support if you run into an issue. This can help to understand what went wrong.

Sending and updating children pricing

This section instructs you how to manage children prices for your property on the roomrate-date level. It is important to know that:

  • If the property is on the occupancy-based pricing (OBP), you cannot use percentages.
  • If the property is on the length-of-stay (LOS) pricing model, you cannot send children pricing using the following endpoints.

→ To send children prices on the roomrate level, which refers to derived pricing, see sending and updating children prices on the roomrate level.

OTA or BXML

You can send and update children pricing in one of the following two ways:

Sending and updating children pricing: OTA

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

The POST /ota/OTA_HotelRateAmountNotif enables you to send children pricing per (property-level) age bucket. You can also use age ranges if they correspond with the age ranges of existing age buckets.

Request body parameters

The following table only describes the body parameters that concern children pricing. Ensure that you include adult prices for the roomrate in the request body to not remove other existing information because of overlay logic.

Parameter Attribute Description Type Required/Optional Notes
>>> AdditionalGuestAmounts Contains the AdditionalGuestAmount elements. array required
>>>> AdditionalGuestAmount Contains the children pricing details. object required
AgeQualifyingCode Specifies that the prices are for children. integer required You must use 8 to signal that the prices are for children only.
AgeBucketID Specifies the id of the property-level age bucket. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
MinAge Specifies the beginning of an age range. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
MaxAge Specifies the end of an age range and is inclusive. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
Amount Specifies the price for a child within a certain age bucket. integer required* The price cannot exceed the adult price for the roomrate. You must use either Amount and DecimalPlaces or Percentage.
DecimalPlaces Specifies the number of decimal places to apply to Amount. integer optional The default value is 0, which means the value of Amount is without a decimal point.
Percentage Specifies the price for the child as a percentage of the adult price. integer required Possible value between 0 and 100. You must use either Amount and DecimalPlaces or Percentage.
AdditionalGuestNumber Specifies the order of prices within the same age bucket. integer optional This means that you can set different prices per child within the same age bucket age range. For example: Price for 1 (first child) is 5000, while price for 2 (second child) is 2500, and 3 (third child) is free (0). Default value is 0, meaning all prices are the same for children in the specified age bucket.

Request body example

<OTA_HotelRateAmountNotifRQ>
  <RateAmountMessages> 
    <RateAmountMessage LocatorID="1">
    <StatusApplicationControl Start="2021-11-17" End="2021-12-18" RatePlanCode="7473" InvTypeCode="696334301"/>
    <Rates>
      <Rate>
        <BaseByGuestAmts>
          <BaseByGuestAmt AmountAfterTax="16900" DecimalPlaces="2" CurrencyCode="EUR"/>
          </BaseByGuestAmts>
        <AdditionalGuestAmounts>
          <AdditionalGuestAmount AgeQualifyingCode="8" fromAge="0" toAge="5"  Amount="1000" DecimalPlaces="2"  AdditionalGuestNumber="1"/>
          <AdditionalGuestAmount AgeQualifyingCode="8" AgeBucketID="1" Percent="50" />
        </AdditionalGuestAmounts>
      </Rate>
    </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Response body example

The following is a successful response body example:

<OTA_HotelRateAmountNotifRS>
  <Success />
</OTA_HotelRateAmountNotifRS>

Response body elements

The following table describes the response elements:

Element Description Type Notes
OTA_HotelRateAmountNotifRS Contains the response data. object
> success Indicates whether the request was successful. string
ruid Specifies the unique id of the request. string You can send this id to Booking.com customer support if you run into an issue. This can help to understand what went wrong.

Sending and updating children pricing: BXML

POST https://supply-xml.booking.com/hotels/xml/availability

The POST /xml/availability enables you to send children pricing per (property-level) age bucket. You can also use age ranges if they match the age ranges of existing age buckets.

Request body parameters

The following table only describes the body parameters that concern children pricing. Ensure that you include adult prices for the roomrate in the request body to not remove other existing information because of overlay logic.

Parameter Attribute Description Type Required/Optional Notes
>>> additional_guests Contains the price elements for children. array required
>>>> price Contains the children pricing details. object required
type Specifies that the prices are for children. string required You must use child to signal that the prices are for children only.
additional_guest_number Specifies the order of prices within the same age bucket. integer optional This means that you can set different prices per child within the same age bucket age range. For example: Price for 1 (first child) is 5000, while price for 2 (second child) is 2500, and 3 (third child) is free (0). Default value is 0, meaning all prices are the same for children in the specified age bucket.
age_bucket Specifies the id of the property-level age bucket. integer required* You must either use AgeBucket or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
from_age Specifies the beginning of an age range. integer required* You must either use AgeBucket or from_age with to_age. However, the from_age to to_age age range must match an existing age bucket age range.
to_age Specifies the end of an age range and is inclusive. integer required* You must either use AgeBucket or from_age with to_age. However, the from_age to to_age age range must match an existing age bucket age range.
additional Specifies the fixed price for a child within a certain age bucket. integer required* Values must be with two decimals (100.00). The price cannot exceed the adult price for the roomrate. You must use either additional or percentage.
percentage Specifies the price for the child as a percentage of the adult price. integer required Possible value between 0 and 100. You must use either additional or percentage.

Request body example

<request>
  <hotel_id>1719757</hotel_id>
  <room id="696334301">
    <date from="2021-08-02" to="2021-08-10">
      <rate id="7473463" />
      <price>120.00</price>
      <additional_guests>
         <price type="child" additional_guest_number="1" age_bucket_id="1" additional="80"></price>
         <price type="child" additional_guest_number="2" age_bucket_id="1" percentage="10"></price>
      </additional_guests>
    </date>
  </room>
</request>

Response body example

The following is a successful response body example:

<ok></ok>

Response body elements

The following table describes the response elements:

Element Description Type Notes
ok Indicates whether the request was successful. string
ruid Specifies the unique id of the request. string You can send this id to Booking.com customer support if you run into an issue. This can help to understand what went wrong.

Sending and updating children pricing on the roomrate level (derived pricing)

POST https://supply-xml.booking.com/hotels/xml/derivedprices

The POST /xml/derivedprices enables you to send derived children pricing per (property-level) age bucket. You can also use age ranges if they correspond with the age ranges of existing age buckets.

Keep in mind that these derived prices are on the roomrate level and overwrite existing prices on the roomrate-date level.

Request body parameters

The following table the body parameters that you must add.

Parameter Attribute Description Type Required/Optional Notes
request Contains the request elements. object required
> rooms Contains the room elements. array required
>> room Contains the room and roomrate details. object required
id Specifies the unique id of the room type. integer required
>>> rates Contains the rate elements. array required
>>>> rate Contains the rate and roomrate details. object required
id Specifies the unique id of the rate plan. integer required
leading Specifies the leading occupancy (from which the specified prices derive from). integer required
>>>>> occupancy Contains the rate and roomrate details. object required
persons Specifies the occupancy amount for the derived price. integer required
additional Specifies the unique id of the room type. integer required
>>>>> additional_guests Contains the price elements for children. array required
>>>>>> price Contains the children pricing details. object required
type Specifies that the prices are for children. string required You must use child to signal that the prices are for children only.
additional_guest_number Specifies the order of prices within the same age bucket. integer optional This means that you can set different prices per child within the same age bucket age range. For example: Price for 1 (first child) is 5000, while price for 2 (second child) is 2500, and 3 (third child) is free (0). Default value is 0, meaning all prices are the same for children in the specified age bucket.
age_bucket_id Specifies the id of the property-level age bucket. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
from_age Specifies the beginning of an age range. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
to_age Specifies the end of an age range and is inclusive. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
additional Specifies the fixed price for a child within a certain age bucket. integer required* Values must be with two decimals (100.00). The price cannot exceed the adult price for the roomrate. You must use either additional or percentage.
percentage Specifies the price for the child as a percentage of the adult price. integer required Possible value between 0 and 100. You must use either additional or percentage.

Request body example

<request>
  <rooms>
    <room id="258745501">
      <rates>
        <rate id="12763291" leading_occupancy="4">
          <occupancy persons="4" additional="0" />
          <additional_guests>
                <price type="child" additional_guest_number="1" age_bucket_id="1" additional="44"></price>
                <price type="child" additional_guest_number="2" age_bucket_id="1" percentage="33"></price>
                </additional_guests>
        </rate>
      </rates>
    </room>
  </rooms>
</request>

Response body example

The following is a successful response body example:

<ok></ok>

Response body elements

The following table describes the response elements:

Element Description Type Notes
ok Indicates whether the request was successful. string
ruid Specifies the unique id of the request. string You can send this id to Booking.com customer support if you run into an issue. This can help to understand what went wrong.

Retrieving children prices

Roomrate-date and roomrate level

You can retrieve children pricing in one of the following two ways:

Retrieving children prices on the roomrate-date level

POST https://supply-xml.booking.com/hotels/xml/roomrateavailability

The POST /xml/roomrateavailability enables you to retrieve existing children prices per property on the roomrate-date (inventory) level.

→ To retrieve existing children prices on the roomrate level (derived pricing), see retrieving children prices on the roomrate level.

Request body parameters

The following table describes the body parameters that you must add.

Parameter Attribute Description Type Required/Optional Notes
request Contains the request elements. object required
> hotel_id Specifies the unique id of the property. integer required
> start_date Specifies the starting point (date) from when you want to retrieve inventory details. date required
> number_of_days Specifies the amount of days, starting from start_date, for which you want to retrieve inventory details. integer required
> room_level Indicates whether you want to retrieve inventory on the room level or rate level. boolean optional Default value is 0, with 0 being rate level and 1 being room level.
> room_id Specifies the room type id if you want to filter by room type. integer optional

Request body example

<request>
  <hotel_id>367456</hotel_id>
  <number_of_days>20</number_of_days>
  <start_date>2021-09-19</start_date>
  <room_level>1</room_level>
  <room_id>12302</room_id>
</request>

Response body example

The following is a successful response body example:

<result>
   <room room_id="696334301">
       <date booked="1" cancelled="0" min_contracted_rooms="0" min_contracted_rooms_until="0" rooms_to_sell="3" value="2021-08-02">
           <rate booked="1" cancelled="0" closed="0" closed_on_arrival="0" closed_on_depart="0" exact_stay_arrival="0" length_of_stay="" max_advance_res="" max_stay_arrival="0" max_stay_through="0" min_advance_res="" min_contracted_rooms="0" min_contracted_rooms_until="0" min_stay_arrival="0" min_stay_through="2" policygroup="" price="774" price_single="0" rate_id="7473">
               <additional_guests>
                   <price type="child" additional_guest_number="1" from_age="1" to_age="5" age_bucket_id="1" additional="100"/>
                   <price type="child" additional_guest_number="2" from_age="1" to_age="5" age_bucket_id="1" percentage="10"/>
               </additional_guests>
           </rate>
      </date>
   </room>
</result>

Response body elements

The following table only describes the response body elements that concern children pricing.

Element Attribute Description Type Notes
>>>> additional_guests Contains the price elements for children. array
>>>>> price Contains the children pricing details. object
type Specifies that the prices are for children. string
additional_guest_number Specifies the order of prices within the same age bucket. integer For example: Price for 1 (first child) is 5000, while price for 2 (second child) is 2500, and 3 (third child) is free (0). Default value is 0, meaning all prices are the same for children in the specified age bucket.
age_bucket_id Specifies the id of the property-level age bucket. integer
from_age Specifies the beginning of an age range. integer
to_age Specifies the end of an age range and is inclusive. integer
additional Specifies the fixed price for a child within a certain age bucket. integer
percentage Specifies the price for the child as a percentage of the adult price. integer Possible value between 0 and 100.

Retrieving children prices on the roomrate level

POST https://supply-xml.booking.com/hotels/xml/roomrates

The POST /xml/roomrates enables you to retrieve existing children prices per property on the roomrate level, which mainly refers to derived pricing.

Request body parameters

The following table describes the body parameters that you must add.

Parameter Attribute Description Type Required/Optional Notes
request Contains the request elements. object required
> hotel_id Specifies the unique id of the property. integer required

Request body example

<request>
  <hotel_id>6238539</hotel_id>
</request>

Response body example

The following is a successful response body example:

<rooms>
   <room id="696334301" hotel_id="6963343" hotel_name="hotel_name" max_children="0" room_name="Two-Bedroom House">
       <rates>
           <rate id="7473" fixed_occupancy="4" max_persons="4" policy="General" policy_id="104557280" rate_name="Ashling - 4NIGHTSP">
               ...
               <pricing type="RLO">
                   <additional_guests>
                       <price type="child" additional_guest_number="1" from_age="1" to_age="5" age_bucket_id="1" additional="44"/>
                       <price type="child" additional_guest_number="2" from_age="1" to_age="5" age_bucket_id="1" percentage="33"/>
                   </additional_guests>
               </pricing>
           </rate>
        </rates>
    </room>
</rooms>

Response body elements

The following table only describes the response body elements that concern children pricing.

Parameter Attribute Description Type Required/Optional Notes
>>>>> additional_guests Contains the price elements for children. array required
>>>>>> price Contains the children pricing details. object required
type Specifies that the prices are for children. string required You must use child to signal that the prices are for children only.
additional_guest_number Specifies the order of prices within the same age bucket. integer optional This means that you can set different prices per child within the same age bucket age range. For example: Price for 1 (first child) is 5000, while price for 2 (second child) is 2500, and 3 (third child) is free (0). Default value is 0, meaning all prices are the same for children in the specified age bucket.
age_bucket_id Specifies the id of the property-level age bucket. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
from_age Specifies the beginning of an age range. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
to_age Specifies the end of an age range and is inclusive. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
additional Specifies the fixed price for a child within a certain age bucket. integer required* Values must be with two decimals (100.00). The price cannot exceed the adult price for the roomrate. You must use either additional or percentage.
percentage Specifies the price for the child as a percentage of the adult price. integer required Possible value between 0 and 100. You must use either additional or percentage.

Removing children pricing

OTA or BXML

You can remove children pricing in one of the following two ways:

Removing children pricing: OTA

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

The POST /ota/OTA_HotelRateAmountNotif also enables you to remove children pricing by sending an empty AdditionalGuestAmounts object.

Request body parameters

The following table only describes the body parameters that concern children pricing. Ensure that you include adult prices for the roomrate in the request body to not remove other existing information because of overlay logic.

Parameter Attribute Description Type Required/Optional Notes
>>> AdditionalGuestAmounts Contains the AdditionalGuestAmount elements. array required
>>>> AdditionalGuestAmount Contains the children pricing details. object required
AgeQualifyingCode Specifies that the prices are for children. integer required You must use 8 to signal that the prices are for children only.
AgeBucketID Specifies the id of the property-level age bucket. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
MinAge Specifies the beginning of an age range. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
MaxAge Specifies the end of an age range and is inclusive. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
Amount Specifies the price for a child within a certain age bucket. integer required* The price cannot exceed the adult price for the roomrate. You must use either Amount and DecimalPlaces or Percentage.
DecimalPlaces Specifies the number of decimal places to apply to Amount. integer required* You must use either Amount and DecimalPlaces or Percentage.
Percentage Specifies the price for the child as a percentage of the adult price. integer required Possible value between 0 and 100. You must use either Amount and DecimalPlaces or Percentage.
AdditionalGuestNumber Specifies the order of prices within the same age bucket. integer optional This means that you can set different prices per child within the same age bucket age range. For example: Price for 1 (first child) is 5000, while price for 2 (second child) is 2500, and 3 (third child) is free (0).

Request body example

<OTA_HotelRateAmountNotifRQ>
  <RateAmountMessages> 
    <RateAmountMessage LocatorID="1">
    <StatusApplicationControl Start="2021-11-17" End="2021-12-18" RatePlanCode="7473" InvTypeCode="696334301"/>
    <Rates>
      <Rate>
        <BaseByGuestAmts>
          <BaseByGuestAmt AmountAfterTax="16900" DecimalPlaces="2" CurrencyCode="EUR"/>
          </BaseByGuestAmts>
        <AdditionalGuestAmounts>
        </AdditionalGuestAmounts>
      </Rate>
    </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Response body example

The following is a successful response body example:

<OTA_HotelRateAmountNotifRS>
  <Success />
</OTA_HotelRateAmountNotifRS>

Response body elements

The following table describes the response elements:

Element Description Type Notes
OTA_HotelRateAmountNotifRS Contains the response data. object
> success Indicates whether the request was successful. string
ruid Specifies the unique id of the request. string You can send this id to Booking.com customer support if you run into an issue. This can help to understand what went wrong.

Removing children pricing: BXML

POST https://supply-xml.booking.com/hotels/xml/availability

The POST /xml/availability also enables you to remove children pricing by sending an empty additonal_guests object.

Request body parameters

The following table only describes the body parameters that concern children pricing. Ensure that you include adult prices for the roomrate in the request body to not remove other existing information because of overlay logic.

Parameter Attribute Description Type Required/Optional Notes
>>> additional_guests Contains the price elements for children. array required
>>>> price Contains the children pricing details. object required
type Specifies that the prices are for children. string required You must use child to signal that the prices are for children only.
additional_guest_number Specifies the order of prices within the same age bucket. integer optional This means that you can set different prices per child within the same age bucket age range. For example: Price for 1 (first child) is 5000, while price for 2 (second child) is 2500, and 3 (third child) is free (0).
age_bucket_id Specifies the id of the property-level age bucket. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
from_age Specifies the beginning of an age range. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
to_age Specifies the end of an age range and is inclusive. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
additional Specifies the fixed price for a child within a certain age bucket. integer required* Values must be with two decimals (100.00). The price cannot exceed the adult price for the roomrate. You must use either additional or percentage.
percentage Specifies the price for the child as a percentage of the adult price. integer required Possible value between 0 and 100. You must use either additional or percentage.

Request body example

<request>
  <hotel_id>1719757</hotel_id>
  <version>1.0</version>
  <room id="696334301">
    <date from="2021-08-02" to="2021-08-10">
      <rate id="7473" />
      <price>774.00</price>
      <additional_guests>
      </additional_guests>
    </date>
  </room>
</request>

Response body example

The following is a successful response body example:

<ok></ok>

Response body elements

The following table describes the response elements:

Element Description Type Notes
ok Indicates whether the request was successful. string
ruid Specifies the unique id of the request. string You can send this id to Booking.com customer support if you run into an issue. This can help to understand what went wrong.

Removing children pricing on the roomrate level (derived pricing)

POST https://supply-xml.booking.com/hotels/xml/derivedprices

The POST /xml/derivedpricesalso enables you to remove children pricing by sending an empty additonal_guests object.

Request body parameters

The following table the body parameters that you must add.

Parameter Attribute Description Type Required/Optional Notes
request Contains the request elements. object required
> rooms Contains the room elements. array required
>> room Contains the room and roomrate details. object required
id Specifies the unique id of the room type. integer required
>>> rates Contains the rate elements. array required
>>>> rate Contains the rate and roomrate details. object required
id Specifies the unique id of the rate plan. integer required
leading Specifies the leading occupancy (from which the specified prices derive from). integer required
>>>>> occupancy Contains the rate and roomrate details. object required
persons Specifies the occupancy amount for the derived price. integer required
additional Specifies the unique id of the room type. integer required
>>>>> additional_guests Contains the price elements for children. array required
>>>>>> price Contains the children pricing details. object required
type Specifies that the prices are for children. string required You must use child to signal that the prices are for children only.
additional_guest_number Specifies the order of prices within the same age bucket. integer optional This means that you can set different prices per child within the same age bucket age range. For example: Price for 1 (first child) is 5000, while price for 2 (second child) is 2500, and 3 (third child) is free (0). Default value is 0, meaning all prices are the same for children in the specified age bucket.
age_bucket_id Specifies the id of the property-level age bucket. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
from_age Specifies the beginning of an age range. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
to_age Specifies the end of an age range and is inclusive. integer required* You must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
additional Specifies the fixed price for a child within a certain age bucket. integer required* Values must be with two decimals (100.00). The price cannot exceed the adult price for the roomrate. You must use either additional or percentage.
percentage Specifies the price for the child as a percentage of the adult price. integer required Possible value between 0 and 100. You must use either additional or percentage.

Request body example

<request>
  <hotel_id>6238539</hotel_id>
</request>

Response body example

The following is a successful response body example:

<rooms>
   <room id="696334301" hotel_id="6963343" hotel_name="hotel_name" max_children="0" room_name="Two-Bedroom House">
       <rates>
           <rate id="7473" fixed_occupancy="4" max_persons="4" policy="General" policy_id="104557280" rate_name="Ashling - 4NIGHTSP">
               ...
               <pricing type="RLO">
                   <additional_guests>
                       <price type="child" additional_guest_number="1" from_age="1" to_age="5" age_bucket_id="1" additional="44"/>
                       <price type="child" additional_guest_number="2" from_age="1" to_age="5" age_bucket_id="1" percentage="33"/>
                   </additional_guests>
               </pricing>
           </rate>
        </rates>
    </room>
</rooms>

Response body elements

The following table describes the response elements:

Element Description Type Notes
ok Contains the response data. object