A roomrate is a unique combination of room type, rate plan, and conditions. You need roomrates to push inventory (availability) and rates (prices).
Use this guide to create, update, remove, and retrieve roomrates for a property with the OTA_HotelProductNotif endpoint. It also explains how to configure policies, restrictions, value-added services, and meal plans.
A roomrate is created by linking a room type and a rate plan, and optionally attaching conditions such as a cancellation policy, meal plan, booking restrictions, value-added services, and additional children prices. Before creating a roomrate, you must first create a room type using the Rooms API and a rate plan using the OTA_HotelRatePlanNotif endpoint.
A policy is a combination of cancellation and prepayment terms defined at the property level. When creating a roomrate, you can assign an existing property-level policy using its PolicyId. If you do not specify one, the default property policy is assigned. To create and manage policies and find available PolicyId values, use the Policies API.
An override policy is a regular cancellation policy that overwrites the main policy of a roomrate for a specified date range. For example, a property that uses a flexible policy for most of the year can assign a non-refundable override policy for peak season dates.
Booking restrictions specify when a roomrate is available to book. You can set the following restrictions:
MinAdvancedBookingOffset: Specifies the minimum amount of time in advance a room must be booked, relative to midnight on the check-in date (hotel local time). The search date is counted as one of the days in the restriction length. For example,P5Hmeans the room must be booked before 19:00 on the check-in date.MaxAdvancedBookingOffset: Specifies the maximum amount of time in advance a room can be booked, relative to midnight on the check-in date (hotel local time). The search date is counted as one of the days in the restriction length. For example,P14Dmeans the room can be booked a maximum of 14 days before the check-in date.ReleaseTimeOfDayStart: Specifies the time of day from which the room becomes available to book. For example,10:15.ReleaseTimeOfDayEnd: Specifies the time of day after which the room can no longer be booked. For example,18:00.
Value adds are services or products offered to guests as part of the room reservation, with the cost included in the room rate. For more information, see value-added services.
The OTA_HotelProductNotif endpoint supports the following core operations:
- Creating a roomrate
- Updating a roomrate
- Removing a roomrate
- Retrieving roomrates (using the OTA or B.XML endpoint)
Use the OTA_HotelProductNotif endpoint to create a roomrate for your property.
POST https://supply-xml.booking.com/hotels/ota/OTA_HotelProductNotif| Header | Description | Type | Required | Notes |
|---|---|---|---|---|
Accept-Version | Specify the version number to get the API functionality specific to that version. | string | Required | Supports the following values: - 1.3: Current version |
Content-Type | Request content type | string | Required | Must be application/xml |
Before creating a roomrate using the OTA_HotelProductNotif endpoint, you must have created the following resources.
Mandatory
- Property ID
- Room type ID - To create a room type using the
Rooms API, see Managing Units. - Rate plan ID - To create a rate plan using the
OTA_HotelRatePlanNotifendpoint, see Creating rate plans.
Recommended
- Policy ID: It is strongly recommended to explicitly assign a
PolicyIdwhen creating a roomrate. If omitted, the API silently assigns the property's default policy, which may not be the intended cancellation terms for the roomrate.
Specify the PolicyId of an existing property-level policy in the CancelPenalty element. If omitted, the API assigns the property's default policy. A roomrate always has a policy assigned — you can reassign it later using an Overlay request, but you cannot remove it entirely.
To assign an override policy (a policy that applies only for a specific date range), specify the PolicyId in the OverridePolicies element.
The following table describes the elements you must add in the request body:
| Element | Attribute | Description | Type | Required/Optional | Notes |
|---|---|---|---|---|---|
OTA_HotelProductNotifRQ | Contains the HotelProducts array. | object | required | ||
> HotelProducts | Contains the HotelProduct objects. | array | required | ||
HotelCode | Specifies the unique ID of the property you create roomrates for. | integer | required | ||
>> HotelProduct | Contains the roomrate information. | object | required | ||
ProductNotifType | Specifies whether the request is to create a roomrate (New) or modify an existing one (Overlay). | enum | required | Possible values are New and Overlay. You must use New to create a roomrate. | |
>>> RoomTypes | Contains a RoomType object. | object | required | ||
>>>> RoomType | Contains the room type information. | object | required | ||
RoomTypeCode | Specifies the room type id. | integer | required | ||
MaxOccupancy | Specifies the maximum occupancy of the roomrate. | integer | optional | Value must not exceed the room's max adult occupancy. Switches pricing type to RLO. Warning: Switching pricing type removes all existing prices. | |
>>> RatePlans | Contains a RatePlan object. | object | required | ||
>>>> RatePlan | Contains the rate plan information. | object | required | ||
RatePlanCode | Specifies the rate plan id. | integer | required | ||
>>> ValueAddInclusions | Contains a MealPlan object. | object | optional | ||
>>>> MealPlan | Contains the meal plan information. | object | optional | If you do not include this element, the default is no meal plan included. | |
MealPlanCode | Specifies the meal plan id. | integer | optional | To see the list of meal plan codes at Booking.com, see meal plan codes. | |
>>> PolicyInfo | Contains the cancellation and booking policy objects. | object | Optional | ||
>>>> CancelPolicy | Contains the CancelPenalty objects. | object | Optional | ||
>>>>> CancelPenalty | Contains the policy information. | object | Optional | ||
PolicyId | Specifies the policy ID to assign to the roomrate. The ID must belong to one of the policies created for the property. If not specified, the property's default policy is assigned. To get a list of all policies for a property, see retrieve the property's existing policies. | integer | Optional | Default: The property's default policy is assigned. You can identify it by looking for <Tags><Default/></Tags> in the GET /policies response. | |
>>>> OverridePolicies | Contains the OverridePolicy objects. | object | Optional | ||
>>>>> OverridePolicy | Contains the override policy information, which overwrites other policies set for this roomrate on the dates specified within the object. | object | Optional | ||
PolicyId | Specifies the ID of the override policy. | integer | Optional | ||
>>>>>> BookDates | Contains the BookDate objects. | object | optional | ||
>>>>>>> BookDate | Contains the book date information, which specify the dates when the override policy overwrites other policies. | object | optional | ||
Start | Specifies the start date of the override policy. | string | optional | Follows the format: YYYY-MM-DD. | |
End | Specifies the end date of the override policy. | string | optional | Follows the format: YYYY-MM-DD. | |
>>>>>> ActiveWeekdays | Contains the ActiveWeekDay objects. | object | optional | ||
>>>>>>> ActiveWeekday | Contains the active week day information, which specify the days when the override policy overwrites other policies. | object | optional | ||
Day | Specifies the name of the day of the week. | string | optional | Possible values are: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, and Sunday. | |
>>>> BookingRules | Contains the BookingRule objects. | object | optional | Overlay behavior: Omitting this element preserves all existing booking restrictions. When present, all restrictions are first cleared, then only the values you include are applied. To keep an existing restriction, re-include it explicitly. Send an empty <BookingRules/> to clear all restrictions. | |
>>>>> BookingRule | Contains the booking policy information. | object | optional | ||
MinAdvancedBookingOffset | Specifies the minimum amount of time in advance a room type must be booked, relative to midnight on the check-in date (hotel local time). The search date is counted as one of the days in the restriction length. | string | optional | Use whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)? | |
MaxAdvancedBookingOffset | Specifies the maximum amount of time in advance a room type can be booked, relative to midnight on the check-in date (hotel local time). The search date is counted as one of the days in the restriction length. | string | optional | Use whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)? | |
ReleaseTimeOfDayStart | Specifies the time of the day the room type can start being booked. | HH:MM | optional | This allows time intervals of 15 minutes starting at midnight. For example: 10:15. | |
ReleaseTimeOfDayEnd | Specifies the time of the day the room type can no longer be booked. | HH:MM | optional | This allows time intervals of 15 minutes starting at midnight. For example: 18:00. |
| >>> ValueAddedServices | | Specifies the details for the value-added services. To learn more about valueadds, see the introduction to valueadds. | object | Optional | Adding value-added service is optional. But when specified, depending on the value-added service, most sub-elements are mandatory. | | | Name | Specifies a name for the value-add collection. | string | Required | | | >>>> ValueAddedService | | Specifies details for each of the value-added services. For the full list of supported service IDs and their required attributes, see the Catalog API. | object | Required | Only value adds v2 is supported. | | >>> TPA_Extensions | | Contains additional configuration for the roomrate. | object | Optional | | | >>>> PricingType | | Specifies the pricing type for the roomrate. | object | Optional | If omitted, the pricing model is determined automatically. See Set up pricing type for the full logic. | | | Value | Specifies the pricing model to use. | enum | Optional | Possible values: Standard, LOS, OBP. LOS and OBP require property-level enablement. Warning: Switching pricing type removes all existing prices. |
The pricing model is determined in the following order of precedence:
MaxOccupancyis set — pricing model is automatically set toRLO(derived pricing), regardless ofPricingType.PricingTypeis explicitly specified — the specified value is used:Standard— uses standard pricing.OBP— uses occupancy-based pricing.LOS— uses length-of-stay pricing.
- Existing active roomrate — if no explicit type is set and the roomrate already exists, the existing pricing model is preserved.
- New roomrate with no explicit type — the pricing model is inherited from the property's settings and existing rates for the same rate plan:
- If LOS is enabled for the property and there are existing active LOS rates for the rate plan (or it is a brand new rate plan),
LOSis used. - If OBP is enabled for the property and there are existing active OBP rates for the rate plan (or it is a brand new rate plan),
OBPis used. - Otherwise, defaults to
Standard.
- If LOS is enabled for the property and there are existing active LOS rates for the rate plan (or it is a brand new rate plan),
To explicitly set the pricing type, add the TPA_Extensions element inside HotelProduct:
<HotelProduct ProductNotifType="New">
...
<TPA_Extensions>
<PricingType Value="LOS" />
</TPA_Extensions>
</HotelProduct>For more information, see pricing models.
<OTA_HotelProductNotifRQ>
<HotelProducts HotelCode="64231">
<HotelProduct ProductNotifType="New">
<RoomTypes>
<RoomType RoomTypeCode="6423112" />
</RoomTypes>
<RatePlans>
<RatePlan RatePlanCode="12483478" />
</RatePlans>
<ValueAddInclusions>
<MealPlan MealPlanCode="19" />
</ValueAddInclusions>
<PolicyInfo>
<BookingRules>
<BookingRule MinAdvancedBookingOffset="P1D" />
<BookingRule MaxAdvancedBookingOffset="P14D" />
</BookingRules>
<CancelPolicy>
<CancelPenalty PolicyId="350338154"/>
</CancelPolicy>
<OverridePolicies>
<OverridePolicy PolicyId="341337684">
<BookDates>
<BookDate Start="2021-06-06" End="2021-06-29"/>
<BookDate Start="2021-07-06" End="2021-07-29"/>
</BookDates>
<ActiveWeekdays>
<ActiveWeekday Day="Friday"/>
<ActiveWeekday Day="Saturday"/>
<ActiveWeekday Day="Sunday"/>
</ActiveWeekdays>
</OverridePolicy>
</OverridePolicies>
</PolicyInfo>
<ValueAddedServices Name="additional package">
<ValueAddedService ServiceId="3" creditAmount="50" accruedDaily="false" currencyCode="USD"/>
<ValueAddedService ServiceId="1" parkingType="Self"/>
</ValueAddedServices>
</HotelProduct>
</HotelProducts>
</OTA_HotelProductNotifRQ>
| Element | Attribute | Description | Type | Notes |
|---|---|---|---|---|
OTA_HotelProductNotifRS | Contains the response data. | object | ||
> Success | Indicates the success of the request. | object | ||
> Warnings | Groups a list of individual warnings. | object | - | |
>> Warning | Lists details of individual warnings. | object | Warnings can occur even if the response contains Success. | |
Code | OTA EWT code. | string | See Error codes. | |
Details | Contains additional context about where the warning occurred. | string | May include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the warning. | |
ShortText | Warning message. | string | - | |
> Errors | Groups a list of individual errors. | object | - | |
>> Error | Lists details of individual errors. | object | - | |
Code | OTA EWT code. | string | See Error codes. | |
Details | Contains additional context about where the error occurred. | string | May include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the error. | |
ShortText | Error message. | string | - | |
<!-- RUID: [...] --> | XML comment appended after the closing tag containing the unique request ID. | string | You can send this ID to Booking.com customer support if you run into an issue. |
<OTA_HotelProductNotifRS Version="3.000">
<Success />
</OTA_HotelProductNotifRS>
<!-- RUID: [UmFuZG9tSVYkc2RlIyh9YUedwgregreg3/GEVjlG+mTXmB9OkyhGlAKEMxDhfrI] --><OTA_HotelProductNotifRS Version="3.000">
<Errors>
<Error Code="497" ShortText="Room ID does not belong to the property. Room ID: 1234, Rate Id: 5678"/>
</Errors>
</OTA_HotelProductNotifRS>
<!-- RUID: [UmFuZG9tSVYkc2RlIyh9YUedwgregreg3/GEVjlG+mTXmB9OkyhGlAKEMxDhfrIcesvuhxkdje8uY] -->Use the OTA_HotelProductNotif endpoint to update an existing roomrate for your property.
Set ProductNotifType to Overlay to update an existing roomrate. Omitting a field from the request preserves its current value — you only need to include the fields you want to change. Exception: including the <BookingRules> element resets all booking restrictions before applying the values in the request. To keep an existing restriction, re-include it explicitly.
→ To retrieve your current roomrate information, see retrieving roomrates.
→ To retrieve the policy details, see Retrieve the property's existing policies.
When ValueAddedServices is present in the request, the entire bundle is replaced with the services you provide — any existing value adds not included are removed. To keep existing value adds, include them in the request alongside any new ones. To leave value adds unchanged, omit ValueAddedServices entirely.
POST https://supply-xml.booking.com/hotels/ota/OTA_HotelProductNotif| Header | Description | Type | Required | Notes |
|---|---|---|---|---|
Accept-Version | Specify the version number to get the API functionality specific to that version. | string | Required | Supports the following values: - 1.3: Current version |
Content-Type | Request content type | string | Required | Must be application/xml |
| Element | Attribute | Description | Type | Required/Optional | Notes |
|---|---|---|---|---|---|
OTA_HotelProductNotifRQ | Contains the HotelProducts array. | object | required | ||
> HotelProducts | Contains the HotelProduct objects. | array | required | ||
HotelCode | Specifies the unique ID of the property you create roomrates for. | integer | required | ||
>> HotelProduct | Contains the roomrate information. | object | required | ||
ProductNotifType | Specifies whether the request is to create a roomrate (New) or modify an existing one (Overlay). | enum | required | Possible values are New and Overlay. You must use New to create a roomrate. | |
>>> RoomTypes | Contains a RoomType object. | object | required | ||
>>>> RoomType | Contains the room type information. | object | required | ||
RoomTypeCode | Specifies the room type id. | integer | required | ||
MaxOccupancy | Specifies the maximum occupancy of the roomrate. | integer | optional | Value must not exceed the room's max adult occupancy. Switches pricing type to RLO. Warning: Switching pricing type removes all existing prices. | |
>>> RatePlans | Contains a RatePlan object. | object | required | ||
>>>> RatePlan | Contains the rate plan information. | object | required | ||
RatePlanCode | Specifies the rate plan id. | integer | required | ||
>>> ValueAddInclusions | Contains a MealPlan object. | object | optional | ||
>>>> MealPlan | Contains the meal plan information. | object | optional | If you do not include this element, the default is no meal plan included. | |
MealPlanCode | Specifies the meal plan id. | integer | optional | To see the list of meal plan codes at Booking.com, see meal plan codes. | |
>>> PolicyInfo | Contains the cancellation and booking policy objects. | object | Optional | ||
>>>> CancelPolicy | Contains the CancelPenalty objects. | object | Optional | ||
>>>>> CancelPenalty | Contains the policy information. | object | Optional | ||
PolicyId | Specifies the policy ID to assign to the roomrate. The ID must belong to one of the policies created for the property. If not specified, the property's default policy is assigned. To get a list of all policies for a property, see retrieve the property's existing policies. | integer | Optional | Default: The property's default policy is assigned. You can identify it by looking for <Tags><Default/></Tags> in the GET /policies response. | |
>>>> OverridePolicies | Contains the OverridePolicy objects. | object | Optional | Overlay behavior: Omitting this element preserves existing overrides. When present, the set of overrides is synced to exactly what you send — dates not included are removed. Send an empty <OverridePolicies/> to delete all overrides. | |
>>>>> OverridePolicy | Contains the override policy information, which overwrites other policies set for this roomrate on the dates specified within the object. | object | Optional | ||
PolicyId | Specifies the ID of the override policy. | integer | Optional | ||
>>>>>> BookDates | Contains the BookDate objects. | object | optional | ||
>>>>>>> BookDate | Contains the book date information, which specify the dates when the override policy overwrites other policies. | object | optional | ||
Start | Specifies the start date of the override policy. | string | optional | Follows the format: YYYY-MM-DD. | |
End | Specifies the end date of the override policy. | string | optional | Follows the format: YYYY-MM-DD. | |
>>>>>> ActiveWeekdays | Contains the ActiveWeekDay objects. | object | optional | ||
>>>>>>> ActiveWeekday | Contains the active week day information, which specify the days when the override policy overwrites other policies. | object | optional | ||
Day | Specifies the name of the day of the week. | string | optional | Possible values are: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, and Sunday. | |
>>>> BookingRules | Contains the BookingRule objects. | object | optional | Overlay behavior: Omitting this element preserves all existing booking restrictions. When present, all restrictions are first cleared, then only the values you include are applied. To keep an existing restriction, re-include it explicitly. Send an empty <BookingRules/> to clear all restrictions. | |
>>>>> BookingRule | Contains the booking policy information. | object | optional | ||
MinAdvancedBookingOffset | Specifies the minimum amount of time in advance a room type must be booked, relative to midnight on the check-in date (hotel local time). The search date is counted as one of the days in the restriction length. | string | optional | Use whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)? | |
MaxAdvancedBookingOffset | Specifies the maximum amount of time in advance a room type can be booked, relative to midnight on the check-in date (hotel local time). The search date is counted as one of the days in the restriction length. | string | optional | Use whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)? | |
ReleaseTimeOfDayStart | Specifies the time of the day the room type can start being booked. | HH:MM | optional | This allows time intervals of 15 minutes starting at midnight. For example: 10:15. | |
ReleaseTimeOfDayEnd | Specifies the time of the day the room type can no longer be booked. | HH:MM | optional | This allows time intervals of 15 minutes starting at midnight. For example: 18:00. |
| >>> ValueAddedServices | | Specifies the details for the value-added services. When present, replaces the entire existing bundle — include all services you want to keep. Omitting this element leaves existing value adds unchanged. To learn more, see the introduction to valueadds. | object | Optional | When specified, all sub-elements required by the value-added service type must be included. | | | Name | Specifies a name for the value-add collection. | string | Required | | | >>>> ValueAddedService | | Specifies details for each of the value-added services. For the full list of supported service IDs and their required attributes, see the Catalog API. | object | Required | Only value adds v2 is supported. | | >>> TPA_Extensions | | Contains additional configuration for the roomrate. | object | Optional | | | >>>> PricingType | | Specifies the pricing type for the roomrate. | object | Optional | | | | Value | Specifies the pricing model to use. | enum | Optional | Possible values: Standard (default), LOS, OBP. LOS and OBP require property-level enablement. Warning: Switching pricing type removes all existing prices. |
<OTA_HotelProductNotifRQ>
<HotelProducts HotelCode="64231">
<HotelProduct ProductNotifType="Overlay">
<RoomTypes>
<RoomType RoomTypeCode="6423112" />
</RoomTypes>
<RatePlans>
<RatePlan RatePlanCode="12483478" />
</RatePlans>
<ValueAddInclusions>
<MealPlan MealPlanCode="0" />
</ValueAddInclusions>
<PolicyInfo>
<BookingRules>
<BookingRule MinAdvancedBookingOffset="P1D" />
<BookingRule MaxAdvancedBookingOffset="P14D" />
</BookingRules>
<CancelPolicy>
<CancelPenalty PolicyId="350338154" />
</CancelPolicy>
<OverridePolicies>
<OverridePolicy PolicyId="341337684">
<BookDates>
<BookDate Start="2021-06-06" End="2021-06-29"/>
<BookDate Start="2021-07-06" End="2021-07-29"/>
</BookDates>
<ActiveWeekdays>
<ActiveWeekday Day="Friday"/>
<ActiveWeekday Day="Saturday"/>
</ActiveWeekdays>
</OverridePolicy>
</OverridePolicies>
</PolicyInfo>
<ValueAddedServices Name="additional package">
<ValueAddedService ServiceId="1" parkingType="Self"/>
<ValueAddedService ServiceId="10" amount="0.2" />
<ValueAddedService ServiceId="14" minHour="16"/>
<ValueAddedService ServiceId="17" numMinutes="30" />
</ValueAddedServices>
</HotelProduct>
</HotelProducts>
</OTA_HotelProductNotifRQ>
| Element | Attribute | Description | Type | Notes |
|---|---|---|---|---|
OTA_HotelProductNotifRS | Contains the response data. | object | ||
> Success | Indicates the success of the request. | object | ||
> Warnings | Groups a list of individual warnings. | object | - | |
>> Warning | Lists details of individual warnings. | object | Warnings can occur even if the response contains Success. | |
Code | OTA EWT code. | string | See Error codes. | |
Details | Contains additional context about where the warning occurred. | string | May include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the warning. | |
ShortText | Warning message. | string | - | |
> Errors | Groups a list of individual errors. | object | - | |
>> Error | Lists details of individual errors. | object | - | |
Code | OTA EWT code. | string | See Error codes. | |
Details | Contains additional context about where the error occurred. | string | May include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the error. | |
ShortText | Error message. | string | - | |
<!-- RUID: [...] --> | XML comment appended after the closing tag containing the unique request ID. | string | You can send this ID to Booking.com customer support if you run into an issue. |
<OTA_HotelProductNotifRS Version="3.000">
<Success />
</OTA_HotelProductNotifRS>
<!-- RUID: [UmFuZG9tSVYkc2RlIyh9YUedwgregreg3/GEVjlG+mTXmB9Owf2f+Kq=Mzyiykpi6Yx5oKzRKEMxDhfrI] -->
Use the OTA_HotelProductNotif endpoint to remove a roomrate by disconnecting the room type and rate plan.
To remove all existing value adds without removing the roomrate itself, specify an empty ValueAddedServices element using Overlay mode in ProductNotifType:
<OTA_HotelProductNotifRQ>
<HotelProducts HotelCode="{hotel_id}">
<HotelProduct ProductNotifType="Overlay">
....
<ValueAddedServices>
</ValueAddedServices>
....
</HotelProduct>
</HotelProducts>
</OTA_HotelProductNotifRQ>POST https://supply-xml.booking.com/hotels/ota/OTA_HotelProductNotif| Header | Description | Type | Required | Notes |
|---|---|---|---|---|
Accept-Version | Specify the version number to get the API functionality specific to that version. | string | Required | Supports the following values: - 1.3: Current version |
Content-Type | Request content type | string | Required | Must be application/xml |
| Element | Attribute | Description | Type | Required | Notes |
|---|---|---|---|---|---|
OTA_HotelProductNotifRQ | Contains the HotelProducts array. | object | Required | ||
> HotelProducts | Contains the HotelProduct objects. | array | Required | ||
HotelCode | Specifies the unique ID of the property. | integer | Required | ||
>> HotelProduct | Contains the roomrate information. | object | Required | ||
ProductNotifType | Specifies the purpose of the request. | enum | Required | Use Remove to remove a roomrate. | |
>>> RoomTypes | Contains a RoomType object. | object | Required | ||
>>>> RoomType | Contains the room type information. | object | Required | ||
RoomTypeCode | Specifies the room type ID. | integer | Required | ||
>>> RatePlans | Contains a RatePlan object. | object | Required | ||
>>>> RatePlan | Contains the rate plan information. | object | Required | ||
RatePlanCode | Specifies the rate plan ID. | integer | Required |
<OTA_HotelProductNotifRQ>
<HotelProducts HotelCode="64231">
<HotelProduct ProductNotifType="Remove">
<RoomTypes>
<RoomType RoomTypeCode="6423112" />
</RoomTypes>
<RatePlans>
<RatePlan RatePlanCode="12483478" />
</RatePlans>
</HotelProduct>
</HotelProducts>
</OTA_HotelProductNotifRQ>
| Element | Attribute | Description | Type | Notes |
|---|---|---|---|---|
OTA_HotelProductNotifRS | Contains the response data. | object | ||
> Success | Indicates the success of the request. | object | ||
> Warnings | Groups a list of individual warnings. | object | - | |
>> Warning | Lists details of individual warnings. | object | Warnings can occur even if the response contains Success. | |
Code | OTA EWT code. | string | See Error codes. | |
Details | Contains additional context about where the warning occurred. | string | May include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the warning. | |
ShortText | Warning message. | string | - | |
> Errors | Groups a list of individual errors. | object | - | |
>> Error | Lists details of individual errors. | object | - | |
Code | OTA EWT code. | string | See Error codes. | |
Details | Contains additional context about where the error occurred. | string | May include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the error. | |
ShortText | Error message. | string | - | |
<!-- RUID: [...] --> | XML comment appended after the closing tag containing the unique request ID. | string | You can send this ID to Booking.com customer support if you run into an issue. |
<OTA_HotelProductNotifRS Version="3.000">
<Success />
</OTA_HotelProductNotifRS>
<!-- RUID: [UmFuZG9tSVYkc2RlIyh9YUedwgregreg3/GcBkCkoW0/uhiPmwiL6pcbMzyiykpi6Yx5oKzRKEMxDhfrI] -->
Booking.com provides two endpoints to retrieve roomrate details using two different specifications:
GET
https://supply-xml.booking.com/hotels/ota/OTA_HotelProductNotifThe GET OTA_HotelProductNotif request enables you to retrieve active roomrates for a property. You can retrieve the relevant room type and rate plan IDs. Remember to use Booking.com IDs while creating availability and not your internal IDs.
You can also use this endpoint to retrieve policy override information for active roomrates.
| Header | Description | Type | Required/ Optional | Notes |
|---|---|---|---|---|
Accept-Version | Specify the version number to get the API functionality specific to that version. | string | optional | Version 1.3 is current and returns value-added services with v2 IDs in the response. Versions 1.0, 1.1, and 1.2 are deprecated; explicitly requesting them after the sunset date returns an HTTP 400 error. Unversioned requests use the current version. |
The following table describes the elements you can add in the query:
| Element | Description | Type | Required/Optional | Notes |
|---|---|---|---|---|
HotelCode | Specifies the unique ID of the property you want to retrieve the active rate plans for. | integer | required | |
OverridePolicyStart | Specifies the start of the date range for which you want to retrieve policy override information. | string | optional | Follows the format (YYYY-MM-DD). |
OverridePolicyEnd | Specifies the end of the date range for which you want to retrieve policy override information. | string | Required if OverridePolicyStart is specified | Follows the format (YYYY-MM-DD). |
IncludeReadOnly | Include roomrates that are read-only from the API. You cannot modify the read-only roomrates using the API. You can edit them only by using the Booking.com Extranet. | boolean | optional | Specify: 1 - Include read-only roomrates, 0 - Exclude read-only roomrates (default) |
SupportRateRewrite | If set, then the API skips rates that have been rewritten to another rate. | boolean | optional | Specify: 1 - Skip rewritten roomrates, 0 - Include rewritten roomrates (default) |
The following is a query parameter example:
https://supply-xml.booking.com/hotels/ota/OTA_HotelProductNotif?HotelCode=123&IncludeReadOnly=1&OverridePolicyStart=2023-03-01&OverridePolicyEnd=2023-04-01&SupportRateRewrite=0
The following is a successful response body example:
<?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" />
</RatePlans>
<ValueAddInclusions>
<MealPlan MealPlanCode="0" />
</ValueAddInclusions>
<PolicyInfo>
<BookingRules>
<BookingRule MinAdvancedBookingOffset="P10D" />
<BookingRule MaxAdvancedBookingOffset="P10D1H" />
<BookingRule ReleaseTimeOfDayStart="1" />
<BookingRule ReleaseTimeOfDayEnd="2" />
</BookingRules>
<CancelPolicy>
<CancelPenalty PolicyId="325235" PolicyName="general" PolicyCode="222" />
<TPA_Extensions>
<NoShowPolicy Penalty="default"/>
</TPA_Extensions>
</CancelPolicy>
<GuaranteePaymentPolicy>
<GuaranteePayment EffectiveFrom="after_cancellation_fee_begins" PrePaymentRequired="true" />
</GuaranteePaymentPolicy>
<OverridePolicies>
<OverridePolicy PolicyId="333" PolicyName="override1">
<BookDates>
<BookDate Start="2023-01-01" End="2023-01-02" />
</BookDates>
</OverridePolicy>
<OverridePolicy PolicyId="444" PolicyName="override2">
<BookDates>
<BookDate Start="2023-01-03" End="2023-01-04" />
</BookDates>
</OverridePolicy>
</OverridePolicies>
</PolicyInfo>
<ValueAddedServices Name="additional package">
<ValueAddedService serviceId="1" parkingType="Self" />
<ValueAddedService serviceId="10" amount="0.2" />
<ValueAddedService serviceId="3" creditAmount="50" accruedDaily="false" currenyCode="USD"/>
<ValueAddedService serviceId="17" numMinutes="30" />
</ValueAddedServices>
<TPA_Extensions>
<PricingType Value="RLO" Price1="false">
<Occupancy MaxAdultOccupancy="1" Round="true" Percent="25.9" />
<Occupancy MaxAdultOccupancy="2" Round="false" Amount="25.0" />
</PricingType>
<RateRelation FollowsRestrictions="true" Percent="55.2" FollowsPolicy="true" FollowsPrice="false" ParentRatePlanCode="12" FollowsClosed="2" />
</TPA_Extensions>
<AdditionalGuestAmounts>
<AdditionalGuestAmount AdditionalGuestNumber="0" MinAge="0" AgeBucketID="1" Amount="10.0" MaxAge="3" AgeQualifyingCode="8" />
<AdditionalGuestAmount AdditionalGuestNumber="1" MinAge="4" AgeBucketID="2" Percent="50.0" MaxAge="12" AgeQualifyingCode="8" />
</AdditionalGuestAmounts>
</HotelProduct>
</HotelProducts>
</OTA_HotelProductNotifRS>
<!-- RUID: [Z104215yh9YeXU9U0vxS7qEshGUqEDsuqNgPguHj+W/wiXPORW30Rmu5Qyp2=] -->
The following table describes the response elements:
| Element | Attribute | Description | Type | Notes |
|---|---|---|---|---|
OTA_HotelProductNotifRS | Contains the response data. | object | ||
> HotelProducts | Contains the roomrates details for a property. | object | ||
HotelCode | Specifies the unique ID of the property. | integer | ||
>> HotelProduct | Contains more information about the roomrate. | object | ||
ReadOnly | Specifies whether the rate plan is read only. | boolean | You can set the ReadOnly property only through the Extranet. | |
ChildRate | Specifies 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 | ||
>>> RoomTypes | Contains the roomtype information | object | ||
RoomTypeCode | Specifies the unique Booking.com ID of the room type. | integer | ||
MaxOccupancy | Specifies the maximum number of adults allowed in the room type. | integer | ||
>>> RatePlans | Contains rate plan information | object | ||
>>>> RatePlan | Contains individual rate plan information | object | ||
RatePlanCode | Specifies the unique Booking.com ID of the rate plan. | integer | ||
>>> ValueAddInclusions | Contains meal plan details | object | ||
>>>> MealPlan | Contains the meal plan information. | object | ||
MealPlanCode | Specifies the meal plan ID. | integer | To see the list of meal plan codes at Booking.com, see meal plan codes. | |
>>> PolicyInfo | Contains cancellation and prepayment policy details | object | ||
>>>> BookingRules | Contains the BookingRule objects. | object | ||
>>>>> BookingRule | Contains the booking policy information. | object | ||
MinAdvancedBookingOffset | Specifies the minimum amount of time in advance a room type must be booked, relative to midnight on the check-in date (hotel local time). The search date is counted as one of the days in the restriction length. | string | Response values use whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)? | |
MaxAdvancedBookingOffset | Specifies the maximum amount of time in advance a room type can be booked, relative to midnight on the check-in date (hotel local time). The search date is counted as one of the days in the restriction length. | string | Response values use whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)? | |
ReleaseTimeOfDayStart | Specifies the time of day from which the room type can start being booked. | integer | The response value is an index of a 15-minute interval from midnight. Convert it to a time using hours = value / 4 (integer division) and minutes = (value % 4) × 15. For example, 41 represents 10:15. | |
ReleaseTimeOfDayEnd | Specifies the time of day after which the room type can no longer be booked. | integer | The response value is an index of a 15-minute interval from midnight. Convert it to a time using hours = value / 4 (integer division) and minutes = (value % 4) × 15. For example, 72 represents 18:00. | |
>>>> CancelPenalty | Contains individual cancellation and prepayment policy details | object | ||
PolicyCode | Specifies the cancellation penalty code. | integer | ||
PolicyId | Specifies the unique ID of the policy. | integer | ||
PolicyName | Specifies the name of the policy. | string | ||
>>>>> TPA_Extensions | Contains the no show information. | object | ||
>>>>>> NoShowPolicy | Contains the no show penalty details. | object | ||
Penalty | Specifies the penalty charged in case the guest does not turn up for the reservation. | enumerated string | Possible values are: - default: Use if you want the no show penalty to follow the cancellation fee. - total_price: Use if you want the no show penalty to equal the total reservation price. | |
>>>> GuaranteePaymentPolicy | Contains the guarantee payment details. | object | ||
>>>>> GuaranteePayment | Contains the guarantee payment details. | object | ||
EffectiveFrom | Specifies when the guarantee payment is charged. | enumerated string | Possible values are: - after_reservation_is_made - Enforces guests to make a payment immediately after reservation. - after_cancellation_fee_begins: Enforces guests to make a payment after the free cancellation window has closed. | |
PrePaymentRequired | Specifies whether a guarantee payment is mandatory. | boolean | Possible values are: - true: Guarantee payment required - false: Guarantee payment is not required | |
>>>> OverridePolicies | Contains the policy override elements. | object | ||
>>>>> OverridePolicy | Contains a policy override element. | object | ||
PolicyCode | Specifies the cancellation policy (override) code. | integer | To see the list of cancellation and prepayment policy codes at Booking.com, see cancellation and prepayment policies. | |
>>>>>> BookDates | Contains the BookDate object. | object | ||
>>>>>> BookDate | Contains the overriding date. | object | ||
Start | Specifies the start date of the override policy. | string | Follows the format: YYYY-MM-DD. | |
End | Specifies the end date of the override policy. | string | Follows the format: YYYY-MM-DD. | |
>>> ValueAddedServices | Specifies the details for the value-added services. | object | ||
Name | Specifies a name for the value-add collection. | string | - | |
>>>> ValueAddedService | Specifies details for each of the value-added services. For the full list of supported service IDs and their attributes, see the Catalog API. | object | ||
ServiceId | Specifies the Booking.com value-add service ID. | enumerated integer | For a list of supported services and their IDs, get the latest list of value adds using the catalog API. | |
>>> TPA_Extensions | Contains pricing type information. | object | ||
>>>> PricingType | Contains the pricing and occupancy details. | object | Only available when you enable the feature: Include products extra info ( include_extra_info_room_rates) using the Provider portal. | |
Value | Specifies the pricing type. | enumerated string | Possible values are: - Standard - RLO - OBP - LOS | |
Price1 | Specifies whether the roomrate accepts a single occupancy price. | boolean | Possible values are: true - Accepts single occupancy price false - Does not support single occupancy price. | |
>>>>> Occupancy | Contains the maximum occupancy details specified while creating derived pricing. | object | For more information on how to set derived pricing, see Create or update derived pricing rates. | |
MaxAdultOccupancy | Specifies the maximum number of occupants allowed to stay for this rate. | integer | ||
Percent/Amount | Specifies the pricing as a percentage of the base price or as an additional amount from the base price. | integer | For example, if the base price is 200 and the price for 2 occupants is specified as a percentage = 95, then the price for 2 is 90. (95% of 200). Whereas, an additional = -15, means the price for 2 occupants is 185. | |
Round | Specifies whether the pricing is rounded down to two digits. Possible values are: - 0 : not rounded down - 1: Rounded down to two digits | enumerated string | ||
>>>> RateRelation | If the rate plan is a child of a parent rate plan, then this object contains information on the inherited rate attributes. | object | ||
ParentRatePlanCode | Specifies the rate plan ID of the parent rate plan | string | ||
Percent | Specifies the percentage in relation to the price connected to the parent rate plan. | float | Minimum value: 1. Maximum value: 200. For example, 80 refers to a 20% discount, while 120 refers to a 20% surplus. | |
Amount | Specifies the Fixed added amount in relation to the price connected to the parent rate plan | float | Can be a positive or negative number | |
FollowsPrice | Indicates whether the rate relation follows the price of the parent rate plan. | boolean | Possible values: true and false (Follows parent rate plan). Default: true | |
FollowsRestrictions | Indicates whether the rate relation follows the restrictions of the parent rate plan. | boolean | Possible values: true and false (Follows parent rate plan). Default: true | |
FollowsPolicy | Indicates whether the rate relation follows the policies of the parent rate plan. | boolean | Possible values: true and false (Follows parent rate plan). Default: true | |
FollowsClosed | Indicates whether the rate relation follows the status of the parent rate plan. | boolean | Possible values: - 0 : Never follows parent rate plan status, - 1 : Follows parent status when parent rate plan is open, - 2 : Follows parent status when parent rate plan is closed, and - 3 : Always follows parent rate plan status. Default: 3. | |
>>> AdditionalGuestAmounts | Contains the AdditionalGuestAmount elements. | array | ||
>>>> AdditionalGuestAmount | Contains the children pricing details. | object | ||
AgeQualifyingCode | Specifies that the prices are for children. | integer | You must use 8 to signal that the prices are for children only. Note that you cannot set adult prices here, but only within the BaseByGuestAmts object (see example). | |
AgeBucketID | Specifies the ID of the property-level age bucket. | integer | 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 | 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 | 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 | The price cannot exceed the adult price for the roomrate. You must use either Amount and DecimalPlaces, or Percent alone. | |
DecimalPlaces | Specifies the number of decimal places to apply to Amount. | integer | The default value is 0, which means the value of Amount is without a decimal point. | |
Amount | Specifies the price for a child within a certain age bucket. | integer | The price cannot exceed the adult price for the roomrate. You must use either Amount and DecimalPlaces, or Percent alone. | |
Percent | Specifies the price for the child as a percentage of the adult price. | integer | Possible value between 0 and 100. You must use either Amount and DecimalPlaces, or Percent alone. | |
AdditionalGuestNumber | Specifies the order of prices within the same age bucket. | integer | 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 the 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. | |
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. |
^ Depending on the value adds, some attributes might be available or missing. For more information, see the response from the Catalogs API.
POST
https://supply-xml.booking.com/hotels/xml/roomratesThe POST /xml/roomrates request enables you to retrieve active roomrates for a property.
You can:
- Retrieve the relevant room type and rate plan IDs.
- Query roomrate details with or without rewritten rate details.
- Retrieve additional response details like flexible children prices, if they are set.
You can also use this endpoint to retrieve policy override information for active roomrates. Remember to use Booking.com IDs while creating availability and not your internal IDs.
To resolve security issues and non-standard system behavior, the v1.1 roomrates endpoint supports the UTF-16 encoding algorithm.
| Header | Description | Type | Required/ Optional | Notes |
|---|---|---|---|---|
Accept-Version | Specify the version number to get the API functionality specific to that version. | string | optional | Currently supports the following versions: - 1.3 (New version) Returns value added services with v2 IDs additionally in the response. - 1.2 Returns value added services with v1 IDs additionally in the response. - 1.1 (default) Response doesn't include value adds details. Version 1.0 is sunset. If used, the endpoint returns a 406 Not acceptable error. |
The following table describes the elements you can add in the request body:
| Element | Description | Type | Required/Optional | Notes |
|---|---|---|---|---|
request | Contains the request information. | object | required | |
> hotel_id | Specifies the unique ID of the property you want to retrieve the active rate plans for. | integer | required | |
> policy_override_start | Specifies the start of the date range for which you want to retrieve policy override information. | string | optional | |
> policy_override_end | Specifies the end of the date range for which you want to retrieve policy override information. | string | required if policy_override_start is specified | |
> support_rate_rewrite | Specifies whether the API should include rewritten rate details. | boolean | optional | Possible value: - 0 : Include all rates including rewritten rate plan details. - 1 : Do not include rewritten rate plan details. |
The following is a request body example:
<request>
<hotel_id>8011855</hotel_id>
<support_rate_rewrite>0</support_rate_rewrite>
</request>
The following request body example retrieves roomrates that have policy overrides defined:
<request>
<hotel_id>8011855</hotel_id>
<policy_override_start_date>2024-01-12</policy_override_start_date>
<policy_override_end_date>2024-02-29</policy_override_end_date>
</request>
The following is a successful response body example:
<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">
<meal_plan meal_plan_code="10"/>
<policies>
<booking_rules>
<booking_rule min_advanced_booking_offset="P1D"/>
<booking_rule max_advanced_booking_offset="P14D"/>
</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>
<guarantee_payment_policy>
<guarantee_payment policy_code="1" effective_from="after_reservation_is_made" required="1"/>
<policy_overrides>
<policy_override start_date="2024-01-16" end_date="2024-02-23" policy_code="after_reservation_is_made"/>
</policy_overrides>
</guarantee_payment_policy>
</policies>
<pricing type="RLO">
<occupancy persons="3" percentage="125.0" round="1"/>
<occupancy persons="4" additional="10.0" round="0"/>
<additional_guests>
<price type="child" additional_guest_number="0" from_age="0" to_age="3" age_bucket_id="1" percentage="50.0"/>
<price type="child" additional_guest_number="0" from_age="4" to_age="12" age_bucket_id="2" percentage="30.0"/>
<price type="child" additional_guest_number="0" from_age="13" to_age="17" age_bucket_id="3" percentage="20.0"/>
</additional_guests>
</pricing>
</rate>
</rates>
</room>
<room id="801185512" hotel_id="8011855" hotel_name="HillTop Hotel" room_name="Villa">
<rates>
<rate id="33298392" max_persons="5" policy="Special Conditions 3" policy_id="342592279" rate_name="winter break rates" is_child_rate="1">
<meal_plan meal_plan_code="12"/>
<policies>
<booking_rules/>
<cancel_policy>
<cancel_penalty policy_code="166"/>
</cancel_policy>
<guarantee_payment_policy>
<guarantee_payment policy_code="166" effective_from="after_reservation_is_made" required="1"/>
</guarantee_payment_policy>
</policies>
<pricing type="Standard" price1="0"/>
<rate_relation follows_closed="3" follows_restrictions="1" follows_policygroup_id="1" follows_price="1" parent_rate_id="31105118" percentage="90.0"/>
<value_added_services name="additional package">
<value_added_service id="1" parkingType="Self"/>
<value_added_service id="10" amount="0.2"/>
<value_added_service id="3" creditAmount="50" accruedDaily="false" currenyCode="USD"/>
<value_added_service id="17" numMinutes="30" />
</value_added_services>
</rate>
</rates>
</room>
</rooms>
</roomrates>
<!-- RUID: [f0020c39-f851-4e8d-cvd2q-98c9845a0940] -->
The following table describes the response elements:
| Element | Attribute | Description | Type | Notes |
|---|---|---|---|---|
roomrates | Contains the response details of the roomrate. | object | ||
rooms | Contains the room objects. | object | ||
> room | Contains the room type information. | object | ||
id | Specifies the unique Booking.com ID of the room type. | integer | ||
hotel_id | Specifies the unique ID of the property. | integer | ||
hotel_name | Specifies the name of the property. | string | ||
room_name | Specifies the name of the room type. | string | ||
>> rates | Contains the rate objects. | object | ||
>>> rate | Contains the rate plan information. | object | ||
id | Specifies the unique Booking.com ID of the rate plan. | integer | ||
is_child_rate | Specifies whether the rate plan has a rate relation with a parent rate plan. | boolean | Possible value: 1 (Yes, rate plan is a child rate plan) | |
fixed_occupancy | Only applicable for derived pricing types (RLO). Shows the maximum number of occupants specified when creating or updating a roomrate. | integer | This value can be different from the max_persons value set while creating the roomtype. | |
max_persons | Specifies the maximum number of adults allowed in the room type. | integer | ||
policy | Specifies the name of the policy. | string | ||
policy_id | Specifies the unique ID of the policy. | integer | ||
rate_name | Specifies the name of the rate plan. | string | ||
readonly | Specifies whether the rate plan is read only. | boolean | You can set the readonly property only through the Extranet. | |
>>>> occupancies | Lists all occupancies from 1 to max_persons when pricing type is OBP. | object | ||
>>>> meal_plan | Contains the meal plan information. | object | ||
meal_plan_code | Specifies the meal plan ID. | integer | To see the list of meal plan codes at Booking.com, see meal plan codes. | |
>>>> policies | Contains the cancellation policy details. | object | ||
>>>>> booking_rules | Contains the BookingRule objects. | object | ||
>>>>>> booking_rule | Contains the booking policy information. | object | ||
min_advanced_booking_offset | Specifies the minimum amount of time in advance a room type must be booked, relative to midnight on the check-in date (hotel local time). The search date is counted as one of the days in the restriction length. | string | Response values use whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)? | |
max_advanced_booking_offset | Specifies the maximum amount of time in advance a room type can be booked, relative to midnight on the check-in date (hotel local time). The search date is counted as one of the days in the restriction length. | string | Response values use whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)? | |
release_time_of_day_start | Specifies the time of day from which the room type can start being booked. | integer | The response value is an index of a 15-minute interval from midnight. Convert it to a time using hours = value / 4 (integer division) and minutes = (value % 4) × 15. For example, 41 represents 10:15. | |
release_time_of_day_end | Specifies the time of day after which the room type can no longer be booked. | integer | The response value is an index of a 15-minute interval from midnight. Convert it to a time using hours = value / 4 (integer division) and minutes = (value % 4) × 15. For example, 72 represents 18:00. | |
>>>> cancel_policy | Contains the CancelPenalty object. | object | ||
>>>>> cancel_penalty | Contains the policy information. | object | ||
policy_code | Specifies the cancellation policy code. | integer | For a full list of all the available cancellation codes, see the cancellation policy codes. | |
>>>>>>> policy_overrides | Contains the policy override elements. | object | ||
>>>>>>>> policy_override | Contains a policy override element. | object | ||
start_date | Specifies the start date of the override policy. | string | Follows the format: YYYY-MM-DD. | |
end_date | Specifies the end date of the override policy. | string | Follows the format: YYYY-MM-DD. | |
policy_code | Specifies the cancellation policy (override) code. | integer | To see the list of cancellation and prepayment policy codes at Booking.com, see cancellation and prepayment policies. | |
>>>> guarantee_payment_policy | Contains the guarantee payment details. | object | ||
>>>>> guarantee_payment | Contains the guarantee payment details. | object | ||
policy_code | Deprecated. Please ignore this field. effective_from and required indicate the guarantee payment policy | integer | ||
effective_from | Specifies when the guarantee payment is charged. | enumerated string | Possible values are: - after_reservation_is_made - Enforces guests to make a payment immediately after reservation. - after_cancellation_fee_begins: Enforces guests to make a payment after the free cancellation window has closed. | |
required | Specifies whether a guarantee payment is mandatory. | boolean | Possible values are: - 1: Guarantee payment required - 0: Guarantee payment is not required | |
>>>> pricing | Contains the pricing details. | object | Only available when you enable the feature: Include products extra info ( include_extra_info_room_rates) using the Provider portal. | |
type | Specifies the pricing type. | enumerated string | Possible values are: - Standard - RLO - OBP - LOS | |
price1 | Specifies whether the roomrate accepts a single occupancy price. | boolean | Possible values are: 1 - Accepts single occupancy price 0 - Does not support single occupancy price. | |
>>>>> additional_guests | Contains the price elements for flexible child rate details (if they are already defined). | 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. | |
>>>> rate_relation | If the rate plan is a child of a parent rate plan, then this object contains information on the inherited rate attributes. | object | ||
parent_rate_id | Specifies the rate plan ID of the parent rate plan | string | ||
percentage | Specifies the percentage in relation to the price connected to the parent rate plan. | integer | Minimum value: 1. Maximum value: 200. For example, 80 refers to a 20% discount, while 120 refers to a 20% surplus. | |
additional | Specifies a fixed amount to add to (or subtract from) the parent rate plan price | float | Can be a positive or negative number | |
follows_price | Indicates whether the rate relation follows the price of the parent rate plan. | boolean | Possible values: 0 and 1 (Follows parent rate plan). Default: 1 | |
follows_restrictions | Indicates whether the rate relation follows the restrictions of the parent rate plan. | boolean | Possible values: 0 and 1 (Follows parent rate plan). Default: 1 | |
follows_policygroup_id | Indicates whether the rate relation follows the policies of the parent rate plan. | boolean | Possible values: 0 and 1 (Follows parent rate plan). Default: 1 | |
follows_closed | Indicates whether the rate relation follows the status of the parent rate plan. | boolean | Possible values: - 0 : Never follows parent rate plan status, - 1 : Follows parent status when parent rate plan is open, - 2 : Follows parent status when parent rate plan is closed, and - 3 : Always follows parent rate plan status. Default: 3. | |
>>>>> occupancy | Contains the occupancy details that you set using the derived pricing endpoint for multiple occupancies for a room type that has RLO pricing. | |||
persons | Specifies the number of occupants. | integer | ||
percentage/additional | Specifies the pricing as a percentage of the base price or as an additional amount from the base price. | integer | For example, if the base price is 200 and the price for 2 occupants is specified as a percentage = 95, then the price for 2 is 90. (95% of 200). Whereas, an additional = -15, means the price for 2 occupants is 185. | |
round | Specifies whether the pricing is rounded down to two digits. Possible values are: - 0 : not rounded down - 1: Rounded down to two digits | enumerated string | ||
>>> value_added_services | Specifies the details for the value-added services. | object | ||
name | Specifies a name for the value-add collection. | string | - | |
>>>> value_added_service | Specifies details for each of the value-added services. For the full list of supported service IDs and their attributes, see the Catalog API. | object | ||
id | Specifies the Booking.com value-add service ID. | enumerated integer | For a list of supported services and their IDs, get the latest list of value adds using the catalog API. | |
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. |
The endpoint only returns active roomrates, that is, roomrates that contain active room types and/or rate plans. If you cannot see all the roomrates, it could be due to one of the following reasons:
- The missing roomrate contains a deactivated room type and/or rate plan. If you deactivate a rate plan, the endpoint does not return the roomrate created with the deactivated rate plan. Similarly, the endpoint does not return roomrates that specify a deactivated room type.
- The missing roomrate is managed by the property using the extranet. The extranet tags such roomrates as
No XML Rates, while API-managed roomrates are tagged asXML Rates. The endpoint does not return roomrates managed by connected partners using the extranet. If the property no longer wants to manage the rate in the extranet, they can get in touch with the Booking.com local support team for assistance in migrating the roomrate to be API-managed. - You're trying to retrieve a child roomrate that specifies rate rewrite.
XML Res Ratesare child rates that properties manage in the extranet, while providers retrieve reservations with the parent rate specified. You can change the value to0in the query parametersupport_rate_rewriteorSupportRateRewritein your retrieval requests to get the missing roomrates included in the response. For more information, see What is Rate Rewrite.
The following table lists the possible error codes you may encounter when managing roomrates:
| Error Code | Error Message | Description | Resolution |
|---|---|---|---|
44 | Either Percent, Adult Percent or Amount should exist, and only one should be defined | Invalid additional guest pricing configuration. | Ensure exactly one of Percent, Adult Percent, or Amount is specified for additional guest pricing. |
44 | Cannot use percentage when setting children prices for OBP or LOS room rates | The Percent attribute is not supported for children pricing on OBP or LOS room rates. | Use Amount (fixed price) or AdultPercent (percentage of the price per adult — in OBP, this is the total room price divided by the number of adults) instead of Percent. |
119 | Occupancy exceeds room capacity. | The MaxOccupancy value exceeds the room's maximum adult occupancy. | Ensure MaxOccupancy is less than or equal to the room's maximum adult occupancy. |
119 | Leading occupancy should be a positive number. | The leading occupancy value is zero or negative. | Set leading occupancy to a positive integer. |
150 | Cannot preform action, currency switch is in progress. Please try again later. | A currency switch operation is currently in progress for the property. | Wait for the currency switch to complete, then retry the request. |
320 | The provided parameter has an invalid value. | A value-added service parameter contains a value that is not accepted. | Check the value-added service attribute values in your request against the supported values in the catalog API. |
320 | Duplicate value adds are provided. | The request contains duplicate value-added services. | Remove duplicate entries from the ValueAddedServices element. |
320 | Exceeded the limit of value adds per bundle. | The number of value-added services in the bundle exceeds the allowed maximum. | Reduce the number of value-added services included in the request. |
320 | Pet value add cannot be bundled with other value adds. | A pets value add was included alongside other value-added services. | Send the pets value add in a separate request without other value adds. |
320 | The provided parameter has invalid format. | A value-added service parameter does not follow the expected format. | Check the required format for each value-added service attribute in the catalog API. |
320 | The provided value is out of range. | A value-added service parameter value falls outside the accepted range. | Check the accepted range for each value-added service attribute in the catalog API. |
320 | Provided value adds contain one or more invalid ids and don't match any value add in our catalog. | One or more ServiceId values do not match any entry in the value add catalog. | Retrieve the latest list of value adds using the catalog API and use valid IDs. |
320 | Bundle validation failed. | The value-added service bundle configuration is invalid. | Verify the value-added service attributes against the catalog API. |
321 | There is one or more missing parameters. | A required value-added service parameter is missing. | Check the required attributes for each value-added service in the catalog API. |
400 | Room ID is missing | The request does not include a room type identifier. | Include the RoomTypeCode attribute in the request. |
400 | RatePlanCode: Attribute is required | The RatePlanCode attribute is missing from the request. | Include the RatePlanCode attribute in the request. |
400 | RoomTypeCode: Attribute is required | The RoomTypeCode attribute is missing from the request. | Include the RoomTypeCode attribute in the request. |
400 | ProductNotifType: Attribute is required | The ProductNotifType attribute is missing from the request. | Include the ProductNotifType attribute and set it to New, Overlay, or Remove. |
400 | ProductNotifType: Value should be one of [ NEW, OVERLAY, REMOVE ] | The ProductNotifType value is not one of the accepted values. | Set ProductNotifType to New, Overlay, or Remove. |
400 | ProductStatusType: Value should be one of [ Active, Deactivated ] | The ProductStatusType value is not one of the accepted values. | Set ProductStatusType to Active or Deactivated. |
400 | MealPlanCode: Value should be one of {valid codes}, found {value} | The MealPlanCode value is not a supported code. | Use a valid meal plan code. See meal plan codes. |
400 | CancelPenalty: PolicyCode, PolicyId, or PolicyName attribute is required | No cancellation policy identifier was provided on CancelPenalty. | Include at least one of PolicyCode, PolicyId, or PolicyName on the CancelPenalty element. |
400 | CancelPenalty: missing PolicyCode, PolicyName, or PolicyId attribute | No cancellation policy identifier was provided on CancelPenalty. | Include at least one of PolicyCode, PolicyId, or PolicyName on the CancelPenalty element. |
400 | PolicyName: cannot be empty. You need to provide either policyName or policyId | PolicyName was provided but is empty. | Provide a non-empty PolicyName value, or use PolicyId instead. |
400 | BookDate: Start attribute is required | The Start attribute is missing from a BookDate element. | Include the Start attribute on the BookDate element. |
400 | BookDate: End attribute is required | The End attribute is missing from a BookDate element. | Include the End attribute on the BookDate element. |
400 | Start date should be less than or equal to end date for BookDate element | The Start date is after the End date in a BookDate element. | Set Start to a date that is on or before End. |
400 | Value is not a date (ISO 8601 date format: yyyy-mm-dd), found {value} | A date value does not follow the required ISO 8601 format. | Use the YYYY-MM-DD date format. |
400 | ActiveWeekday: Day attribute is required | The Day attribute is missing from an ActiveWeekday element. | Include the Day attribute on the ActiveWeekday element. |
400 | Day: Value is not a dayofweek (Full day of week name), found '{value}' | The Day value is not a valid day name. | Use a full day name: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, or Sunday. |
400 | Day: Value should be one of [ MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY ] | The Day value is not one of the accepted day names. | Use a full day name: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, or Sunday. |
400 | FCR: You need to set additional guest Amount, Percent or AdultPercent | A FreeChildrenRate element was included without specifying a price adjustment. | Specify Amount, Percent, or AdultPercent for the free children rate. |
400 | Time: Invalid format, expected HH:MM or HH | A time value does not follow the expected format. | Use the HH:MM or HH format for time values. |
400 | Time: Hour must be 0-23, minute must be 0-59 | A time value contains an out-of-range hour or minute. | Ensure the hour is between 0 and 23, and the minute is between 0 and 59. |
400 | Duration: Invalid ISO-8601 duration format | A duration value does not follow the ISO 8601 duration format. | Use a valid ISO 8601 duration format, such as P5D or P1H. |
400 | TargetChannel: Value should be one of [ domestic, public, mobile_only, app_only, mobile_app ] | The TargetChannel value is not one of the accepted channel values. | Use one of the accepted values: domestic, public, mobile_only, app_only, or mobile_app. |
400 | PricingType: Value should be one of [ STANDARD, OBP, LOS ] | The PricingType value is not one of the accepted pricing types. | Use one of the accepted pricing type values. See pricing models. |
400 | NoShowPolicy Penalty: Value should be one of [ DEFAULT, TOTAL_PRICE ] | The no-show policy penalty value is not one of the accepted values. | Set the no-show policy penalty to DEFAULT or TOTAL_PRICE. |
400 | EffectiveFrom: Value should be one of [ AFTER_CANCELLATION_FEE_BEGINS, AFTER_RESERVATION_IS_MADE ] | The EffectiveFrom value is not one of the accepted values. | Set EffectiveFrom to AFTER_CANCELLATION_FEE_BEGINS or AFTER_RESERVATION_IS_MADE. |
403 | Request for forbidden hotel id(s) | The property ID in the request is not accessible with the provided credentials. | Ensure the hotel ID belongs to your account and that your credentials are correct. |
497 | The provided currency code is invalid. | The currencyCode value does not follow the ISO 4217 standard. | Use a valid ISO 4217 currency code. |
497 | Limit 400 of number of Roomrates has reached | The property has reached the maximum limit of 400 active roomrates. | Remove unused roomrates before creating new ones. |
497 | Multiple products for the same Room ID: {room_id} and Rate ID: {rate_id} are not supported in a single request | The request contains duplicate room-rate combinations. | Send each room-rate combination only once per request. |
497 | Invalid HotelProduct RoomType: {room_id} and RatePlan: {rate_id} | The room type and rate plan combination is invalid. | Verify that the RoomTypeCode and RatePlanCode values are correct and belong to the property. |
497 | Room ID '{room_id}' does not belong to hotel ID '{hotel_id}' | The specified room type does not belong to the property. | Use a RoomTypeCode that belongs to the hotel specified in HotelCode. |
497 | Rate ID does not belong to the property. | The specified rate plan does not belong to the property. | Use a RatePlanCode that belongs to the hotel specified in HotelCode. |
497 | Rate '{rate_id}' is only editable on Extranet | The rate plan is read-only via the API and cannot be modified through connectivity. | The property must modify this rate plan directly on the Booking.com extranet. |
497 | CancelPenalty: conflicting PolicyID, PolicyName attributes defined | Both PolicyId and PolicyName were specified on CancelPenalty. | Use only PolicyId to assign a cancellation policy. |
497 | Policy overrides are not allowed for net rates | OverridePolicies was included in a request for a net rate product. | Remove the OverridePolicies element from net rate requests. |
497 | Value Added Services are not allowed for net rates | ValueAddedServices was included in a request for a net rate product. | Remove the ValueAddedServices element from net rate requests. |
497 | Room ID '{room_id}' does not belong to the property | The room type with the specified ID does not exist at the property. | Verify the RoomTypeCode exists for the property by retrieving room types. |
497 | PolicyName value is not correct: {value} | The provided policy name is not valid for this property. | Use a valid policy name for the property. See Policies API. |
497 | Net rate products only support 'net_narrow' or 'net_broad' channel values | A non-net rate TargetChannel value was set on a net rate product. | Use only net_narrow or net_broad as the TargetChannel value for net rate products. |
497 | 'net_narrow' and 'net_broad' channels are only allowed for net rate products | A net rate TargetChannel value was used on a non-net rate product. | Remove the net_narrow or net_broad TargetChannel value from non-net rate products. |
497 | Request for forbidden hotel id(s) | The property ID in the request is not accessible with the provided credentials. | Ensure the hotel ID belongs to your account and that your credentials are correct. |
500 | Internal server error | An unexpected error occurred on the server. | Retry the request. If the issue persists, contact support. |
733 | Room-Rate combination is not active or does not exist. | The roomrate targeted by an Overlay request does not exist or is not active. | To reactivate an inactive roomrate, send the request with ProductNotifType="New" instead of Overlay. To update an active roomrate, verify the RoomTypeCode and RatePlanCode are correct. |
733 | Defined policy id is not available for this hotel: {policy_id} | The PolicyId specified on CancelPenalty does not belong to the property. | Use a policy ID that belongs to the property. See Policies API. |
733 | MaxOccupancy is not supported for products with LOS (Length of Stay) or OBP (Occupancy-Based Pricing) models | MaxOccupancy was set on a roomrate that uses LOS or OBP pricing. | Remove MaxOccupancy for LOS or OBP roomrates. |
733 | Cannot set Length of Stay pricing model. Property does not have LOS enabled. | PricingType was set to LOS but LOS is not enabled at the property level. | Enable LOS pricing at the property level before using it on roomrates. See pricing models. |
733 | Cannot set Occupancy-Based pricing model. Property does not have OBP enabled. | PricingType was set to OBP but OBP is not enabled at the property level. | Enable OBP pricing at the property level before using it on roomrates. See pricing models. |
733 | Invalid Maximum Advanced res, Minimum value is one hour and maximum is 365 days. | The MaxAdvancedBookingOffset value is outside the allowed range. | Set MaxAdvancedBookingOffset to a value between 1 hour and 365 days. |
733 | Invalid Minimum Advanced res, Minimum value is one hour and maximum is 365 days. | The MinAdvancedBookingOffset value is outside the allowed range. | Set MinAdvancedBookingOffset to a value between 1 hour and 365 days. |
733 | Invalid Minimum/Maximum Advanced res, Value of Minimum advanced res should be lower than maximum advanced res. | MinAdvancedBookingOffset is greater than or equal to MaxAdvancedBookingOffset. | Ensure MinAdvancedBookingOffset is less than MaxAdvancedBookingOffset. |
733 | Cannot set pricing model. There are rate relations for the same rate with different pricing models. | The requested pricing model conflicts with the pricing model of a related rate. | Ensure all related rates use the same pricing model before changing. |
733 | Hotel is not eligible to create Mobile Rate Plans | The property is not configured to support mobile rate plans. | Contact support to enable mobile rate plans for the property. |
733 | Defined policy name is not available for this hotel: {name} | The policy name specified on CancelPenalty does not belong to the property. | Use a policy name that belongs to the property. See Policies API. |
733 | Defined policy code is not available for this hotel: {code} | The PolicyCode specified on CancelPenalty does not belong to the property. | Use a policy code that belongs to the property. See Policies API. |
733 | Net rates must have a non-refundable policy | A non-refundable cancellation policy was not set on a net rate product. | Assign a non-refundable cancellation policy to net rate products. |
733 | Invalid release time start, the value must represent a quarter hour of the day. | The ReleaseTimeOfDayStart value is not a valid quarter-hour interval. | Use a time that falls on a 15-minute boundary, for example 10:00, 10:15, 10:30, or 10:45. |
733 | Invalid release time end, the value must represent a quarter hour of the day. | The ReleaseTimeOfDayEnd value is not a valid quarter-hour interval. | Use a time that falls on a 15-minute boundary, for example 10:00, 10:15, 10:30, or 10:45. |
733 | Invalid release time start/end, Value of release time start should be less than release time end. | ReleaseTimeOfDayStart is greater than or equal to ReleaseTimeOfDayEnd. | Ensure ReleaseTimeOfDayStart is earlier than ReleaseTimeOfDayEnd. |