Create or update rates

Use the OTA_HotelRateAmountNotif endpoint to update the price per rate/room/date on Booking.com.

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

The OTA_HotelRateAmountNotif endpoint has two versions currently. The functionality outlined in this topic captures the v1.0 OTA_HotelRateAmountNotif behaviour.

Difference between OTA_HotelRateAmountNotif endpoint v1.0 and v1.1

When migrating to the v1.1 OTA_HotelRateAmountNotif endpoint, you get:

For a complete list of changes to the v1.1 OTA_HotelRateAmountNotif endpoint, see the migration guide.

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 Supports the following values:
- 1.1: New version.
- 1.0: Previous version.

Sample header

POST 'https://supply-xml.booking.com/hotels/ota/OTA_HotelRateAmountNotif' \
--header 'Accept-Version: 1.1' \
--header 'Authorization: Basic THVjLVNhbXVlbMblhWTdlOCghQ29qaU9pNmxlWSpIWXU9OigvS2meQpQ12puj' \
--header 'Content-Type: application/xml'

Request body example

The following example performs the following:

  • Sets price for room (id=36745604) and rate (id=1278606) to 38.00 for 1 person from the 19th of October to and including the 20th of November 2012.
  • Sets price for room (id=36745604) and rate (id=1278606) to 45.00 for the room per night from the 19th of October to and including the 20th of November 2012.
  • Sets price for room (id=36745604) and rate (id=1278607) to 55.00 for the room per night from the 19th of October to and including the 20th of November 2012.
<?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="2012-10-12T11:34:05" Target="Production" Version="3.000">
  <RateAmountMessages>
    <RateAmountMessage LocatorID="1">
             <StatusApplicationControl Mon="false" Tue="false" Weds="false" Thur="false" Fri="false" Sat="false" Sun="true" Start="2023-11-19" End="2023-12-20" RatePlanCode="25278032" InvTypeCode="801185512" />
             <Rates>
                <Rate MinLOS="1" MaxLOS="1" RateTimeUnit="Day" UnitMultiplier="1" MinGuestApplicable="1" MaxGuestApplicable="4">
                   <BaseByGuestAmts>
                      <BaseByGuestAmt AmountBeforeTax="3800" DecimalPlaces="2" NumberOfGuests="4" CurrencyCode="EUR" />
                   </BaseByGuestAmts>
                   <AdditionalGuestAmounts>
                      <AdditionalGuestAmount AgeBucketID="1" AdditionalGuestNumber="1" Amount="0.01" DecimalPlaces="0" AgeQualifyingCode="8" />
                      <AdditionalGuestAmount MinAge="2" MaxAge="5" AdditionalGuestNumber="1" Percent="5" DecimalPlaces="0" AgeQualifyingCode="8" />
                   </AdditionalGuestAmounts>
                </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>

Response body example

<?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" TimeStamp="2012-10-12T11:34:06-00:00" Target="Production" Version="1.006">
  <Success />
</OTA_HotelRateAmountNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXX==] -->

Request fields

OTA_HotelRateAmountNotifRQ

All the below XML is fixed and mandatory, except:

timestamp: Should contain the current time and date

target: Either 'Production' or, may contain 'Test', which will not update anything in the Booking.com database.

<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="2012-10-12T11:34:05"
  Target="Production"
  Version="3.000"
>

RateAmountMessages

The RateAmountMessages element is mandatory for the OTA_HotelRateAmountNotif request.

<RateAmountMessages>
  ...
</RateAmountMessages>

RateAmountMessage

LocatorID (required): should contain a unique ID (used as RecordID in OTA_HotelRateAmountNotifRS)

<RateAmountMessage LocatorID="1">

StatusApplicationControl

Mon/Tue/Wed/Thu/Fri/Sat/Sun (Optional, default: true): Specifies the days of the week when the rate is active. If only a few weekdays are marked as true then the API marks the other days as false. However, if some weekdays are marked as false, then the API considers this as sending none as true and therefore marks all weekdays as true.

Start / End (required): the period which you are updating (inclusive end date). Please note, you can update for periods in the future and up to two day in the past, in the Central European Time (CET) timezone.

RatePlanCode (required): the Booking.com rate category ID which you are updating.

InvTypeCode (required): the Booking.com room ID which you are updating.

<StatusApplicationControl Sat="true" Sun="true"
 Start="2012-10-19" End="2012-11-20" RatePlanCode="1278606" InvTypeCode="36745604"/>

Rates

The Rates element is optional for the OTA_HotelRateAmountNotif request.

<Rates>
...
</Rates>

Rate

The Rate element is mandatory for the OTA_HotelRateAmountNotif request when specifying the Rates element.

<Rate>
...
</Rate>

BaseByGuestAmts

the BaseByGuestAmts element is optional for the OTA_HotelRateAmountNotif request.

<BaseByGuestAmts>
...
</BaseByGuestAmts>

BaseByGuestAmt

the BaseByGuestAmt element is mandatory for the OTA_HotelRateAmountNotif request when specifying the BaseByGuestAmts element.

AmountAfterTax/AmountBeforeTax (required): the price for the given room for the given date for the given rate category. The currency used for pricing is always the same for the hotel and set by Booking.com. The currencies used per country can be found in the documentation under Overview, static information. Prices cannot be removed after a value has been set.

v1.0 behaviour: €50000 maximum price

The maximum price you can set for a room is €50000 (or equivalent) per night. If you try to set a higher price, we set the price to zero, which automatically closes the room. The v1.0 endpoint returns an error message like this:

<?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" TimeStamp="2018-04-05T09:11:26+00:00" Target="Test" Version="1.006">
    <Errors>
        <Error Type="1" Code="320" RecordID="1" Status="NotProcessed" ShortText="Price **** for room ID ***** and rate ID ****** is higher than Maximum System Rate. We have closed the room as a precaution.">
    </Errors>
</OTA_HotelRateAmountNotifRS>

If the room has both 'Including VAT' and 'Including taxes' enabled in the Booking.com system, AmountAfterTax must be supplied, otherwise AmountBeforeTax.

DecimalPlaces (optional): the number of decimal places for a particular currency (eg. 8550 with DecimalPlaces="2" represents 85.50).

NumberOfGuests (optional): 1, if set, the single use price is set. Please note, Booking.com is only able to set prices per room night or for 1 person in a room, per night (so called single-use)

CurrencyCode: Currency code of the hotel. It must match the hotel currency code configuration on Booking.com, Otherwise you will get an error.

<BaseByGuestAmt AmountAfterTax="3800" DecimalPlaces="2" NumberOfGuests="1" CurrencyCode="EUR"/>
<BaseByGuestAmt AmountAfterTax="45.00" CurrencyCode="EUR"/>

Response fields

OTA_HotelAvailNotifRS

All the below code is fixed, except:

TimeStamp: contains current time

Target: set to same value as in corresponding OTA_HotelAvailNotifRQ.

<?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" TimeStamp="2012-10-12T11:47:05-00:00" Target="Production" Version="1.006">
  <Success />
</OTA_HotelRateAmountNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXX==] -->

Success

Success element is optional, depending on whether the request contained mistakes.

<?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" TimeStamp="2012-10-12T11:47:05-00:00" Target="Production" Version="1.006">
  <Success />
</OTA_HotelRateAmountNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXX==] -->

Warnings

Warnings can be combined with success messages if the request was still processed.

Type: OTA error code (see OTA codetable).

Code: OTA EWT code (see OTA codetable).

RecordID: same as LocatorID in OTA_HotelAvailNotifRQ.

Status: NotProcessed (error) / Complete (only warning).

ShortText (may be empty): warning message.

<?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" TimeStamp="2012-10-12T13:49:09-00:00" Target="Production" Version="1.006">
  <Success />
  <Warnings>
    <Warning Type="1" Code="367" Status="Complete" ShortText="Rate for 'Studio' (36745604) for 'Standard Rate' (1278606) for date '2012-10-19' with price '3800' might be too low, please check"/>
  </Warnings>
</OTA_HotelRateAmountNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXX==] -->

Errors

Errors are optional and only used alone, without success/warnings.

Code: OTA EWT code (see OTA codetable).

Type: OTA error code (see OTA codetable).

RecordID: same as LocatorID in OTA_HotelAvailNotifRQ.

Status: NotProcessed.

ShortText (may be empty): error message.

<?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" TimeStamp="2012-10-12T13:49:59-00:00" Target="Production" Version="1.006">
  <Errors>
    <Error Type="3" Code="61" RecordID="1" Status="NotProcessed" ShortText="BaseByGuestAmt: rate must be greater than 0."/>
  </Errors>
</OTA_HotelRateAmountNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXX==] -->

RUID strings

The Booking.com responses will always contain a "RUID" string, which is an encoded string used by the Booking.com staff to trace back any updates made before. Whenever the Connectivity Partner wishes the XML-Team to look at any logfiles for debugging or the like; the RUID string needs to be provided. This will enable the Booking.com technical staff to provide Connectivity Partners with support.

<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXX==] -->