# 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](/connectivity/docs/flexible-children-rates/managing-flexible-children-rates#sending-and-updating-children-prices-bxml).


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](/connectivity/docs/pricing-models).

## Usage recommendations

1. **Specify availability in advance**: Provide availability for at least 12 months ahead.
2. **Use Delta Updates Only**: Send only changes using the [roomRateAvailability API](/connectivity/docs/b_xml-roomrateavailability), not full refreshes.
3. **Single Hotel Per Request**: All updates must belong to one hotel only.
4. **Monthly Batching**: Break down updates by month: one month per request.
5. **Room-Rate Grouping**: Multiple room-rates can be grouped in the same request for the same hotel and month.


## Endpoint


```http
POST https://supply-xml.booking.com/hotels/ota/OTA_HotelRateAmountNotif
```

## Request

### 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](#day-of-week-behavior) |
|  | `Tue` | Apply to Tuesdays | boolean | Optional | Default: `true`. See [day of week behavior](#day-of-week-behavior) |
|  | `Wed` | Apply to Wednesdays | boolean | Optional | Default: `true`. See [day of week behavior](#day-of-week-behavior) |
|  | `Thu` | Apply to Thursdays | boolean | Optional | Default: `true`. See [day of week behavior](#day-of-week-behavior) |
|  | `Fri` | Apply to Fridays | boolean | Optional | Default: `true`. See [day of week behavior](#day-of-week-behavior) |
|  | `Sat` | Apply to Saturdays | boolean | Optional | Default: `true`. See [day of week behavior](#day-of-week-behavior) |
|  | `Sun` | Apply to Sundays | boolean | Optional | Default: `true`. See [day of week behavior](#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](/connectivity/docs/pricing-models#occupancy-based-pricing-obp) and [LOS pricing model](/connectivity/docs/pricing-models#length-of-stay-los). Verify you're using the correct [pricing model](/connectivity/docs/pricing-models) |
|  | `CurrencyCode` | ISO 4217 [currency code](/connectivity/docs/b_xml-countrycurrencies) | 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
<?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
<?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](/connectivity/docs/b_xml-availability-troubleshooting) |
|  | `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](/connectivity/docs/b_xml-availability-troubleshooting) |
|  | `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](/connectivity/docs/b_xml-availability-troubleshooting).

#### Success response


```xml
<?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
<?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
<?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 `true` and omit others, the omitted days default to `false`
- If you explicitly set some days to `false` without setting any to `true`, all days will be treated as `true`
- If all day attributes are omitted, all days default to `true`


### Price limits and validation

v1.0 behavior: €50,000 maximum price
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](/connectivity/docs/room-type-and-rate-plan-management/managing-rate-plans#create-a-rate-relation), make sure the request doesn't set values for fields that are [configured to inherit from the parent rate plan](/connectivity/docs/room-type-and-rate-plan-management/managing-rate-plans/#parentrate).

For example, if you try to set `price` when [`FollowsPrice` is set](/connectivity/docs/room-type-and-rate-plan-management/managing-rate-plans/#followsprice), 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`