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:
- Improved API behaviour.
- Improved error handling and error description.
- Improved latency.
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.
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 the following code block.
<?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==] -->