# Managing roomrates
A roomrate is a unique combination of room type, rate plan and conditions. Creating a roomrate helps in creating [inventory (availability)](/connectivity/docs/ari) and rates (prices) later.
Before creating a roomrate, make sure to create a room type using the [OTA_HotelInvNotif](/connectivity/docs/room-type-and-rate-plan-management/managing-room-types#creating-a-room-type) endpoint and a rate plan using the [OTA_HotelRatePlanNotif](/connectivity/docs/room-type-and-rate-plan-management/managing-rate-plans#creating-a-rate-plan) endpoint.
* Policy: Refers to a combination of a cancellation and a prepayment policy.
* Cancellation policy: Refers to whether there is and what the penalty is for a guest if they cancel a booking within a given time frame.
* Prepayment policy: Refers to whether and when the property takes a prepayment from the guest.
* Override policy: Refers to a policy that you can set on certain dates to overwrite the policy already assigned to a roomrate.
* Booking restrictions: Refers to certain restrictions you can set when it comes to booking a roomrate.
* Meal plan: Refers to whether there is and what the meal plan is assigned to the roomrate.
* Value adds: Offer value-added services or products to guests as part of the room reservation. The price of a value-added service or product is included in the room rate. For more information on how to set up value adds, see [Setting up value adds.](#set-up-value-adds)
You need roomrates to create and [push inventory (availability) and rates (prices).](/connectivity/docs/ari)
## Managing policies and restrictions
It is very important to properly understand what policies and restrictions are and how to assign them to roomrates in the context of the `/ota/OTA_HotelProductNotif` endpoint. Read this before you start creating roomrates.
### What is a policy?
You must see a policy as a combination of a cancellation policy and a prepayment policy.
To find all the available cancellation codes, see [cancellation policies.](/connectivity/docs/codes-bccp) You can find *free* and *non-free* cancellations. Each one specifies the time frame in which a guest can cancel (with the exception of non-refundable with code `1`) and what the possible penalty is for a guest if they cancel after a specific deadline or deadlines.
A policy can also include a prepayment. If prepayment is required, it further specifies whether the prepayment must happen after a guest makes a reservation (`after_reservation_is_made`) or when the guest can no longer cancel for free (`after_cancellation_begins`).
When creating a roomrate, you can specify a cancellation policy that is already created on the property level. If you do not specify a policy, the `/ota/OTA_HotelProductNotif` endpoint assigns the default policy to the roomrate. To create and manage policies, use the [Policies API](/connectivity/docs/policies-api/managing-policies#creating-a-cancellation-policy). When assigning a policy to a roomrate, you must specify the policy ID.
### What is an override policy?
An override policy is a regular cancellation policy that you can use to override the main policy of a roomrate for a specified date range.
Let's say a property uses a flexible policy for most of the year, but they want to use a non-refundable policy for their peak season. That would be a likely use case for a policy override.
### What are restrictions?
Restrictions enable you to specify when a roomrate with a specific policy is available to book. You can set the following restrictions:
* `MinAdvancedBookingOffset`: Specify the closest available time (year, month, day, hours) until a guest can book a room type relative to their check-in time. In other words, this specifies the moment from when a guest can no longer book the roomrate. The search date is counted as one of the days in the restriction length. For example, if you specify P2D, then the guests cannot specify the next day as a check-in start date.
* `MaxAdvancedBookingOffset`: Specify the maximum time (year, month, day, hours) available in advance to book a room type relative to the check-in time. In other words, this specifies the moment from when a guest can start booking the roomrate. The search date is counted as one of the days in the restriction length. For example, if you specify P2D, then the guests can only book for stays that occur 2 or fewer days relative to the search date.
You can also set the specific hours in which a roomrate is available per day, but this is not recommended.
## Mapping room types and rate plans
When creating or updating a roomrate, you need to provide Booking.com's room type and rate plan identifiers.
To find the mapping between your room types, rate plans and Booking.com's:
- For room types: Use the [retrieve room types](/connectivity/docs/room-type-and-rate-plan-management/managing-room-types/#retrieving-active-room-types) endpoint and
- For rate plans: Use the [retrieve rate plans](/connectivity/docs/room-type-and-rate-plan-management/managing-rate-plans/#retrieving-active-rate-plans) endpoint.
For existing roomrates and their associated mappings:
- [Retrieve roomrates using the OTA endpoint](#using-the-ota-endpoint)
- [Retrieve roomrates using the B.XML endpoint](#using-the-b.xml-endpoint)
## What is the maximum number of roomrates the API supports?
You can create a maximum of 400 active roomrates for a property.
## Creating a roomrate
```http
POST https://supply-xml.booking.com/hotels/ota/OTA_HotelProductNotif
```
The `POST /ota/OTA_HotelProductNotif` request enables you to create roomrates for your property.
### Creating or updating
To create a roomrate you set `ProductNotifType` to `New`. Whereas, to update a roomrate, you set `ProductNotifType` to `Overlay`.
### Elements for creating a roomrate
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 `OTA_HotelInvNotif` endpoint, see [Creating room types.] [Creating room types](/connectivity/docs/room-type-and-rate-plan-management/managing-room-types#creating-a-room-type)
* Rate plan ID - To create a rate plan using the `OTA_HotelRatePlanNotif` endpoint, see [Creating rate plans.] [Creating rate plans](/connectivity/docs/room-type-and-rate-plan-management/managing-rate-plans#creating-a-rate-plan)
**Not mandatory but recommended to specify**
* Policy ID: Assign a policy (combination of cancellation and prepayment terms) to a roomrate. To create a cancellation policy for the property, use the [Policies API](/connectivity/docs/policies-api/managing-policies#creating-a-cancellation-policy).
**Note**: If you do not specify a cancellation policy, the property's default policy is assigned to the roomrate. To identify the default policy of the property, look for `` in the [GET /policies](/connectivity/docs/policies-api/managing-policies#retrieving-policy-details) response.
**Optional**
* Meal plan details: Indicate whether there is a meal plan and if so what that meal plan is.
* Override policy
* Booking rules
### Assigning policies to roomrates
You can only assign *existing policies* using the `/ota/OTA_HotelProductNotif` endpoint. That is, policies that were already created for the property.
Specify Policy ID
When assigning a policy to a roomrate, you must specify the policy ID.
To create or update policies for a property, you must:
* Use the [Policies API](/connectivity/docs/policies-api/managing-policies#creating-a-cancellation-policy), or
* Request the property to use their property page on the Booking.com extranet to create a policy.
To assign a policy while creating a roomrate, follow these steps:
1. [Retrieve the property's existing policies](/connectivity/docs/policies-api/managing-policies#retrieving-policy-details) and choose a policy to assign to a roomrate. Make sure to note the policy ID for the relevant policy. You can assign the same policy to many roomrates.
[Optional] If the property does not contain a policy with a suitable cancellation penalty, you can [create a policy](/connectivity/docs/policies-api/managing-policies#creating-a-cancellation-policy) for the property with an appropriate cancellation code. To know more about all the available cancellation codes, see the [cancellation policy codes](/connectivity/docs/policies-api/policy-codes).
2. Assign the policy by specifying the policy ID.
Roomrate always has a policy assigned
Whenever you create a roomrate, you must either specify a policy to be assigned to the roomrate or the API assigns the default policy to the roomrate. You cannot unassign a policy. You must either reassign a different policy to the roomrate by [updating the roomrate](/connectivity/docs/room-type-and-rate-plan-management/managing-roomrates/#updating-a-roomrate) or [change the policy details](/connectivity/docs/policies-api/managing-policies#changing-policy-details) that is already assigned to the roomrate.
You only need the cancellation policy code, because the prepayment policy is implicitly connected to this cancellation policy code. To know what each code represents, see the [cancellation policies.](/connectivity/docs/codes-bccp)
1. Assign the policy by adding the code to the `PolicyCode` element (`CancelPolicy` > `CancelPenalty` > `PolicyCode`).
## Assigning an override policy
Assigning an override policy is similar to assigning a policy to a roomrate.
To assign an override policy to a roomrate, follow these steps:
1. [Retrieve the property's existing policies](/connectivity/docs/policies-api/managing-policies#retrieving-policy-details) and choose a policy to assign to a roomrate.
2. Assign the overriding policy by specifying the policy ID.
Default policy assignment
If the policy ID is not supplied while creating the room rate, the API assigns the default policy to the roomrate. To identify the default policy, check for the `Default` tag in the [GET /policies](/connectivity/docs/policies-api/managing-policies#retrieving-policy-details) response.
→ To know what each policy name represents, find the policy code and see the [cancellation policies.](/connectivity/docs/codes-bccp)
### Set up value adds
To set up value adds, add the `ValueAddedServices` element along with other required parameters in the request body. For more information, see the [request body parameters](#valueadds)
table.
#### Using the pets category value adds
When using `pets` category value adds, you must follow certain restrictions depending on the property's location.
For more information, see [Restrictions when using the Pets value adds.](/connectivity/docs/room-type-and-rate-plan-management/managing-valueadds/#restrictions-when-using-the-pets-value-adds)
### Body parameters
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 roomtype. | integer | optional | Note that specifying this value overrides the value set at the time of [creating or updating the roomtype.](/connectivity/docs/room-type-and-rate-plan-management/managing-room-types/#creating-a-room-type) Also, the pricing type of the roomrate is changed to RLO. |
| **>>>** `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.](/connectivity/docs/codes-mpt) |
| **>>>** `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. To get a list of all the policies created for a property, see [get-policy-details](/connectivity/docs/policies-api/managing-policies#retrieving-policy-details). | integer | optional | If this parameter is not specified, the default policy is assigned to the roomrate. You can identify the default policy with the `` in the [GET /policies](/connectivity/docs/policies-api/managing-policies#retrieving-policy-details) 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 | |
| **>>>** `ValueAddedServices` | | Specifies the details for the value-added services. To learn more about valueadds, see the [introduction to valueadds.](/connectivity/docs/room-type-and-rate-plan-management/managing-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. | object | required | |
| | `ServiceId` | Specifies the Booking.com value-add service ID. | enumerated integer | required | For a list of supported services and their IDs, get the latest [list of value adds using the catalog API.](/connectivity/docs/room-type-and-rate-plan-management/implementing-value-adds-catalog-api) |
| | `parkingType`^ | Specifies the possible parking types when service ID is 1 (v1 IDs: 1001 and 1002). | string | required | Possible values: `Self`, `Valet` |
| | `creditAmount`^ | Specifies an amount for display purposes when service IDs are 2, 3, 4, 7, 8, 9 (v1 IDs: 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012). | integer | optional | Use this to show the perceived benefit of the value adds. |
| | `accruedDaily`^ | Specifies whether the value adds is accrued/renewed daily when service IDs are 2, 3, 4, 7 (v1 IDs: 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008). | boolean | optional | Possible values are: `true`, `false`. Use this to show the perceived benefit of the value adds. |
| | `currencyCode`^ | Specifies the currency code of the specified amount when service IDs are 2, 3, 4, 7, 8, 9 (v1 IDs: 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012). | string | optional | Default: Uses property's currency code. Follows ISO 4217 country codes. |
| | `amount`^ | Specifies a decimal value as a percentage when service IDs are 10, 11 (v1 IDs: 2009, 2010) for display purposes. | float | required | Use this to show the perceived benefit of the value adds. |
| | `minHour`^ | Specifies the minimum check-in time when service ID is 12 (v1 ID: 3001. | integer | optional | |
| | `maxHour`^ | Specifies the maximum check-in time when service IDs are 13, 14 (v1 ID: 3002, 3003). | integer | optional | |
| | `numHours`^ | Specifies the number of hours permitted at the Spa when service ID is 16 (v1 ID: 4002). | integer | required | |
| | `numMinutes`^ | Specifies the maximum massage duration per adult per stay when service ID is 17 (v1 ID:4003). | integer | required | |
| | `numPets`^ | Specifies the maximum number of pets allowed per stay per room when service ID is 22 (v1 ID:8001). | integer | required | |
| | `transferType`^ | Specifies the possible transfer types when service ID is 19 (v1 IDs: 6001 and 6002). | integer | required | Possible values: `Oneway`, `Roundtrip` |
| | `numDays`^ | Specifies the maximum number of days allowed per stay per room when service ID is 28. | integer | required | |
| **>>>>>>** `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 | |
| **>>>>>** `BookingRule` | | Contains the booking policy information. | object | optional | |
| | `MinimumAdvancedBookingOffset` | Specifies the minimum amount of time in which a room type must be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | optional | This is the format used: `P[0-9]+(Y,M,D,H)`. An example is: P5H means the room must be booked before 19:00 on the day before the check-in date. |
| | `MaximumAdvancedBookingOffset` | Specifies the maximum amount of time in which a room type can be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | optional | This is the format used: `P[0-9]+(Y,M,D,H)`. An example is: P14D means the room can be booked a maximum of 14 days before the check-in date. |
| | `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. |
^ Depending on the value adds, some attributes might be required or optional. For more information, see the response from the [Catalogs API.](/connectivity/docs/room-type-and-rate-plan-management/implementing-value-adds-catalog-api)
### Request body example
The following is a request body example:
### Response body example
The following is a successful response body example:
The following is a response body example when the limit of 400 roomrates is reached:
### Response body parameters
The following table describes the response elements:
| Element | Description | Type | Notes |
| --- | --- | --- | --- |
| `OTA_HotelProductNotifRS` | Contains the response data. | object | |
| **>** `success` | Indicates the success of the request. | object | |
| `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. |
## Updating a roomrate
```http
POST https://supply-xml.booking.com/hotels/ota/OTA_HotelProductNotif
```
The `POST /ota/OTA_HotelProductNotif` request enables you to update roomrates for your property.
When updating a roomrate, make sure to:
* Set `InvNotifType` to `Overlay`.
* Include all existing information: This means you send the roomrate information as if you create a new roomrate, changing the elements you want to update.
→ To retrieve most of your roomrate information, see [retrieving roomrates.](/connectivity/docs/room-type-and-rate-plan-management/managing-roomrates/#retrieving-active-roomrates)
→ To retrieve the policy details, see [Retrieve the property's existing policies.](/connectivity/docs/policies-api/managing-policies#retrieving-policy-details)
### Updating value adds
When updating value adds, make sure to add the existing value adds along with the updates.
Otherwise, in the overlay mode, the API updates only the specified value adds and the existing value adds that are missing in the update request are removed.
### Requirements for updating a roomrate
To create a roomrate on Booking.com, the following basic elements are required:
* Property ID
* Room type ID
* Rate plan ID
### Body parameters
The following table describes what 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 roomtype. | integer | optional | Note that specifying this value overrides the value set at the time of [creating or updating the roomtype.](/connectivity/docs/room-type-and-rate-plan-management/managing-room-types/#creating-a-room-type) Also, the pricing type of the roomrate is changed to RLO. |
| **>>>** `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.](/connectivity/docs/codes-mpt) |
| **>>>** `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. To get a list of all the policies created for a property, see [get-policy-details](/connectivity/docs/policies-api/managing-policies#retrieving-policy-details). | integer | optional | If this parameter is not specified, the default policy is assigned to the roomrate. You can identify the default policy with the `` in the [GET /policies](/connectivity/docs/policies-api/managing-policies#retrieving-policy-details) 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 | |
| **>>>** `ValueAddedServices` | | Specifies the details for the value-added services. Note that during an update, the provided value added services are added and missing ones removed. | object | optional | To learn more about valueadds, see the [introduction to valueadds.](/connectivity/docs/room-type-and-rate-plan-management/managing-valueadds) Updating 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. | object | required | |
| | `ServiceId` | Specifies the Booking.com value-add service ID. | enumerated integer | required | For a list of supported services and their IDs, get the latest [list of value adds using the catalog API.](/connectivity/docs/room-type-and-rate-plan-management/implementing-value-adds-catalog-api) |
| | `parkingType`^ | Specifies the possible parking types when service ID is 1 (v1 IDs: 1001 and 1002). | string | required | Possible values: `Self`, `Valet` |
| | `creditAmount`^ | Specifies an amount for display purposes when service IDs are 2, 3, 4, 7, 8, 9 (v1 IDs: 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012). | integer | required | Use this to show the perceived benefit of the value adds. |
| | `accruedDaily`^ | Specifies whether the value adds is accrued/renewed daily when service IDs are 2, 3, 4, 7 (v1 IDs: 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008). | boolean | required | Possible values are: `true`, `false`. Use this to show the perceived benefit of the value adds. |
| | `currencyCode`^ | Specifies the currency code of the specified amount when service IDs are 2, 3, 4, 7, 8, 9 (v1 IDs: 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012). | string | optional | Default: Uses property's currency code. Follows ISO 4217 country codes. |
| | `amount`^ | Specifies a decimal value as a percentage when service IDs are 10, 11 (v1 IDs: 2009, 2010) for display purposes. | float | required | Use this to show the perceived benefit of the value adds. |
| | `minHour`^ | Specifies the minimum check-in time when service ID is 12 (v1 ID: 3001. | integer | optional | |
| | `maxHour`^ | Specifies the maximum check-in time when service IDs are 13, 14 (v1 ID: 3002, 3003). | integer | optional | |
| | `numHours`^ | Specifies the number of hours permitted at the Spa when service ID is 16 (v1 ID: 4002). | integer | required | |
| | `numMinutes`^ | Specifies the maximum massage duration per adult per stay when service ID is 17 (v1 ID:4003). | integer | required | |
| | `numPets`^ | Specifies the maximum number of pets allowed per stay per room when service ID is 22 (v1 ID:8001). | integer | required | |
| | `transferType`^ | Specifies the possible transfer types when service ID is 19 (v1 IDs: 6001 and 6002). | string | required | Possible values: `Oneway`, `Roundtrip` |
| | `numDays`^ | Specifies the maximum number of days allowed per stay per room when service ID is 28. | integer | required | |
| **>>>>>>** `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 | |
| **>>>>>** `BookingRule` | | Contains the booking policy information. | object | optional | |
| | `MinimumAdvancedBookingOffset` | Specifies the minimum amount of time in which a room type must be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | optional | This is the format used: `P[0-9]+(Y,M,D,H)`. An example is: P5H means the room must be booked before 19:00 on the day before the check-in date. |
| | `MaximumAdvancedBookingOffset` | Specifies the maximum amount of time in which a room type can be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | optional | This is the format used: `P[0-9]+(Y,M,D,H)`. An example is: P14D means the room can be booked a maximum of 14 days before the check-in date. |
| | `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. |
^ Depending on the value adds, some attributes might be required or optional. For more information, see the response from the [Catalogs API.](/connectivity/docs/room-type-and-rate-plan-management/implementing-value-adds-catalog-api)
### Request body example
The following is a request body example:
### Response body example
The following is a successful response body example:
### Response body parameters
The following table describes the response elements:
| Element | Description | Type | Notes |
| --- | --- | --- | --- |
| `OTA_HotelProductNotifRS` | Contains the response data. | object | |
| **>** `success` | Indicates the success of the request. | object | |
| `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. |
## Troubleshooting value added service requests
The following table lists the possible error codes that you might encounter when creating or updating value added services.
| Error code | message |
| --- | --- |
| 321 | There is one or more missing parameters. |
| 320 | The provided parameter has an invalid value. |
| 61 | The provided currency code is invalid. |
| 320 | Duplicate value adds are provided. |
| 320 | Exceeded the limit of value adds per bundle. |
| 320 | Pet value add cannot be bundled with other value adds. |
| 320 | The provided parameter has invalid format. |
| 320 | The provided value is out of range. |
| 320 | Provided value adds contain one or more invalid ids and don't match any value add in our catalog. |
## Removing roomrates
```http
POST https://supply-xml.booking.com/hotels/ota/OTA_HotelProductNotif
```
The `POST /ota/OTA_HotelProductNotif` request enables you to remove a roomrate by disconnecting the room type and rate plan.
### Requirements for removing a roomrate
To remove a roomrate from Booking.com, you only need the following elements:
* Property ID
* Room type ID
* Rate plan ID
You must also set `ProductNotifType` to `Remove`.
#### Removing all value adds
To remove all existing value adds, specify an empty `ValueAddedServices` element using the `Overlay` mode in `ProductNotifType`.
For example:
```xml
....
....
....
....
```
### Body parameters
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 remove a roomrate. | enum | required | Value to remove a roomrate is `remove`. |
| **>>>** `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 | |
### Request body example
The following is a request body example:
### Response body example
The following is a successful response body example:
### Response body parameters
The following table describes the response elements:
| Element | Description | Type | Notes |
| --- | --- | --- | --- |
| `OTA_HotelProductNotifRS` | Contains the response data. | object | |
| **>** `success` | Indicates the success of the request. | object | |
| `ruid` | Specifies the unique ID of the request. | string | You can send this ID to Booking.com customer support if you run into an issue. This can help to understand what went wrong. |
## Retrieving active roomrates
Booking.com provides two endpoints to retrieve roomrates details using two different specifications:
- [Using the OTA endpoint](#using-the-ota-endpoint)
- [Using the B.XML endpoint](#using-the-b.xml-endpoint)
### Difference between implementing the OTA vs B.XML endpoints
Booking.com provides the [B.XML endpoint](#using-the-b.xml-endpoint) to retrieve active roomrates details.
Note that the endpoint doesn't return roomrates that specify deactivated room type or rate plan.
### Schema difference between the OTA and B.XML endpoint's response
The following table captures the high-level difference between the two endpoints' responses.
However, this is not an exhaustive list.
| Elements | Description | Available in OTA | Available in B.XML |
| --- | --- | --- | --- |
| `NoShowPolicy` | No show policy details | Yes | No |
| `room > hotel_name` | Property name | No | Yes |
| `room > room_name` | Roomtype name | No | Yes |
| `rate > max_persons` | Roomtype's maximum occupancy count | No | Yes |
| `rate > policy` | Cancellation policy name | No | Yes |
| `rate > rate_name` | Rate plan name | No | Yes |
| Same value but in a different name | | `HotelProduct > ChildRate` | `rate > is_child_rate` |
| Same value but in a different name | | `RoomType > MaxOccupancy` | `rate > fixed_occupancy` |
| | Difference between the both | `GuaranteePayment > EffectiveFrom` shows effective from value | `guarantee_payment > policy_code` shows cancellation policy code |
### Using the OTA endpoint
```http
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
| 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.2 (New version) Returns value added services with [v2 IDs](/connectivity/docs/room-type-and-rate-plan-management/implementing-value-adds-catalog-api#difference-between-version-1.0-and-2.0) additionally in the response. - 1.1 Returns value added services with v1 IDs additionally in the response. - 1.0 (default) returns without value adds details. |
### Query parameters
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) |
### 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:
### Response body parameters
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.](/connectivity/docs/codes-mpt) |
| **>>>** `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 which a room type must be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | This is the format used: `P[0-9]+(Y,M,D,H)`. An example is: P5H means the room must be booked before 19:00 on the day before the check-in date. |
| | `MaxAdvancedBookingOffset` | Specifies the maximum amount of time in which a room type can be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | This is the format used: `P[0-9]+(Y,M,D,H)`. An example is: P14D means the room can be booked a maximum of 14 days before the check-in date. |
| | `ReleaseTimeOfDayStart` | | string | |
| | `ReleaseTimeOfDayEnd` | | string | |
| **>>>>** `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.](/connectivity/docs/codes-bccp) |
| **>>>>>>** `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 | Returned only when the request includes an `Accept-version` header with a value set to 1.2 (returns value adds with new IDs) or 1.1 |
| | `Name` | Specifies a name for the value-add collection. | string | - |
| **>>>** `ValueAddedService` | | Specifies details for each of the value-added services. | object | Returned only when the request includes an `Accept-version` header with a value set to 1.2 (returns value adds with new IDs) or 1.1. |
| | `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.](/connectivity/docs/room-type-and-rate-plan-management/implementing-value-adds-catalog-api) |
| | `parkingType`^ | Specifies the possible parking types when service ID is 1 (v1 IDs: 1001 and 1002). | string | Possible values: `Self`, `Valet` |
| | `creditAmount`^ | Specifies an amount for display purposes when service IDs are 2, 3, 4, 7, 8, 9 (v1 IDs: 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012). | integer | Use this to show the perceived benefit of the value adds. |
| | `accruedDaily`^ | Specifies whether the value adds is accrued/renewed daily when service IDs are 2, 3, 4, 7 (v1 IDs: 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008). | boolean | Possible values are: `true`, `false`. Use this to show the perceived benefit of the value adds. |
| | `currencyCode`^ | Specifies the currency code of the specified amount when service IDs are 2, 3, 4, 7, 8, 9 (v1 IDs: 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012). | string | Follows ISO 4217 country codes. |
| | `amount`^ | Specifies a decimal value as a percentage when service IDs are 10, 11 (v1 IDs: 2009, 2010) for display purposes. | float | Use this to show the perceived benefit of the value adds. |
| | `minHour`^ | Specifies the minimum check-in time when service ID is 12 (v1 ID: 3001. | integer | |
| | `maxHour`^ | Specifies the maximum check-in time when service IDs are 13, 14 (v1 ID: 3002, 3003). | integer | |
| | `numHours`^ | Specifies the number of hours permitted at the Spa when service ID is 16 (v1 ID: 4002). | integer | |
| | `numMinutes`^ | Specifies the maximum massage duration per adult per stay when service ID is 17 (v1 ID:4003). | integer | |
| | `numPets`^ | Specifies the maximum number of pets allowed per stay per room when service ID is 22 (v1 ID:8001). | integer | |
| | `transferType`^ | Specifies the possible transfer types when service ID is 19 (v1 IDs: 6001 and 6002). | string | Possible values: `Oneway`, `Roundtrip` |
| | `numDays`^ | Specifies the maximum number of days allowed per stay per room when service ID is 28. | integer | |
| **>>>** `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.](/connectivity/docs/b_xml-derivedprices) |
| | `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 | |
| | `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`. |
| | `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` |
| | `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` |
| | `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. | integer | Minimum value: `1`. Maximum value: `200`. For example, `80` refers to a 20% discount, while `120` refers to a 20% surplus. |
| **>>>** `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.](/connectivity/docs/room-type-and-rate-plan-management/implementing-value-adds-catalog-api)
### Using the B.XML endpoint
```http
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](/connectivity/docs/con-faq-rates-availability/#what-is-rate-rewrite) details.
- Retrieve additional response details like [flexible children prices](/connectivity/docs/flexible-children-rates/managing-flexible-children-rates), 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
| 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]( [v2 IDs](/connectivity/docs/room-type-and-rate-plan-management/implementing-value-adds-catalog-api#difference-between-version-1.0-and-2.0)) 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:
| 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. |
### Request body example 1
The following is a request body example:
8011855
0
### Request body example 2
The following request body example retrieves roomrates that have policy overrides defined:
8011855
2024-01-12
2024-02-29
### Response body example
The following is a successful response body example:
### Response body parameters
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)](/connectivity/docs/pricing-models/#derived-pricing-model).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](/connectivity/docs/room-type-and-rate-plan-management/managing-room-types/#creating-a-room-type). |
| | `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 | |
| **>>>>** `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.](/connectivity/docs/codes-mpt) |
| **>>>>** `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 which a room type must be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | This is the format used: `P[0-9]+(Y,M,D,H)`. An example is: P5H means the room must be booked before 19:00 on the day before the check-in date. |
| | `max_advanced_booking_offset` | Specifies the maximum amount of time in which a room type can be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | This is the format used: `P[0-9]+(Y,M,D,H)`. An example is: P14D means the room can be booked a maximum of 14 days before the check-in date. |
| **>>>>** `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](/connectivity/docs/codes-bccp). |
| **>>>>>>>** `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.](/connectivity/docs/codes-bccp) |
| **>>>>** `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 | |
| | `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`. |
| | `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_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` |
| | `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. |
| **>>>>>** `occupancy` | | Contains the occupancy details that you set using the [derived pricing](/connectivity/docs/b_xml-derivedprices) 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 | Returned only when the request includes an `Accept-version` header with a value set to 1.3 (returns value adds with new IDs) or 1.2. |
| | `name` | Specifies a name for the value-add collection. | string | - |
| **>>>>** `value_added_service` | | Specifies details for each of the value-added services. | object | Returned only when the request includes an `Accept-version` header with a value set to 1.3 (returns value adds with new IDs) or 1.2. |
| | `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.](/connectivity/docs/room-type-and-rate-plan-management/implementing-value-adds-catalog-api) |
| | `parkingType`^ | Specifies the possible parking types when service ID is 1 (v1 IDs: 1001 and 1002). | string | Possible values: `Self`, `Valet` |
| | `creditAmount`^ | Specifies an amount for display purposes when service IDs are 2, 3, 4, 7, 8, 9 (v1 IDs: 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012). | integer | Use this to show the perceived benefit of the value adds. |
| | `accruedDaily`^ | Specifies whether the value adds is accrued/renewed daily when service IDs are 2, 3, 4, 7 (v1 IDs: 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008). | boolean | Possible values are: `true`, `false`. Use this to show the perceived benefit of the value adds. |
| | `currencyCode`^ | Specifies the currency code of the specified amount when service IDs are 2, 3, 4, 7, 8, 9 (v1 IDs: 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012). | string | Default: Uses property's currency code. Follows ISO 4217 country codes. |
| | `amount`^ | Specifies a decimal value as a percentage when service IDs are 10, 11 (v1 IDs: 2009, 2010) for display purposes. | float | Use this to show the perceived benefit of the value adds. |
| | `minHour`^ | Specifies the minimum check-in time when service ID is 12 (v1 ID: 3001. | integer | |
| | `maxHour`^ | Specifies the maximum check-in time when service IDs are 13, 14 (v1 ID: 3002, 3003). | integer | |
| | `numHours`^ | Specifies the number of hours permitted at the Spa when service ID is 16 (v1 ID: 4002). | integer | |
| | `numMinutes`^ | Specifies the maximum massage duration per adult per stay when service ID is 17 (v1 ID:4003). | integer | |
| | `numPets`^ | Specifies the maximum number of pets allowed per stay per room when service ID is 22 (v1 ID:8001). | integer | |
| | `transferType`^ | Specifies the possible transfer types when service ID is 19 (v1 IDs: 6001 and 6002). | string | Possible values: `Oneway`, `Roundtrip` |
| | `numDays`^ | Specifies the maximum number of days allowed per stay per room when service ID is 28. | integer | |
| `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.](/connectivity/docs/room-type-and-rate-plan-management/implementing-value-adds-catalog-api)
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 deactivated room type and/or rate plan. If you [deactivate a rate plan](/connectivity/docs/room-type-and-rate-plan-management/managing-rate-plans/#deactivating-causes-roomrates-to-be-deactivated), the endpoint does not return the roomrate created with the deactivated rate plan. Similarly the endpoint does not return roomrates that [specify deactivated room type.](/connectivity/docs/room-type-and-rate-plan-management/managing-room-types/#deactivating-causes-roomrates-to-be-deactivated)
- The missing roomrate is a roomrate that the property manages using the extranet. The extranet tags such roomrates as (`No XML Rates`) vs. roomrates that are managed using the API (`XML Rates`). The endpoint does not return roomrates managed by the 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](https://partner.booking.com/en-us/help/support-contact/contact/contacting-us-support) for assistance in migrating the roomrate to be supported using the API.
- You're trying to retrieve a child roomrate that specifies rate rewrite by calling the `POST /xml/roomrates` v.1.1 endpoint with `support_rate_rewrite` specified as `1` or the `GET OTA_HotelProductNotif` endpoint with `SupportRateRewrite` specified as `1`. `XML Res Rates` are child rates that property manages the prices and restrictions in the extranet, while providers retrieve the 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.
In rare cases, you can map XML Res Rates when it is not rewritten from any parent rate. Since the rate rewrite is not complete, you should inform properties that they need to [get in touch with the Booking.com local support team](https://partner.booking.com/en-us/help/support-contact/contact/contacting-us-support) to complete the rate rewrite configuration of the XML Res Rates.
For more information about rate rewrite and different types of rates, see [What is Rate Rewrite](/connectivity/docs/con-faq-rates-availability/#what-is-rate-rewrite).