Update rates
Use the availability endpoint to:
- Set adult prices by specifying room type, rate plan and date.
- Set prices for children by specifying room type, rate plan and date. Check flexible children rates.
Booking.com supports different pricing models. Ensure you're using the correct pricing approach for your property For more information on pricing models, see Pricing Models.
Usage recommendations
Specify availability in advance: You should specify the availability of your connected properties at least 12 months in advance.
Use Delta Updates Only
- Utilize the roomRateAvailability API to compare system states
- Send only changes (deltas), not full system refreshes
Single Hotel Per Request
- All updates in a request must belong to one hotel
- Do not mix multiple hotels in the same request
Monthly Batching
- Break down updates by month
- Each request should cover a single month period
Room-Rate Grouping
- Multiple room-rates can be grouped together in the same request
- Must be for the same hotel and same month period
Endpoint
POST https://supply-xml.booking.com/hotels/ota/OTA_HotelRateAmountNotifRequest
Headers
| Header | Description | Type | Required | Notes |
|---|---|---|---|---|
Accept-Version | Specify the version number to get the API functionality specific to that version. | string | Required | Supports the following values: - 1.1: Current version (default) |
Content-Type | Request content type | string | Required | Must be application/xml |
Request body
| Element | Attribute | Description | Type | Required | Notes |
|---|---|---|---|---|---|
OTA_HotelRateAmountNotifRQ | Root element for rate update requests | object | Required | - | |
> RateAmountMessages | Container for one or more rate updates | object | Required | - | |
>> RateAmountMessage | Contains details about a specific rate update | object | Required | - | |
>>> StatusApplicationControl | Defines which room, rate, and dates to update | object | Required | - | |
Start | Start date for the update period | date | Required | Format: YYYY-MM-DD (inclusive). Supports dates from 1 day in the past (follows Central European Time (CET) timezone) and up to 5 years in future | |
End | End date for the update period | date | Required | Format: YYYY-MM-DD (inclusive). Supports dates from 1 day in the past (follows Central European Time (CET) timezone) and up to 5 years in future | |
RatePlanCode | The Booking.com rate plan ID | string | Required | - | |
InvTypeCode | The Booking.com room type ID | string | Required | - | |
Mon | Apply to Mondays | boolean | Optional | Default: true. See day of week behavior | |
Tue | Apply to Tuesdays | boolean | Optional | Default: true. See day of week behavior | |
Wed | Apply to Wednesdays | boolean | Optional | Default: true. See day of week behavior | |
Thu | Apply to Thursdays | boolean | Optional | Default: true. See day of week behavior | |
Fri | Apply to Fridays | boolean | Optional | Default: true. See day of week behavior | |
Sat | Apply to Saturdays | boolean | Optional | Default: true. See day of week behavior | |
Sun | Apply to Sundays | boolean | Optional | Default: true. See day of week behavior | |
>>> Rates | Container for rate pricing information | object | Optional | - | |
>>>> Rate | Contains pricing details | object | Conditional | Required when Rates element is specified | |
>>>>> BaseByGuestAmts | Container for base pricing by guest count | object | Optional | - | |
>>>>>> BaseByGuestAmt | Specifies the price for the room | object | Conditional | Required when BaseByGuestAmts element is specified | |
AmountAfterTax | Price including all taxes | decimal | Conditional* | Mutually exclusive with AmountBeforeTax. Use when room has both "Including VAT" and "Including taxes" enabled. 0 means room/rate/date is not available | |
AmountBeforeTax | Price before taxes | decimal | Conditional* | Mutually exclusive with AmountAfterTax. Use when room doesn't have both tax settings enabled. 0 means room/rate/date is not available | |
DecimalPlaces | Number of decimal places | integer | Optional | Example: 8550 with DecimalPlaces="2" represents 85.50 | |
NumberOfGuests | Specifies the prices for number of occupants (adults and children that are priced as adults). | integer | Optional | Set to 1 for single occupancy pricing. Maximum value is the room maximum adult occupancy. Used only for OBP pricing model and LOS pricing model. Verify you're using the correct pricing model | |
CurrencyCode | ISO 4217 currency code | string | Required | Must match the hotel's configured currency on Booking.com |
Request examples
Example 1: Update prices for multiple rates
The following example updates prices for two different rate plans on the same room type:
- Sets price for room (id=801185512) and rate (id=25278032) to €38.00 for 4 guests on Sundays only from November 19 to December 20, 2023
- Sets price for room (id=801185512) and rate (id=25278036) to €55.00 per night for all days from November 19 to December 20, 2023
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.opentravel.org/OTA/2003/05"
xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelRateAmountNotifRQ.xsd"
TimeStamp="2023-11-12T11:34:05"
Version="3.000">
<RateAmountMessages>
<RateAmountMessage LocatorID="1">
<StatusApplicationControl
Mon="false"
Tue="false"
Wed="false"
Thu="false"
Fri="false"
Sat="false"
Sun="true"
Start="2023-11-19"
End="2023-12-20"
RatePlanCode="25278032"
InvTypeCode="801185512" />
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt
AmountBeforeTax="3800"
DecimalPlaces="2"
NumberOfGuests="4"
CurrencyCode="EUR" />
</BaseByGuestAmts>
</Rate>
</Rates>
</RateAmountMessage>
<RateAmountMessage LocatorID="2">
<StatusApplicationControl
Start="2023-11-19"
End="2023-12-20"
RatePlanCode="25278036"
InvTypeCode="801185512"/>
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt
AmountAfterTax="5500"
DecimalPlaces="2"
CurrencyCode="EUR"/>
</BaseByGuestAmts>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>Example 2: Update single occupancy and standard pricing
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.opentravel.org/OTA/2003/05"
xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelRateAmountNotifRQ.xsd"
TimeStamp="2024-01-15T10:30:05"
Version="3.000">
<RateAmountMessages>
<RateAmountMessage LocatorID="1">
<StatusApplicationControl
Start="2024-02-01"
End="2024-02-29"
RatePlanCode="1278606"
InvTypeCode="36745604"/>
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt
AmountAfterTax="3800"
DecimalPlaces="2"
NumberOfGuests="1"
CurrencyCode="EUR"/>
</BaseByGuestAmts>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>Response
Response body
| Element | Attribute | Description | Type | Notes |
|---|---|---|---|---|
OTA_HotelRateAmountNotifRS | Root element. | object | - | |
> Success | Indicates a successful request. | object | Only returned if there are no Errors elements. | |
> Warnings | Groups a list of individual warnings. | object | - | |
>> Warning | List details of individual warnings. | object | Warnings can occur even if the response contains Success. | |
Code | Returns an error code for an error. | string | See Troubleshooting availability error responses | |
Details | Contains additional context about where the warning occurred. | string | May include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the warning. | |
ShortText | Warning message. | string | - | |
> Errors | Groups a list of individual errors. | object | - | |
>> Error | List details of individual errors. | object | - | |
Code | Returns an error code for an error. | string | See Troubleshooting availability error responses | |
Details | Contains additional context about where the error occurred. | string | May include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the error. | |
ShortText | Error message. | string | - |
Response examples
This section contains examples of successful and unsuccessful responses. For a detailed description of all possible errors and warnings, see Troubleshooting availability error responses.
Success response
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRS
xmlns="http://www.opentravel.org/OTA/2003/05"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05/OTA_HotelAvailNotifRS.xsd"
Version="1.004" TimeStamp="2026-02-12T15:35:01.665872Z">
<Success />
</OTA_HotelRateAmountNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXX==] -->Success response with warnings
Warnings can be combined with success messages if the request was still processed:
<?xml version="1.0" encoding="UTF-8"?>
<?xml version='1.0' encoding='UTF-8'?>
<OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelRateAmountNotifRS.xsd"
Version="1.004" TimeStamp="2026-02-12T15:44:22.321141Z">
<Warnings>
<Warning Code="WARN_DUPLICATE_DATES" ShortText="Request contains duplicate dates, we have applied only the first occurrence" Details="room_ids: 12345; rate_ids: 45678; dates: 2026-02-19; hotel_ids: 9876;"/>
</Warnings>
<Success/>
</OTA_HotelRateAmountNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXX==] -->Error response
Errors are only returned without success/warnings:
<?xml version='1.0' encoding='UTF-8'?>
<OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelRateAmountNotifRS.xsd"
Version="1.004" TimeStamp="2026-02-12T16:26:57.077791Z">
<Errors>
<Error Code="RATE_NOT_ACTIVE_FOR_ROOM" ShortText="Rate '1234' is not active for room '4567'" Details="room_ids: 4567; hotel_ids: 9876; dates: 2027-02-12,2027-02-12; rate_ids: 1234;"/>
</Errors>
</OTA_HotelRateAmountNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXX==] -->Additional information
Day of week behavior
When specifying days of the week (Mon, Tue, Wed, Thu, Fri, Sat, Sun):
- If you set some days to
trueand omit others, the omitted days default tofalse - If you explicitly set some days to
falsewithout setting any totrue, all days will be treated astrue - If all day attributes are omitted, all days default to
true
Price limits and validation
The maximum price you can set for a room is €50,000 (or equivalent) per night.
Setting availability for child rates
While setting up availability using rate IDs that are configured as child rates, make sure the request doesn't set values for fields that are configured to inherit from the parent rate plan.
For example, if you try to set price when FollowsPrice is set, the API returns an error.
To resolve the error, specify a rate plan ID that is either configured as a parent rate, or a child rate that does not have the following restrictions: FollowsPrice