Last updated
This API is in closed beta

The API functionality is in closed beta phase. Currently, the closed beta is available only for select providers. Make sure to direct any questions during the beta phase to your Booking.com contact person via the appropriate channels.

Managing business models

You can sell room inventory on Booking.com by choosing from the following two business models:

  • commission model (default)
  • net rate model (new)

In the future, we plan to roll out more business models to support different selling strategies.

Difference between the Commission rate and Net rate model

This section outlines the difference between the two models. Properties typically engage with Online Travel Agencies (OTAs) using one or both of these models to sell their room inventory.

Featurescommission modelNet rate modelDescription
Commission-basedYesNoIn this model, the property sets the price, and the OTA retains a percentage of the booking value as a commission.
Property provides a rate to the OTAYesYesIn this model, although the property provides a 'net rate' to the OTA, the OTA then adds its own margin to determine the final price presented to the guests.

Supported actions

This section outlines the actions you can perform once a property has signed up for a business model.

Query property business models

Use the business_models/properties endpoint to retrieve the eligible business models available for a property or a group of properties.

You can specify one of the following query parameters:

  • property_id: The ID of the property. You can also specify multiple property IDs separated by commas. Do not specify this parameter if you specify the property's business model ID. If both are specified, the property_business_model_id takes precedence. The endpoint ignores the property_id parameter.
  • property_business_model_id: The ID of the property's business model. Do not specify this parameter if you specify the property ID. If both are specified, the property_business_model_id takes precedence. The endpoint ignores the property_id parameter.
  • business_model: The type of business model.
Query URL length limit

When adding multiple property IDs, make sure to not exceed the URL length limit of 2048 characters. This roughly translates to 280-300 properties per request. Exceeding this limit returns a HTTP 500 error.

GET 
https://supply-xml.booking.com/business_models/properties?property_id={{property_id}}&property_business_model_id={{property_business_model_id}}&business_model={{business_model}}

Query parameters

The following table describes the elements you can specify in the query:

ElementDescriptionTypeRequired/
Optional
Notes
property_idSpecifies the unique ID of the property.integerrequiredOptional if property_business_model_id is specified.
property_business_model_idSpecifies the unique ID of the property's business model.integerrequiredOptional if property_id is specified.
business_modelSpecifies the type of business model.enumerated stringoptionalPossible values are:
  • commission_rate
  • net_rate

Response body elements

The following table describes the response elements:

ElementDescriptionTypeNotes
dataRoot elementobject
property_idSpecifies the unique ID of the property.integer-
property_business_model_idSpecifies the unique ID of the property's business model.integer-
business_modelSpecifies the type of business model.enumerated stringPossible values are:
  • commission_rate
  • net_rate
attributesSpecifies the attributes of the business model.object-
> is_netSpecifies whether the business model is a net rate model.boolean-
warningsContains any warnings in the response.object-
errorsContains any errors in the response.object-
metaContains metadata information about the response.object-
> ruidSpecifies the unique request ID.stringYou can share this ID with Booking.com customer support when you run into an issue. This can help in understanding what went wrong.

Response body

The following is a sample response body:

{
    "data": [
        {
            "attributes": {
                "is_net": false
            },
            "property_business_model_id": 5780556,
            "business_model": "commission_rate",
            "property_id": 8011855
        }
    ],
    "meta": {
        "ruid": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    },
    "errors": []
}

Attach business model to a rate plan

Use the v1.1 OTA_HotelRatePlanNotif endpoint to attach a business model when creating a rate plan.

Following are few important considerations to note:

  • You can specify a business model only when creating a rate plan, and cannot change it later.
  • Make sure to use the v1.1 OTA_HotelRatePlanNotif endpoint when attaching a business model.
  • You cannot update a rate plan to specify a business model. Alternatively, you cannot change the business model of a rate plan after it is created.
  • While creating a roomrate using a rate plan with the net rate model, you must specify a non-refundable cancellation policy.

This section only covers information related to specifying the business model using the OTA_HotelRatePlanNotif endpoint. For more information on the rate plan and all the available request and response elements, see Managing rate plans.

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

Header parameter

HeaderDescriptionTypeRequired/
Optional
Notes
Accept-VersionSpecify the version number to get the API functionality specific to that version.stringoptionalCurrently supports the following versions:
- 1.1 (New version)
- 1.0 Soon to be deprecated.

Request body parameters

The following table describes the elements you must add in the request body specific to the business model change. For all related fields see the OTA_HotelRatePlanNotif endpoint documentation.

ElementAttributeDescriptionTypeRequired/OptionalNotes
OTA_HotelRatePlanNotifRQContains the RatePlans array.objectrequired
> RateplansContains the RatePlan objects.arrayrequired
HotelCodeSpecifies the unique ID of the property you update rate plans for.integerrequired
>> RatePlanContains a Description object, which contains the name of the rate plan.objectrequired
>>> BusinessModelContains the business model details.objectoptional
PropertyBusinessModelIdSpecifies the business model ID.integeroptional
BusinessModelSpecifies the business model name.enumerated stringoptionalDefault value: commission_rate

Request body

The following request body example attaches a business model to a rate plan.

<OTA_HotelRatePlanNotifRQ>
    <RatePlans HotelCode="6314570">
        <RatePlan RatePlanNotifType="New" RatePlanID="123456">
            <Description Name="Summer Rate" />
            <BusinessModel PropertyBusinessModelId="12345" BusinessModel=“net_rate”/>
        </RatePlan>
    </RatePlans>
</OTA_HotelRatePlanNotifRQ>

Response body

The following is a sample response body:

<?xml version='1.0' encoding='UTF-8'?>
<OTA_HotelRatePlanNotifRS 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_HotelRateAmountNotifRS.xsd" Target="Production" Version="3.000">
    <RatePlanCrossRefs>
        <RatePlanCrossRef RequestRatePlanCode="123456" ResponseRatePlanCode="58900005"/>
    </RatePlanCrossRefs>
    <Success/>
</OTA_HotelRatePlanNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX] -->

Query business model attached to a rate plan

Run the v1.2 POST /xml/rates endpoint, to query business model attached to the rate plan, in addition to retrieving rate plans for a property.

This section covers only the information related to retrieving the business model along with the rate plan details. For more information on retrieving rate plans, see Retrieving rate plans.

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

Request body

The following request body example retrieves all rate plans.

<request>
   <hotel_id>6314570</hotel_id>
   <show_rates_status>1</show_rates_status>
</request>

Response body

The following is a sample response body:

<rates>
    <rate id="18045111" active="1" hotel_id="6314570" hotel_name="The Tech W" property_business_model_id='12345' business_model= “net_rate” />Non-refundable rate</rate>
    <rate id="19454895" active="1" hotel_id="6314570" hotel_name="The Tech W" property_business_model_id='12345' business_model= “net_rate”/>Fully flexible</rate>
    <rate id="20275653" active="0" hotel_id="6314570" hotel_name="The Tech W" property_business_model_id='12345' business_model= “net_rate”/>Standard rate</rate>
</rates>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX] -->

Response body parameters

The following table describes the response elements:

ElementAttributeDescriptionTypeNotes
ratesContains the rate objects.object
> rateContains the rate plan information.object
idSpecifies the unique Booking.com ID of the rate plan.integer
activeIndicates whether the rate plan is active or deactivated.booleanPossible values are: 1 (active) and 0 (deactivated)
hotel_idSpecifies the unique ID of the property you retrieved the rate plans for.integer
hotel_nameSpecifies the name of the property you retrieved the rate plans for.integer
is_child_rateSpecifies whether the rate plan has a rate relation with a parent rate plan.booleanPossible value: 1 (Yes, rate plan is a child rate plan)
property_business_model_idSpecifies the business model ID.integer
business_modelSpecifies the business model name.enumerated stringPossible values are:
  • commission_rate
  • net_rate
ruidSpecifies the unique ID of the request.stringYou can send this ID to Booking.com customer support if you run into an issue. This can help to understand what went wrong.

Query business model information when viewing roomrate

You can use one of the following endpoints to retrieve the business model inherited by the roomrate:

  • The v1.3 of the GET OTA_HotelProductNotif endpoint
  • The v1.2 /hotels/xml/roomrates endpoint.

Note that you cannot attach a business model to a roomrate. The business model that is attached to the roomrate is inherited from the rate plan.

This section covers only the information related to retrieving the business model along with the roomrates details. For more information, see the respective endpoint documentation:

Using v1.3 of the OTA_HotelProductNotif endpoint

This section provides information about using the v1.3 of the GET OTA_HotelProductNotif endpoint to retrieve the business model inherited by the roomrate.

Response body parameters

The following is a sample response body:

<?xml version="1.0" encoding="UTF-8" ?>
<OTA_HotelProductNotifRS>
    <HotelProducts HotelCode="1">
        <HotelProduct ReadOnly="true" ChildRate="true">
            <RoomTypes>
                <RoomType RoomTypeCode="2" MaxOccupancy="5" />
            </RoomTypes>
            <RatePlans>
                <RatePlan RatePlanCode="11" PropertyBusinessModelId='12345' BusinessModel=“net_rate”/> 
            </RatePlans>
            <ValueAddInclusions>
                <MealPlan MealPlanCode="0" />
            </ValueAddInclusions>
            <PolicyInfo>
                <BookingRules>
                    <BookingRule MinAdvancedBookingOffset="P10D" />
                </BookingRules>
                <CancelPolicy>
                    <CancelPenalty PolicyId="325235" PolicyName="general" PolicyCode="222" />
                    </CancelPolicy>
                <GuaranteePaymentPolicy>
                    <GuaranteePayment EffectiveFrom="after_cancellation_fee_begins" PrePaymentRequired="true" />
                </GuaranteePaymentPolicy>
            </PolicyInfo>
            <ValueAddedServices Name="additional package">
                <ValueAddedService serviceId="21" />
            </ValueAddedServices>
        </HotelProduct>
    </HotelProducts>
</OTA_HotelProductNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX] -->

Response body parameters

The following table provides a snippet of the response elements to show the business model parameters. For a complete list of response parameters, see the GET OTA_HotelProductNotif documentation.

ElementAttributeDescriptionTypeNotes
OTA_HotelProductNotifRSContains the response data.object
> HotelProductsContains the roomrates details for a property.object
HotelCodeSpecifies the unique ID of the property.integer
>> HotelProductContains more information about the roomrate.object
ReadOnlySpecifies whether the rate plan is read only.booleanYou can set the ReadOnly property only through the Extranet.
ChildRateSpecifies whether the rate plan has a rate relation with a parent rate plan. If true then you will find a RateRelation element in the object.boolean
>>> RoomTypesContains the roomtype informationobject
RoomTypeCodeSpecifies the unique Booking.com ID of the room type.integer
MaxOccupancySpecifies the maximum number of adults allowed in the room type.integer
>>> RatePlansContains rate plan informationobject
>>>> RatePlanContains individual rate plan informationobject
RatePlanCodeSpecifies the unique Booking.com ID of the rate plan.integer
PropertyBusinessModelIdSpecifies the business model ID unique to the property.integer
BusinessModelSpecifies the business model name.enumerated stringPossible values are:
  • commission_rate
  • net_rate

Using v1.4 of the /hotels/xml/roomrates endpoint

This section provides information about using the v1.4 of the POST /hotels/xml/roomrates endpoint to retrieve the business model inherited by the roomrate.

Response body parameters

The following is a sample response body:

<?xml version='1.0' encoding='UTF-8' ?>
<roomrates>
    <rooms>
        <room id="801185509" hotel_id="8011855" hotel_name="HillTop Hotel" room_name="Penthouse Apartment">
            <rates>
                <rate id="25278032" max_persons="7" policy="General" policy_id="341337682" rate_name="summer rate" fixed_occupancy="2" property_business_model_id='12345' business_model= “net_rate”/>
                    <meal_plan meal_plan_code="10" />
                    <policies>
                        <booking_rules>
                            <booking_rule min_advanced_booking_offset="P1D" />
                        </booking_rules>
                        <cancel_policy>
                            <cancel_penalty policy_code="62" />
                            <policy_overrides>
                                <policy_override start_date="2024-01-16" end_date="2024-02-23" policy_code="12" />
                            </policy_overrides>
                        </cancel_policy>
                   </policies>
                </rate>
            </rates>
        </room>
     </rooms>
</roomrates>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX] -->

Response body parameters

The following table provides a snippet of the response elements to show the business model parameters. For a complete list of response parameters, see the POST /xml/roomrates documentation.

ElementAttributeDescriptionTypeNotes
roomratesContains the response details of the roomrate.object
roomsContains the room objects.object
> roomContains the room type information.object
idSpecifies the unique Booking.com ID of the room type.integer
hotel_idSpecifies the unique ID of the property.integer
hotel_nameSpecifies the name of the property.string
room_nameSpecifies the name of the room type.string
>> ratesContains the rate objects.object
>>> rateContains the rate plan information.object
idSpecifies the unique Booking.com ID of the rate plan.integer
is_child_rateSpecifies whether the rate plan has a rate relation with a parent rate plan.booleanPossible value: 1 (Yes, rate plan is a child rate plan)
fixed_occupancyOnly applicable for [derived pricing types (RLO)][derived-pricing-type].
Shows the maximum number of occupants specified when creating or updating a roomrate.
integerThis value can be different from the max_persons value set while [creating the roomtype][creating-a-room-type].
max_personsSpecifies the maximum number of adults allowed in the room type.integer
policySpecifies the name of the policy.string
policy_idSpecifies the unique ID of the policy.integer
rate_nameSpecifies the name of the rate plan.string
property_business_model_idSpecifies the business model ID unique to the property.integer
business_modelSpecifies the business model name.enumerated stringPossible values are:
  • commission_rate
  • net_rate