Skip to content

Managing roomrates

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.

What is a roomrate?

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.

What is a policy?

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.

What is an override policy?

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.

What are booking restrictions?

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, P5H means 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, P14D means 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.

What are value adds?

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.

What falls under managing roomrates?

The OTA_HotelProductNotif endpoint supports the following core operations:

Create a roomrate

Use the OTA_HotelProductNotif endpoint to create a roomrate for your property.

Endpoint

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

Request

Headers

HeaderDescriptionTypeRequiredNotes
Accept-VersionSpecify the version number to get the API functionality specific to that version.stringRequiredSupports the following values:
- 1.3: Current version
Content-TypeRequest content typestringRequiredMust be application/xml

Prerequisites

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_HotelRatePlanNotif endpoint, see Creating rate plans.

Recommended

  • Policy ID: It is strongly recommended to explicitly assign a PolicyId when 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.

Assigning policies to roomrates

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.

Request body

The following table describes the elements you must add in the request body:

ElementAttributeDescriptionTypeRequired/OptionalNotes
OTA_HotelProductNotifRQContains the HotelProducts array.objectrequired
> HotelProductsContains the HotelProduct objects.arrayrequired
HotelCodeSpecifies the unique ID of the property you create roomrates for.integerrequired
>> HotelProductContains the roomrate information.objectrequired
ProductNotifTypeSpecifies whether the request is to create a roomrate (New) or modify an existing one (Overlay).enumrequiredPossible values are New and Overlay. You must use New to create a roomrate.
>>> RoomTypesContains a RoomType object.objectrequired
>>>> RoomTypeContains the room type information.objectrequired
RoomTypeCodeSpecifies the room type id.integerrequired
MaxOccupancySpecifies the maximum occupancy of the roomrate.integeroptionalValue must not exceed the room's max adult occupancy. Switches pricing type to RLO. Warning: Switching pricing type removes all existing prices.
>>> RatePlansContains a RatePlan object.objectrequired
>>>> RatePlanContains the rate plan information.objectrequired
RatePlanCodeSpecifies the rate plan id.integerrequired
>>> ValueAddInclusionsContains a MealPlan object.objectoptional
>>>> MealPlanContains the meal plan information.objectoptionalIf you do not include this element, the default is no meal plan included.
MealPlanCodeSpecifies the meal plan id.integeroptionalTo see the list of meal plan codes at Booking.com, see meal plan codes.
>>> PolicyInfoContains the cancellation and booking policy objects.objectOptional
>>>> CancelPolicyContains the CancelPenalty objects.objectOptional
>>>>> CancelPenaltyContains the policy information.objectOptional
PolicyIdSpecifies 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.integerOptionalDefault: The property's default policy is assigned. You can identify it by looking for <Tags><Default/></Tags> in the GET /policies response.
>>>> OverridePoliciesContains the OverridePolicy objects.objectOptional
>>>>> OverridePolicyContains the override policy information, which overwrites other policies set for this roomrate on the dates specified within the object.objectOptional
PolicyIdSpecifies the ID of the override policy.integerOptional
>>>>>> BookDatesContains the BookDate objects.objectoptional
>>>>>>> BookDateContains the book date information, which specify the dates when the override policy overwrites other policies.objectoptional
StartSpecifies the start date of the override policy.stringoptionalFollows the format: YYYY-MM-DD.
EndSpecifies the end date of the override policy.stringoptionalFollows the format: YYYY-MM-DD.
>>>>>> ActiveWeekdaysContains the ActiveWeekDay objects.objectoptional
>>>>>>> ActiveWeekdayContains the active week day information, which specify the days when the override policy overwrites other policies.objectoptional
DaySpecifies the name of the day of the week.stringoptionalPossible values are: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, and Sunday.
>>>> BookingRulesContains the BookingRule objects.objectoptionalOverlay 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.
>>>>> BookingRuleContains the booking policy information.objectoptional
MinAdvancedBookingOffsetSpecifies 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.stringoptionalUse whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)?
MaxAdvancedBookingOffsetSpecifies 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.stringoptionalUse whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)?
ReleaseTimeOfDayStartSpecifies the time of the day the room type can start being booked.HH:MMoptionalThis allows time intervals of 15 minutes starting at midnight. For example: 10:15.
ReleaseTimeOfDayEndSpecifies the time of the day the room type can no longer be booked.HH:MMoptionalThis 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. |

Set up pricing type

The pricing model is determined in the following order of precedence:

  1. MaxOccupancy is set — pricing model is automatically set to RLO (derived pricing), regardless of PricingType.
  2. PricingType is explicitly specified — the specified value is used:
    • Standard — uses standard pricing.
    • OBP — uses occupancy-based pricing.
    • LOS — uses length-of-stay pricing.
  3. Existing active roomrate — if no explicit type is set and the roomrate already exists, the existing pricing model is preserved.
  4. 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), LOS is 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), OBP is used.
    • Otherwise, defaults to Standard.

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.

Request example

<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>

Response

Response body

ElementAttributeDescriptionTypeNotes
OTA_HotelProductNotifRSContains the response data.object
> SuccessIndicates the success of the request.object
> WarningsGroups a list of individual warnings.object-
>> WarningLists details of individual warnings.objectWarnings can occur even if the response contains Success.
CodeOTA EWT code.stringSee Error codes.
DetailsContains additional context about where the warning occurred.stringMay include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the warning.
ShortTextWarning message.string-
> ErrorsGroups a list of individual errors.object-
>> ErrorLists details of individual errors.object-
CodeOTA EWT code.stringSee Error codes.
DetailsContains additional context about where the error occurred.stringMay include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the error.
ShortTextError message.string-
<!-- RUID: [...] -->XML comment appended after the closing tag containing the unique request ID.stringYou can send this ID to Booking.com customer support if you run into an issue.

Success response

<OTA_HotelProductNotifRS Version="3.000">
  <Success />
</OTA_HotelProductNotifRS>
<!-- RUID: [UmFuZG9tSVYkc2RlIyh9YUedwgregreg3/GEVjlG+mTXmB9OkyhGlAKEMxDhfrI] -->

Error response

<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] -->

Update a roomrate

Use the OTA_HotelProductNotif endpoint to update an existing roomrate for your property.

Overlay update behavior

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.

Updating value adds

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.

Endpoint

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

Request

Headers

HeaderDescriptionTypeRequiredNotes
Accept-VersionSpecify the version number to get the API functionality specific to that version.stringRequiredSupports the following values:
- 1.3: Current version
Content-TypeRequest content typestringRequiredMust be application/xml

Request body

ElementAttributeDescriptionTypeRequired/OptionalNotes
OTA_HotelProductNotifRQContains the HotelProducts array.objectrequired
> HotelProductsContains the HotelProduct objects.arrayrequired
HotelCodeSpecifies the unique ID of the property you create roomrates for.integerrequired
>> HotelProductContains the roomrate information.objectrequired
ProductNotifTypeSpecifies whether the request is to create a roomrate (New) or modify an existing one (Overlay).enumrequiredPossible values are New and Overlay. You must use New to create a roomrate.
>>> RoomTypesContains a RoomType object.objectrequired
>>>> RoomTypeContains the room type information.objectrequired
RoomTypeCodeSpecifies the room type id.integerrequired
MaxOccupancySpecifies the maximum occupancy of the roomrate.integeroptionalValue must not exceed the room's max adult occupancy. Switches pricing type to RLO. Warning: Switching pricing type removes all existing prices.
>>> RatePlansContains a RatePlan object.objectrequired
>>>> RatePlanContains the rate plan information.objectrequired
RatePlanCodeSpecifies the rate plan id.integerrequired
>>> ValueAddInclusionsContains a MealPlan object.objectoptional
>>>> MealPlanContains the meal plan information.objectoptionalIf you do not include this element, the default is no meal plan included.
MealPlanCodeSpecifies the meal plan id.integeroptionalTo see the list of meal plan codes at Booking.com, see meal plan codes.
>>> PolicyInfoContains the cancellation and booking policy objects.objectOptional
>>>> CancelPolicyContains the CancelPenalty objects.objectOptional
>>>>> CancelPenaltyContains the policy information.objectOptional
PolicyIdSpecifies 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.integerOptionalDefault: The property's default policy is assigned. You can identify it by looking for <Tags><Default/></Tags> in the GET /policies response.
>>>> OverridePoliciesContains the OverridePolicy objects.objectOptionalOverlay 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.
>>>>> OverridePolicyContains the override policy information, which overwrites other policies set for this roomrate on the dates specified within the object.objectOptional
PolicyIdSpecifies the ID of the override policy.integerOptional
>>>>>> BookDatesContains the BookDate objects.objectoptional
>>>>>>> BookDateContains the book date information, which specify the dates when the override policy overwrites other policies.objectoptional
StartSpecifies the start date of the override policy.stringoptionalFollows the format: YYYY-MM-DD.
EndSpecifies the end date of the override policy.stringoptionalFollows the format: YYYY-MM-DD.
>>>>>> ActiveWeekdaysContains the ActiveWeekDay objects.objectoptional
>>>>>>> ActiveWeekdayContains the active week day information, which specify the days when the override policy overwrites other policies.objectoptional
DaySpecifies the name of the day of the week.stringoptionalPossible values are: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, and Sunday.
>>>> BookingRulesContains the BookingRule objects.objectoptionalOverlay 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.
>>>>> BookingRuleContains the booking policy information.objectoptional
MinAdvancedBookingOffsetSpecifies 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.stringoptionalUse whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)?
MaxAdvancedBookingOffsetSpecifies 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.stringoptionalUse whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)?
ReleaseTimeOfDayStartSpecifies the time of the day the room type can start being booked.HH:MMoptionalThis allows time intervals of 15 minutes starting at midnight. For example: 10:15.
ReleaseTimeOfDayEndSpecifies the time of the day the room type can no longer be booked.HH:MMoptionalThis 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. |

Request example

<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>

Response

Response body

ElementAttributeDescriptionTypeNotes
OTA_HotelProductNotifRSContains the response data.object
> SuccessIndicates the success of the request.object
> WarningsGroups a list of individual warnings.object-
>> WarningLists details of individual warnings.objectWarnings can occur even if the response contains Success.
CodeOTA EWT code.stringSee Error codes.
DetailsContains additional context about where the warning occurred.stringMay include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the warning.
ShortTextWarning message.string-
> ErrorsGroups a list of individual errors.object-
>> ErrorLists details of individual errors.object-
CodeOTA EWT code.stringSee Error codes.
DetailsContains additional context about where the error occurred.stringMay include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the error.
ShortTextError message.string-
<!-- RUID: [...] -->XML comment appended after the closing tag containing the unique request ID.stringYou can send this ID to Booking.com customer support if you run into an issue.

Success response

<OTA_HotelProductNotifRS Version="3.000">
  <Success />
</OTA_HotelProductNotifRS>
<!-- RUID: [UmFuZG9tSVYkc2RlIyh9YUedwgregreg3/GEVjlG+mTXmB9Owf2f+Kq=Mzyiykpi6Yx5oKzRKEMxDhfrI] -->


Remove a roomrate

Use the OTA_HotelProductNotif endpoint to remove a roomrate by disconnecting the room type and rate plan.

Removing all value adds

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>

Endpoint

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

Request

Headers

HeaderDescriptionTypeRequiredNotes
Accept-VersionSpecify the version number to get the API functionality specific to that version.stringRequiredSupports the following values:
- 1.3: Current version
Content-TypeRequest content typestringRequiredMust be application/xml

Request body

ElementAttributeDescriptionTypeRequiredNotes
OTA_HotelProductNotifRQContains the HotelProducts array.objectRequired
> HotelProductsContains the HotelProduct objects.arrayRequired
HotelCodeSpecifies the unique ID of the property.integerRequired
>> HotelProductContains the roomrate information.objectRequired
ProductNotifTypeSpecifies the purpose of the request.enumRequiredUse Remove to remove a roomrate.
>>> RoomTypesContains a RoomType object.objectRequired
>>>> RoomTypeContains the room type information.objectRequired
RoomTypeCodeSpecifies the room type ID.integerRequired
>>> RatePlansContains a RatePlan object.objectRequired
>>>> RatePlanContains the rate plan information.objectRequired
RatePlanCodeSpecifies the rate plan ID.integerRequired

Request example

<OTA_HotelProductNotifRQ>
  <HotelProducts HotelCode="64231">
    <HotelProduct ProductNotifType="Remove">
      <RoomTypes>
        <RoomType RoomTypeCode="6423112" />
      </RoomTypes>
      <RatePlans>
        <RatePlan RatePlanCode="12483478" />
      </RatePlans>
    </HotelProduct>
  </HotelProducts>
</OTA_HotelProductNotifRQ>

Response

Response body

ElementAttributeDescriptionTypeNotes
OTA_HotelProductNotifRSContains the response data.object
> SuccessIndicates the success of the request.object
> WarningsGroups a list of individual warnings.object-
>> WarningLists details of individual warnings.objectWarnings can occur even if the response contains Success.
CodeOTA EWT code.stringSee Error codes.
DetailsContains additional context about where the warning occurred.stringMay include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the warning.
ShortTextWarning message.string-
> ErrorsGroups a list of individual errors.object-
>> ErrorLists details of individual errors.object-
CodeOTA EWT code.stringSee Error codes.
DetailsContains additional context about where the error occurred.stringMay include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the error.
ShortTextError message.string-
<!-- RUID: [...] -->XML comment appended after the closing tag containing the unique request ID.stringYou can send this ID to Booking.com customer support if you run into an issue.

Success response

<OTA_HotelProductNotifRS Version="3.000">
  <Success />
</OTA_HotelProductNotifRS>
<!-- RUID: [UmFuZG9tSVYkc2RlIyh9YUedwgregreg3/GcBkCkoW0/uhiPmwiL6pcbMzyiykpi6Yx5oKzRKEMxDhfrI] -->


Retrieve roomrates

Booking.com provides two endpoints to retrieve roomrate details using two different specifications:

Using the OTA endpoint

GET
https://supply-xml.booking.com/hotels/ota/OTA_HotelProductNotif

The 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 parameter

HeaderDescriptionTypeRequired/
Optional
Notes
Accept-VersionSpecify the version number to get the API functionality specific to that version.stringoptionalVersion 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.

Query parameters

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

ElementDescriptionTypeRequired/OptionalNotes
HotelCodeSpecifies the unique ID of the property you want to retrieve the active rate plans for.integerrequired
OverridePolicyStartSpecifies the start of the date range for which you want to retrieve policy override information.stringoptionalFollows the format (YYYY-MM-DD).
OverridePolicyEndSpecifies the end of the date range for which you want to retrieve policy override information.stringRequired if OverridePolicyStart is specifiedFollows the format (YYYY-MM-DD).
IncludeReadOnlyInclude 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.booleanoptionalSpecify:
1 - Include read-only roomrates,
0 - Exclude read-only roomrates (default)
SupportRateRewriteIf set, then the API skips rates that have been rewritten to another rate.booleanoptionalSpecify:
1 - Skip rewritten roomrates,
0 - Include rewritten roomrates (default)

Query parameter example

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

Response body example

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=] -->


Response body parameters

The following table describes the response elements:

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
>>> ValueAddInclusionsContains meal plan detailsobject
>>>> MealPlanContains the meal plan information.object
MealPlanCodeSpecifies the meal plan ID.integerTo see the list of meal plan codes at Booking.com, see meal plan codes.
>>> PolicyInfoContains cancellation and prepayment policy detailsobject
>>>> BookingRulesContains the BookingRule objects.object
>>>>> BookingRuleContains the booking policy information.object
MinAdvancedBookingOffsetSpecifies 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.stringResponse values use whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)?
MaxAdvancedBookingOffsetSpecifies 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.stringResponse values use whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)?
ReleaseTimeOfDayStartSpecifies the time of day from which the room type can start being booked.integerThe 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.
ReleaseTimeOfDayEndSpecifies the time of day after which the room type can no longer be booked.integerThe 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.
>>>> CancelPenaltyContains individual cancellation and prepayment policy detailsobject
PolicyCodeSpecifies the cancellation penalty code.integer
PolicyIdSpecifies the unique ID of the policy.integer
PolicyNameSpecifies the name of the policy.string
>>>>> TPA_ExtensionsContains the no show information.object
>>>>>> NoShowPolicyContains the no show penalty details.object
PenaltySpecifies the penalty charged in case the guest does not turn up for the reservation.enumerated stringPossible 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.
>>>> GuaranteePaymentPolicyContains the guarantee payment details.object
>>>>> GuaranteePaymentContains the guarantee payment details.object
EffectiveFromSpecifies when the guarantee payment is charged.enumerated stringPossible 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.
PrePaymentRequiredSpecifies whether a guarantee payment is mandatory.booleanPossible values are:
- true: Guarantee payment required
- false: Guarantee payment is not required
>>>> OverridePoliciesContains the policy override elements.object
>>>>> OverridePolicyContains a policy override element.object
PolicyCodeSpecifies the cancellation policy (override) code.integerTo see the list of cancellation and prepayment policy codes at Booking.com, see cancellation and prepayment policies.
>>>>>> BookDatesContains the BookDate object.object
>>>>>> BookDateContains the overriding date.object
StartSpecifies the start date of the override policy.stringFollows the format: YYYY-MM-DD.
EndSpecifies the end date of the override policy.stringFollows the format: YYYY-MM-DD.
>>> ValueAddedServicesSpecifies the details for the value-added services.object
NameSpecifies a name for the value-add collection.string-
>>>> ValueAddedServiceSpecifies details for each of the value-added services. For the full list of supported service IDs and their attributes, see the Catalog API.object
ServiceIdSpecifies the Booking.com value-add service ID.enumerated integerFor a list of supported services and their IDs, get the latest list of value adds using the catalog API.
>>> TPA_ExtensionsContains pricing type information.object
>>>> PricingTypeContains the pricing and occupancy details.objectOnly available when you enable the feature: Include products extra info
(include_extra_info_room_rates) using the Provider portal.
ValueSpecifies the pricing type.enumerated stringPossible values are:
- Standard
- RLO
- OBP
- LOS
Price1Specifies whether the roomrate accepts a single occupancy price.booleanPossible values are:
true - Accepts single occupancy price
false - Does not support single occupancy price.
>>>>> OccupancyContains the maximum occupancy details specified while creating derived pricing.objectFor more information on how to set derived pricing, see Create or update derived pricing rates.
MaxAdultOccupancySpecifies the maximum number of occupants allowed to stay for this rate.integer
Percent/AmountSpecifies the pricing as a percentage of the base price or as an additional amount from the base price.integerFor 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.
RoundSpecifies whether the pricing is rounded down to two digits. Possible values are:
- 0 : not rounded down
- 1: Rounded down to two digits
enumerated string
>>>> RateRelationIf the rate plan is a child of a parent rate plan, then this object contains information on the inherited rate attributes.object
ParentRatePlanCodeSpecifies the rate plan ID of the parent rate planstring
PercentSpecifies the percentage in relation to the price connected to the parent rate plan.floatMinimum value: 1. Maximum value: 200. For example, 80 refers to a 20% discount, while 120 refers to a 20% surplus.
AmountSpecifies the Fixed added amount in relation to the price connected to the parent rate planfloatCan be a positive or negative number
FollowsPriceIndicates whether the rate relation follows the price of the parent rate plan.booleanPossible values: true and false (Follows parent rate plan). Default: true
FollowsRestrictionsIndicates whether the rate relation follows the restrictions of the parent rate plan.booleanPossible values: true and false (Follows parent rate plan). Default: true
FollowsPolicyIndicates whether the rate relation follows the policies of the parent rate plan.booleanPossible values: true and false (Follows parent rate plan). Default: true
FollowsClosedIndicates whether the rate relation follows the status of the parent rate plan.booleanPossible 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.
>>> AdditionalGuestAmountsContains the AdditionalGuestAmount elements.array
>>>> AdditionalGuestAmountContains the children pricing details.object
AgeQualifyingCodeSpecifies that the prices are for children.integerYou 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).
AgeBucketIDSpecifies the ID of the property-level age bucket.integerYou must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
MinAgeSpecifies the beginning of an age range.integerYou must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
MaxAgeSpecifies the end of an age range and is inclusive.integerYou must either use AgeBucketID or MinAge with MaxAge. However, the MinAge to MaxAge age range must match an existing age bucket age range.
AmountSpecifies the price for a child within a certain age bucket.integerThe price cannot exceed the adult price for the roomrate. You must use either Amount and DecimalPlaces, or Percent alone.
DecimalPlacesSpecifies the number of decimal places to apply to Amount.integerThe default value is 0, which means the value of Amount is without a decimal point.
AmountSpecifies the price for a child within a certain age bucket.integerThe price cannot exceed the adult price for the roomrate. You must use either Amount and DecimalPlaces, or Percent alone.
PercentSpecifies the price for the child as a percentage of the adult price.integerPossible value between 0 and 100. You must use either Amount and DecimalPlaces, or Percent alone.
AdditionalGuestNumberSpecifies the order of prices within the same age bucket.integerThis 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.
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.

^ Depending on the value adds, some attributes might be available or missing. For more information, see the response from the Catalogs API.

Using the B.XML endpoint

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

The 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 parameter

HeaderDescriptionTypeRequired/
Optional
Notes
Accept-VersionSpecify the version number to get the API functionality specific to that version.stringoptionalCurrently 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.

Body parameters

The following table describes the elements you can add in the request body:

ElementDescriptionTypeRequired/OptionalNotes
requestContains the request information.objectrequired
> hotel_idSpecifies the unique ID of the property you want to retrieve the active rate plans for.integerrequired
> policy_override_startSpecifies the start of the date range for which you want to retrieve policy override information.stringoptional
> policy_override_endSpecifies the end of the date range for which you want to retrieve policy override information.stringrequired if policy_override_start is specified
> support_rate_rewriteSpecifies whether the API should include rewritten rate details.booleanoptionalPossible value:
- 0 : Include all rates including rewritten rate plan details.
- 1 : Do not include rewritten rate plan details.

Request body example 1

The following is a request body example:

<request>
   <hotel_id>8011855</hotel_id>
   <support_rate_rewrite>0</support_rate_rewrite>
</request>

Request body example 2

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>

Response body example

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] -->

Response body parameters

The following table describes the response elements:

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).
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.
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
readonlySpecifies whether the rate plan is read only.booleanYou can set the readonly property only through the Extranet.
>>>> occupanciesLists all occupancies from 1 to max_persons when pricing type is OBP.object
>>>> meal_planContains the meal plan information.object
meal_plan_codeSpecifies the meal plan ID.integerTo see the list of meal plan codes at Booking.com, see meal plan codes.
>>>> policiesContains the cancellation policy details.object
>>>>> booking_rulesContains the BookingRule objects.object
>>>>>> booking_ruleContains the booking policy information.object
min_advanced_booking_offsetSpecifies 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.stringResponse values use whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)?
max_advanced_booking_offsetSpecifies 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.stringResponse values use whole-number days, hours, or days followed by hours: `^P(?:\d+D(?:\d+H)?
release_time_of_day_startSpecifies the time of day from which the room type can start being booked.integerThe 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_endSpecifies the time of day after which the room type can no longer be booked.integerThe 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_policyContains the CancelPenalty object.object
>>>>> cancel_penaltyContains the policy information.object
policy_codeSpecifies the cancellation policy code.integerFor a full list of all the available cancellation codes, see the cancellation policy codes.
>>>>>>> policy_overridesContains the policy override elements.object
>>>>>>>> policy_overrideContains a policy override element.object
start_dateSpecifies the start date of the override policy.stringFollows the format: YYYY-MM-DD.
end_dateSpecifies the end date of the override policy.stringFollows the format: YYYY-MM-DD.
policy_codeSpecifies the cancellation policy (override) code.integerTo see the list of cancellation and prepayment policy codes at Booking.com, see cancellation and prepayment policies.
>>>> guarantee_payment_policyContains the guarantee payment details.object
>>>>> guarantee_paymentContains the guarantee payment details.object
policy_codeDeprecated. Please ignore this field. effective_from and required indicate the guarantee payment policyinteger
effective_fromSpecifies when the guarantee payment is charged.enumerated stringPossible 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.
requiredSpecifies whether a guarantee payment is mandatory.booleanPossible values are:
- 1: Guarantee payment required
- 0: Guarantee payment is not required
>>>> pricingContains the pricing details.objectOnly available when you enable the feature: Include products extra info
(include_extra_info_room_rates) using the Provider portal.
typeSpecifies the pricing type.enumerated stringPossible values are:
- Standard
- RLO
- OBP
- LOS
price1Specifies whether the roomrate accepts a single occupancy price.booleanPossible values are:
1 - Accepts single occupancy price
0 - Does not support single occupancy price.
>>>>> additional_guestsContains the price elements for flexible child rate details (if they are already defined).array
>>>>>> priceContains the children pricing details.object
typeSpecifies that the prices are for children.string
additional_guest_numberSpecifies the order of prices within the same age bucket.integerFor 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_idSpecifies the ID of the property-level age bucket.integer
from_ageSpecifies the beginning of an age range.integer
to_ageSpecifies the end of an age range and is inclusive.integer
additionalSpecifies the fixed price for a child within a certain age bucket.integer
percentageSpecifies the price for the child as a percentage of the adult price.integerPossible value between 0 and 100.
>>>> rate_relationIf the rate plan is a child of a parent rate plan, then this object contains information on the inherited rate attributes.object
parent_rate_idSpecifies the rate plan ID of the parent rate planstring
percentageSpecifies the percentage in relation to the price connected to the parent rate plan.integerMinimum value: 1. Maximum value: 200. For example, 80 refers to a 20% discount, while 120 refers to a 20% surplus.
additionalSpecifies a fixed amount to add to (or subtract from) the parent rate plan pricefloatCan be a positive or negative number
follows_priceIndicates whether the rate relation follows the price of the parent rate plan.booleanPossible values: 0 and 1 (Follows parent rate plan). Default: 1
follows_restrictionsIndicates whether the rate relation follows the restrictions of the parent rate plan.booleanPossible values: 0 and 1 (Follows parent rate plan). Default: 1
follows_policygroup_idIndicates whether the rate relation follows the policies of the parent rate plan.booleanPossible values: 0 and 1 (Follows parent rate plan). Default: 1
follows_closedIndicates whether the rate relation follows the status of the parent rate plan.booleanPossible 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.
>>>>> occupancyContains the occupancy details that you set using the derived pricing endpoint for multiple occupancies for a room type that has RLO pricing.
personsSpecifies the number of occupants.integer
percentage/additionalSpecifies the pricing as a percentage of the base price or as an additional amount from the base price.integerFor 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.
roundSpecifies 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_servicesSpecifies the details for the value-added services.object
nameSpecifies a name for the value-add collection.string-
>>>> value_added_serviceSpecifies details for each of the value-added services. For the full list of supported service IDs and their attributes, see the Catalog API.object
idSpecifies the Booking.com value-add service ID.enumerated integerFor a list of supported services and their IDs, get the latest list of value adds using the catalog API.
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.
Missing roomrates in the response?

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 as XML 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 Rates are child rates that properties manage in the extranet, while providers retrieve reservations with the parent rate specified. You can change the value to 0 in the query parameter support_rate_rewrite or SupportRateRewrite in your retrieval requests to get the missing roomrates included in the response. For more information, see What is Rate Rewrite.

Error codes

The following table lists the possible error codes you may encounter when managing roomrates:

Error CodeError MessageDescriptionResolution
44Either Percent, Adult Percent or Amount should exist, and only one should be definedInvalid additional guest pricing configuration.Ensure exactly one of Percent, Adult Percent, or Amount is specified for additional guest pricing.
44Cannot use percentage when setting children prices for OBP or LOS room ratesThe 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.
119Occupancy 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.
119Leading occupancy should be a positive number.The leading occupancy value is zero or negative.Set leading occupancy to a positive integer.
150Cannot 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.
320The 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.
320Duplicate value adds are provided.The request contains duplicate value-added services.Remove duplicate entries from the ValueAddedServices element.
320Exceeded 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.
320Pet 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.
320The 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.
320The 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.
320Provided 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.
320Bundle validation failed.The value-added service bundle configuration is invalid.Verify the value-added service attributes against the catalog API.
321There 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.
400Room ID is missingThe request does not include a room type identifier.Include the RoomTypeCode attribute in the request.
400RatePlanCode: Attribute is requiredThe RatePlanCode attribute is missing from the request.Include the RatePlanCode attribute in the request.
400RoomTypeCode: Attribute is requiredThe RoomTypeCode attribute is missing from the request.Include the RoomTypeCode attribute in the request.
400ProductNotifType: Attribute is requiredThe ProductNotifType attribute is missing from the request.Include the ProductNotifType attribute and set it to New, Overlay, or Remove.
400ProductNotifType: 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.
400ProductStatusType: Value should be one of [ Active, Deactivated ]The ProductStatusType value is not one of the accepted values.Set ProductStatusType to Active or Deactivated.
400MealPlanCode: 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.
400CancelPenalty: PolicyCode, PolicyId, or PolicyName attribute is requiredNo cancellation policy identifier was provided on CancelPenalty.Include at least one of PolicyCode, PolicyId, or PolicyName on the CancelPenalty element.
400CancelPenalty: missing PolicyCode, PolicyName, or PolicyId attributeNo cancellation policy identifier was provided on CancelPenalty.Include at least one of PolicyCode, PolicyId, or PolicyName on the CancelPenalty element.
400PolicyName: cannot be empty. You need to provide either policyName or policyIdPolicyName was provided but is empty.Provide a non-empty PolicyName value, or use PolicyId instead.
400BookDate: Start attribute is requiredThe Start attribute is missing from a BookDate element.Include the Start attribute on the BookDate element.
400BookDate: End attribute is requiredThe End attribute is missing from a BookDate element.Include the End attribute on the BookDate element.
400Start date should be less than or equal to end date for BookDate elementThe Start date is after the End date in a BookDate element.Set Start to a date that is on or before End.
400Value 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.
400ActiveWeekday: Day attribute is requiredThe Day attribute is missing from an ActiveWeekday element.Include the Day attribute on the ActiveWeekday element.
400Day: 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.
400Day: 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.
400FCR: You need to set additional guest Amount, Percent or AdultPercentA FreeChildrenRate element was included without specifying a price adjustment.Specify Amount, Percent, or AdultPercent for the free children rate.
400Time: Invalid format, expected HH:MM or HHA time value does not follow the expected format.Use the HH:MM or HH format for time values.
400Time: Hour must be 0-23, minute must be 0-59A 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.
400Duration: Invalid ISO-8601 duration formatA duration value does not follow the ISO 8601 duration format.Use a valid ISO 8601 duration format, such as P5D or P1H.
400TargetChannel: 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.
400PricingType: 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.
400NoShowPolicy 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.
400EffectiveFrom: 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.
403Request 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.
497The provided currency code is invalid.The currencyCode value does not follow the ISO 4217 standard.Use a valid ISO 4217 currency code.
497Limit 400 of number of Roomrates has reachedThe property has reached the maximum limit of 400 active roomrates.Remove unused roomrates before creating new ones.
497Multiple products for the same Room ID: {room_id} and Rate ID: {rate_id} are not supported in a single requestThe request contains duplicate room-rate combinations.Send each room-rate combination only once per request.
497Invalid 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.
497Room 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.
497Rate 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.
497Rate '{rate_id}' is only editable on ExtranetThe 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.
497CancelPenalty: conflicting PolicyID, PolicyName attributes definedBoth PolicyId and PolicyName were specified on CancelPenalty.Use only PolicyId to assign a cancellation policy.
497Policy overrides are not allowed for net ratesOverridePolicies was included in a request for a net rate product.Remove the OverridePolicies element from net rate requests.
497Value Added Services are not allowed for net ratesValueAddedServices was included in a request for a net rate product.Remove the ValueAddedServices element from net rate requests.
497Room ID '{room_id}' does not belong to the propertyThe room type with the specified ID does not exist at the property.Verify the RoomTypeCode exists for the property by retrieving room types.
497PolicyName 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.
497Net rate products only support 'net_narrow' or 'net_broad' channel valuesA 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 productsA 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.
497Request 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.
500Internal server errorAn unexpected error occurred on the server.Retry the request. If the issue persists, contact support.
733Room-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.
733Defined 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.
733MaxOccupancy is not supported for products with LOS (Length of Stay) or OBP (Occupancy-Based Pricing) modelsMaxOccupancy was set on a roomrate that uses LOS or OBP pricing.Remove MaxOccupancy for LOS or OBP roomrates.
733Cannot 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.
733Cannot 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.
733Invalid 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.
733Invalid 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.
733Invalid 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.
733Cannot 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.
733Hotel is not eligible to create Mobile Rate PlansThe property is not configured to support mobile rate plans.Contact support to enable mobile rate plans for the property.
733Defined 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.
733Defined 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.
733Net rates must have a non-refundable policyA non-refundable cancellation policy was not set on a net rate product.Assign a non-refundable cancellation policy to net rate products.
733Invalid 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.
733Invalid 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.
733Invalid 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.