Create a property

Use the OTA_HotelDescriptiveContentNotif endpoint to create or update property details.

You can create or update a property's details using the following high-level elements:

  • ContactInfos: Contains details such as the property's address, contact details, and other general information.
  • HotelInfo: Contains details such as the property's category (Hotel, ApartHotel, Cruise etc...), latitude and longitude information, service details among others.
  • FacilityInfo: Contains details such as the facility details that the property supports including restaurant details.
  • Policies: Contains details such as the property's cancellation policies among others.
  • TPA-Extensions: Contains extra information.

Minimum requirements to create a property

To create a property, you must specify the following minimum details:

  • A legal entity ID - An identifier for the legal entity that owns or manages a property (such as a property management company or a hotel chain). For more information on how to retrieve your legal entity ID using Contracting API, see Retrieving the legal entity ID or partners can find it in their contract.
  • Provide the property name with only Latin characters.
  • Provide Physical location (PhysicalLocation) contact type with the following details:
    • Address line 1 - only latin characters are allowed.
    • City.
    • Postcode.
  • Provide General (general) and Invoice (invoices) contact types with the following details:
    • Contact person name (Given name and surname).
    • Email address, and
    • Phone number.
  • Provide the latitude and longitude details of the property's physical location.
  • Specify the checkin and checkout timing.
  • Specify the number of sellable units.
  • Specify the property's accommodation type.
  • Specify at least one language code for the property.

Naming convention

When naming a property, ensure that the name:

  • Has a length between 3 and 255 characters.
  • Does not contain a phone number (or no more than five consecutive numbers).
  • Only contains letters (any language), numbers, or the following symbols: ! # & ` ' " - ,
  • Is not all in uppercase.

Usage of certain words are restricted as property names

If a name is rejected, the property name could contain a restricted word. If you do not think this is the case, reach out to our Connectivity Support.

URL

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

Each property must have at least one cancellation policy

When creating a property using the OTA_HotelDescriptiveContentNotif endpoint, if you do not specify the policy details, the API creates a fully-flexible policy (PolicyCode=152) as the default policy for the property.

Helpful tips

  • The latitude and longitude values should correspond to the country specified under ContactInfos ... >... Address > CountryName. Otherwise, the API returns Cannot create a hotel because UFI country (countryCode) is different from property country (countryCode).
  • Make sure the phone numbers specified under ContactInfos ... >... Phone match with the regional specification and the category specified under PhoneTechType.
  • Make sure the zip code matches with the address specified under ContactInfos ... >... Address > CountryName.

Request body parameters

The following table describes the elements you must add in the request body:

Element Attribute Description Type Required/
Optional
Notes
OTA_HotelDescriptiveContentNotifRQ Root element object required
> HotelDescriptiveContents Contains property details. object required
>> HotelDescriptiveContent
HotelDescriptiveContentNotifType Specifies whether the request is meant to create a new property or overlay an existing one. enumerated string optional Accepts the following values:
* New (default)
* Overlay
HotelName Specifies the name of the property on Booking.com. string required Required when creating a new property. If you want to (re)name a property, ensure the name follows Booking.com naming convention.
ID Specifies a custom property ID. string optional Recommended for new properties.
LanguageCode Specifies the language in which the property wants their Booking.com Extranet content and communication (emails, notifications, etc.) enumerated string required For a list of supported language codes, see Booking.com Language Code table.
CurrencyCode Specifies the currency code. enumerated string optional Booking.com defines the currency for each property. To retrieve a list of all currency codes, use the /xml/currencies endpoint.
Target Specifies whether it is a test or production-ready property. enumerated string required Accepts the following values:
- Test
- Production
>>> AffiliationInfo Contains star ratings and other awards. object optional
>>>> Awards Contains award information. object optional You can only set a star rating for properties with property class hotel, which means you cannot set a star rating for non-hotel properties. To verify whether your property's property class type is a hotel, see the property class type table.
>>>>> Award Contains award details object optional
Provider Specifies the type of award. enumerated string optional Accepts: Star rating
Rating Specifies the number of stars. integer optional Accepts values: 05. Some countries don't use star ratings.
>>> AreaInfo Contains details about attractions and amenities near the property. object optional
>>>> Attractions Contains details about attractions and amenities near the property. object optional
>>>>> Attraction Contains attraction details near the property. object optional
AttractionCategoryCode Specifies the attraction Category Code. enumerated string required For a list of supported attraction codes, see the Attraction code list.
AttractionName Specifies the attraction name (in LanguageCode). string required -
Distance Specifies the distance from the property to the attraction site (in DistanceUnit). float required -
DistanceUnit Specifies the measurement unit for Distance. enum optional Supported values are:
* meters (default)
* kilometers
* feet
* miles
LanguageCode Specifies the Booking.com language code used for the attraction information. enumerated string optional Default: en. For a list of supported language codes, see Booking.com Language Code table.
>>> ContactInfos Contains contact information. object optional
>>>> ContactInfo Contains contact details of individual person/channel. object optional
ContactProfileType Specifies the type of contact. enumerated string required See ContactProfileType.
>>>>> HiddenAddress Contains whether the property's address can be shown to the guests before they book a stay on a property. object optional -
ShouldHideAddress Specifies whether to hide the address details. boolean optional * 0 - Do not hide the full address.
* 1 - Hide the full address from the guest.
>>>>> Addresses Contains the contact addresses. array of Address required -
>>>>>> Address Contains the contact addresses. array of Address required -
>>>>>>> Language Species the Booking.com Language code for the address details. enumerated string required Default: en. For a list of supported language codes, see Booking.com Language Code table.
>>>>>>> AddressLine Species the full street name and number. string required Should not contain abbreviations (such as "Rd." for "Road") and should not exceed 255 characters.
>>>>>>> CityName Species the name of the city, town, or village. string required -
>>>>>>> CountryName Species the two-letter country code. enumerated string required For more information on how to retrieve the country code details, see xml/countries endpoint.
>>>>>>> HotelName Specifies the name of the property (in a language other than English). object required -
>>>>>>> PostalCode Specifies the postal/zip code. string optional -
>>>>>>> StateProv Contains the State/province details. object optional -
StateCode Specifies the code for the state or province. string optional Follow the ISO 3166-2 standard to specify the state, province, or other subdivision.
>>>>> Emails Contains the email addresses. array of Email optional -
>>>>>> Email Contains the email address details. array of Email optional -
>>>>> Names Contains the contact person names. array of Name optional -
>>>>>> Name Contains the contact person name. array of Name optional -
Language Specifies the contact person's preferred language of communication. string optional -
Gender Contact person's gender. enum 0..1 Accepts: Male, Female. Default: null. To set as empty, omit the entire attribute (instead of specifying "").
>>>>>>> GivenName Specifies the contact person's first name. string optional -
>>>>>>> SurName Specifies the contact person's surname. string optional -
>>>>>>> JobTitle The contact's Booking.com Job Title Code. BCJT 0..1 -
>>>>> Phones Contains Phone numbers. array of Phone optional -
>>>>>> Phone Contains Phone number information. array of Phone optional -
Extension The extension number that must be dialled in addition to the @PhoneNumber. string 0..1 Only accepted when @PhoneTechType="1".
PhoneNumber Specifies the international phone number. string optional Follows the format: \+[0-9]+
PhoneTechType Specifies the type of phone line/device. enumerated string optional For a list of supported values, see PTT.
>>> FacilityInfo Contains property's facility details. object optional
>>>> GuestRooms Contains property's room details. object optional
>>>>> GuestRoom Contains property's room details. object optional
>>>>>> Amenities Contains property's amenities details. object optional
>>>>>>> Amenity Contains property's amenity details. object optional
RoomAmenityCode Specifies a collection of room amenity type codes. enumerated string required For a list of supported room amenity type codes, see Room Amenity Type Code.
AmenityCode Specifies the room amenity type code. enumerated string required Same as RoomAmenityCode, introduced for compatibility with OTA_HotelInvNotifRQ.
Quantity Specifies the available number of amenities of this type. integer optional -
Value Specifies the available number of amenities of this type. enumerated string optional Same as Quantity, introduced for compatibility with OTA_HotelInvNotifRQ.
Configuration Specifies whether the amenity is available in the standard or alternative room arrangement. enumerated string optional Accepted only when the room amenity type code is a bed type.
Supported values are:
* 1 (standard arrangement)
* 2 (alternative arrangement)
Introduced for compatibility with OTA_HotelInvNotifRQ.
>>>> Restaurants Contains property's restaurant details. object optional
>>>>> Restaurant Contains individual restaurant details. object optional
OfferBreakfast Specifies whether the restaurant offers breakfast. integer optional Supports:
- 1: Offers breakfast
- 0: Does not offer breakfast (default)
OfferBrunch Specifies whether the restaurant offers brunch. integer optional Supports:
- 1: Offers brunch
- 0: Does not offer brunch (default)
OfferDinner Specifies whether the restaurant offers dinner. integer optional Supports:
- 1: Offers dinner
- 0: Does not offer dinner (default)
OfferLunch Specifies whether the restaurant offers lunch. integer optional Supports:
- 1: Offers lunch
- 0: Does not offer lunch (default)
RestaurantName Specifies the name of the restaurant. string optional -
>>>>>> CuisineCodes Container for cuisine details. array of CuisineCode optional -
>>>>>>> CuisineCode Container for cuisine details. array of CuisineCode optional -
Code Specifies the main cuisine code. enumerated string optional A restaurant can offer more than one cuisine.
>>>>>> OperationSchedules Contains opening/closing times. array of OperationSchedule optional -
>>>>>>> OperationSchedule Contains opening/closing times. array of OperationSchedule optional -
>>>>>>>> OperationTimes Opening/closing times for the service offered. array of OperationTime optional Currently used for breakfast services only.
>>>>>>>>> OperationTime Opening/closing times for a Restaurant or Service like breakfast. object optional Can contain multiple OperationTime elements.
Mon Specifies whether the Start and End times apply on this day of the week. integer optional Supported values are:
- 1 = true.
- 0 = false. (default)
Tue Specifies whether the Start and End times apply on this day of the week. integer optional Supported values are:
- 1 = true.
- 0 = false. (default)
Weds Specifies whether the Start and End times apply on this day of the week. integer optional Supported values are:
- 1 = true.
- 0 = false. (default)
Thur Specifies whether the Start and End times apply on this day of the week. integer optional Supported values are:
- 1 = true.
- 0 = false. (default)
Fri Specifies whether the Start and End times apply on this day of the week. integer optional Supported values are:
- 1 = true.
- 0 = false. (default)
Sat Specifies whether the Start and End times apply on this day of the week. integer optional Supported values are:
- 1 = true.
- 0 = false. (default)
Sun Specifies whether the Start and End times apply on this day of the week. integer optional Supported values are:
- 1 = true.
- 0 = false. (default)
Start Contains the opening times of the Restaurant or Service. enumerated string required For a list of opening times, see BCIO.
End Contains the closing times of the Restaurant or Service. enumerated string required For a list of closing times, see BCIO.
>>>>>> Features Container for special features. array of Feature optional -
>>>>>>> Feature Container for special features. array of Feature optional -
DescriptiveText Specifies the feature type. enumerated string required For all supported values, see DescriptiveText.
>>>>>> TPA_Extensions Container for Ambiances and DietaryOptions. object optional -
>>>>>>> Ambiances Contains the ambiance/mood/atmosphere for a Restaurant. object optional Can contain multiple Ambiances elements.
>>>>>>>> Ambiance Contains the ambiance/mood/atmosphere for a Restaurant. object required
Name Specifies the ambiance type. enumerated string required Supported values are:
* family/kids friendly
* modern
* romantic
* traditional
>>>>>>> DietaryOptions Contains dietary options in a Restaurant. object optional Can contain multiple DietaryOptions elements.
>>>>>>>> DietaryOption Contains a single dietary option in a Restaurant. object optional Can contain multiple DietaryOption elements.
Name Specifies the dietary option. enumerated string required Supported values are:
* dairy free
* gluten free
* halal
* kosher
* vegan, vegetarian
>>> HotelInfo Contains information about the types of rooms and services a property offers. object required -
>>>> CategoryCodes Contains the general property details, such as number of rooms and property type. object optional -
>>>>> GuestRoomInfo Contains room details. object optional -
Quantity Specifies the number of sellable units the property offers. integer optional A "sellable unit" is the smallest possible space that a guest can book at the property. In a hotel with 200 rooms, each room is a sellable unit, and the value would be 200.
In a holiday home, guests must typically book the home in its entirety, making the value 1.
>>>>> HotelCategory Contains property type details. object optional -
Code Specifies the property class type code. enumerated string required For a list of supported property class type codes, see Property Class Type Code.
ExistsCode Specifies whether the property currently exists. integer optional Supported values are:
* 1 (yes) default
* 0 (no)
>>>> Languages Contains the languages spoken at the property. array of Language optional
>>>>> Language Contains the language spoken at a property. object optional Can contain multiple Language elements.
LanguageCode Specifies the Booking.com Language Code. enumerated string required For a list of supported language codes, see Booking.com Language Code table.
>>>> Position Contains the geographical coordinates of the property. object optional -
Latitude Specifies the latitude coordinates. latitude required -
Longitude Specifies the longitude coordinates. longitude required -
>>>> Services Contains the services offered at the property. array of Service optional -
>>>>> Service Contains the details of individual services offered at the property. array of Service optional -
Code Specifies the property amenity code for the service. enumerated string required For a list of Booking.com supported property amenity codes, see Amenity codes.
ExistsCode Specifies whether the service/facility is present or missing. enumerated string optional Supported values are:
* 1 = yes(present)
* 2 = no(missing).
Default: 1.
Included Specifies whether the service is included in the room price or comes at an extra charge. enumerated string optional Supported values are:
* true
* false
* unknown.
Default: unknown
Price The price for the service. Specified in the property's default currency. integer optional Required if Code is 173 (breakfast), 6000 (lunch), 6001 (dinner).
CurrencyCode Specifies the currency code. currencycode optional Required if Code is 173 (breakfast), 6000 (lunch), 6001 (dinner). If specified, must match the property's default currency code.
>>>>>> Features Contains the details about service features. array of Feature optional
>>>>>>> Feature Contains the details about service features. array of Feature optional
DescriptiveText Specifies the feature type. enumerated string required For a list of supported values, see DescriptiveText.
>>>>>> Types Contains the types of service offered. array of Type optional Currently used for breakfast services only.
>>>>>>> Type Contains the types of service offered. array of Type optional Currently used for breakfast services only.
Code Specifies the Booking.com breakfast type code. enumerated string optional For a list of supported breakfast type code, see Booking.com Breakfast Type Code.
>>>>>> Items Contains a collection of items. array of Item optional Currently used for breakfast services only.
>>>>>>> Item Contains the items for the service offered. array of Item optional Currently used for breakfast services only.
Code Specifies the Booking.com breakfast type code. enumerated string optional For a list of supported breakfast type code, see Booking.com Breakfast Type Code.
>>>> OwnershipManagementInfos Contains the information about the property's relationship to Booking.com. array of OwnershipManagementInfo required -
>>>>> OwnershipManagementInfo Contains the details about the property's relationship to Booking.com. object required -
>>>>>> CompanyName Contains the details of the company that owns/manages the property. object optional
Code Specifies the ID of the legal entity to which the property belongs. integer optional Only allowed for new properties.
>>>> RelativePositions Contains the travel routes to and from the property. array of RelativePosition optional -
>>>>> RelativePosition Contains the details of a travel route to or from the property. object optional Can contain multiple RelativePosition elements.
>>>>>> Transportations Contains an array of Transportation object optional -
>>>>>>> Transportation Container for TPA_Extensions. object optional Can contain multiple Transportation elements.
>>>>>>>> TPA_Extensions Container for Route. object optional Can contain multiple TPA_Extensions elements.
>>>>>>>>> Route Contains the details of a travel route. object optional -
>>>>>>>>>> Leg Contains the details of the starting point, destination, and transport method. object required -
>>>>>>>>>>> Departure Contains the departure times. object optional -
Interval Contains the departure interval in minutes, if the transportation departs multiple times a day. integer optional -
UponArrangement Specifies whether the transportation is available only by arrangement. integer optional Supported values are:
- 1 = true.
- 0 = false.
>>>>>>>>>>> Junction Contains details of the motorway/highway junction/exit to take. object optional -
Name Specifies the name of the junction/exit to take, if travelling by car. string required Only allowed when TransportType[Code="5"].
>>>>>>>>>>> Line Contains the public transport line details. object optional -
Name Specifies the name or number of the line to take, if travelling by shuttle or public transport. string optional Only allowed when TransportType[Code] is 3, 10, 18, 22, or 5001.
>>>>>>>>>>> Motorway Contains details of the motorway/highway details. object optional -
Name Specifies the name of the motorway to take, if travelling by car. string optional Only allowed when TransportType[Code="5"] (car).
>>>>>>>>>>> Start Contains the starting point details. object optional -
Type Specifies the type of starting point. enumerated string required Accepted values: airport
Code Specifies the 3-letter IATA code of the airport that serves as the starting location. enumerated string required For a list of supported IATA codes, see IATA.
>>>>>>>>>>> TransportType Contains the transportation mode. object optional -
Code Specifies the transportation code for the Leg's transportation type. integer required For a list of supported values, see Transportation code.
>>>>>>>>>> JourneyTime Contains the travel time details. object required -
Minutes Specifies the journey time in minutes. integer required -
>>>>>>>>>> Price Contains the travel price details. object optional -
Amount Specifies the estimated price of the journey, in CurrencyCode. real optional -
CurrencyCode Specifies the currency code. currencycode optional -
>>>> TPA_Extensions Container for AcceptedPayments, and InvoiceDetails. object optional -
>>>>> AcceptedPayments Contains the details of the payment methods. object optional Can contain multiple AcceptedPayments elements.
>>>>>> AcceptedPayment Contains the details of a payment method. object optional Can contain multiple AcceptedPayment elements.
PaymentTypeCode Specifies the Booking.com Payment Type Code. BCPT required -
>>>>> InvoiceDetails Contains the special identifying information for Brazilian properties, issued by the Brazilian tax authority. Used for invoicing. object optional Required for Brazilian properties.
>>>>>> InvoiceTaxType Contains details useful for processing invoices. object required
Type Specifies whether the identifying number belongs to a company or a private individual. enumerated string required Accepts: CNPJ (company), CPF (private individual).
>>>>>> InvoiceTaxNumber string required
Code The identifying number. string required Length depends on the value of InvoiceTaxType[Type].
CNPJ = 14 digits. CPF = 11 digits.
>>>>>> InvoiceAddress string required -
Email Email address of invoice recipient. string required -
>>>>>>> CityHallInfo string required -
Id The 8-digit ID for the city hall which issued the CNPJ or CPF number. string required -
>>>>>>> BirthDate string optional
Date Date of birth of the individual providing the CPF number. string optional Format: YYYY-MM-DD. Required if InvoiceTaxType[Type="CPF"].
>>>>> PaymentPreferences Contains details such as whether properties can see guest's credit card details and collect CVC codes. object optional The default value for NoCVC is 1.
NoCVC Specify whether properties can collect CVC for a booking. boolean optional * 0 - Properties can collect CVC details.
* 1 - Properties cannot collect CVC details.
ViewCCDetails Specify whether trusted properties can view the guest's credit card details. boolean optional * 0 - Properties cannot view credit card details.
* 1 - A trusted property can view the credit card details.
>>> Policies Contains all policy details. object optional -
>>>> Policy Contains policy details. object optional -
>>>>> PolicyInfo Contains check-in/-out times. object optional -
CheckInTime The Booking.com Check-in/Check-Out Time Code for the earliest time a guest can check in. enumerated string optional Format: HH:MM (from) or HH:MM-HH:MM (from-to). Only "from" is required; "to" is optional. 24-hour check-in can be specified using 00:00-00:00.
CheckOutTime The Booking.com Check-in/Check-Out Time Code for the time by which a guest should check out at the latest. enumerated string optional Format: HH:MM (from) or HH:MM-HH:MM (from-to). 24-hour check-out can be specified using 00:00-00:00.
TotalGuestCount The total number of guests that can stay at the property at a given time. integer optional -
AcceptedGuestType Specifies whether the property admits adults and children, or only adults. enumerated string optional Accepts AdultOnly and ChildrenAllowed. Default value is AdultsOnly, which means children are not allowed.
MinGuestAge Specifies the minimum age that children are allowed (in case ChildrenAllowed). integer optional
>>>>> CancelPolicy Policies around cancellations and no-shows. array of CancelPenalty optional -
>>>>>> CancelPenalty Contains Cancellation fee details. optional Can contain multiple CancelPenalty elements.
PolicyCode The Booking.com Cancellation Policy Code. enumerated string optional
>>>>>>> TPA_Extensions Container for NoShowPolicy. array of NoShowPolicy optional -
>>>>>>>> NoShowPolicy No-show policy details. object optional Descendant of CancelPenalty.
Penalty Specifies how much the property charges if the guest doesn't show up on the check-in date. enumerated string required Accepts: total_price (of stay), default (same as cancellation fee).
>>>>> PetsPolicies Policies around pets. array of PetsPolicy optional -
PetsAllowedCode Specifies the property's policy regarding pets. enumerated string optional Accepts:
- Pets Allowed
- Pets Not Allowed (default)
- Pets By Arrangements
>>>>>> PetsPolicy Pets policy details. object optional Required if PetsAllowedCode is Pets Allowed, Pets By Arrangements.
NonRefundableFee Specifies if the property charges for having a pet stay in the room. enumerated string Accepts:
- free (default)
- charges_may_apply
>>>>> GuaranteePaymentPolicy Policies around refunds. array of GuaranteePayment optional -
>>>>>> GuaranteePayment Refund policy details. array of GuaranteePayment optional -
PolicyCode The Booking.com Cancellation Policy Code. enumerated string optional
>>>>>>> TPA_Extensions Container for PrepaymentPolicy. object optional -
>>>>>>>> PrepaymentPolicy - object optional Descendant of GuaranteePayment.
EffectiveFrom The moment at which the refund policy becomes effective. enumerated string required Accepts: after_reservation_is_made, after_cancellation_fee_begins. Default: after_reservation_is_made
>>>>> TaxPolicies Policies around taxes. array of TaxPolicy optional -
>>>>>> TaxPolicy Tax policy details. object optional Can contain multiple TaxPolicy elements.
Code The Fee Tax Type Code. FTT required -
Amount The amount charged, in the country's local currency. price optional Instead of Amount, you can also use Percent.
DecimalPlaces The number of decimal places to apply to Amount. integer optional -
Percent The percentage of the room price that will be added as taxes. non-negative optional Only allowed if Amount is not provided. Required if Code="36" (VAT).
Type Specifies whether the tax is included in the room price or not. enumerated string optional Accepts: Inclusive, Exclusive.
ChargeFrequency The Charge Type Code that specifies the basis for the charge (e.g. once per stay, every day). enumerated string optional Default: 21 (Per person per night)
InvCode The Booking.com room type ID that this fee applies to. string optional A fee can only apply to one room type at a time. To apply the same fee to multiple rooms, duplicate the entire TaxPolicy element. To apply a fee to all rooms in the property, remove InvCode. Get the room type ID from OTA_HotelInvNotifRS endpoint ResponseInvCode attribute on creation of room type.
>>>>> FeePolicies Policies around service fees (WiFi, heating, pets, etc.). array of FeePolicy optional -
>>>>>> FeePolicy Fee policy details. object optional Can contain multiple FeePolicy elements.
Code The Fee Tax Type Code. FTT required -
Amount The amount charged, in the country's local currency. price optional Instead of Amount, you can also use Percent.
DecimalPlaces The number of decimal places to apply to Amount. integer optional Default: 0
Percent The percentage of the room price that will be added as a fee. non-negative optional Only allowed if Amount is not provided.
Type Specifies whether the fee is included in the room price, or is charged only under certain conditions. enumerated string optional Accepts: Inclusive, Exclusive, Conditional. Conditional is only allowed when [Code="5009"] (cleaning fees).
ChargeFrequency The Charge Type Code that specifies the unit of time on which the charge is calculated (e.g. once per stay, every day). enumerated string optional Default: 21 (Per person per night)
MinAge Specifies the minimum age for the children policy to apply. In combination with MaxAge it becomes an age range. integer optional You can use this attribute with Fee Tax Type (FTT) code 37, 38, or 44.
If you want to specify different prices per age range, you must create multiple FeePolicy elements within the same request. See example.
MaxAge Specifies the maximum age for the children policy to apply. The max value is 255 (adult). integer optional You can use this attribute with Fee Tax Type (FTT) code 37, 38, or 44.
If you want to specify different prices per age range, you must create multiple FeePolicy elements within the same request. See example.
InvCode Specifies the Booking.com room type ID to which the fee applies. string optional You can apply one fee policy to one room type at a time. To apply the same fee policy to multiple rooms, you have to add another FeePolicy element for each additional room type. To apply a fee to all room types in the property, you must remove the InvCode attribute.
>>>>>>> TPA_Extensions Container for Conditions, InternetFeePolicy or ParkingFeePolicy (depending on Type). object optional -
>>>>>>>> Conditions Cleaning fee conditions. object required -
>>>>>>>>> Condition Cleaning fee condition details. object required -
Type Specifies when a guest must pay the extra cleaning fee. enumerated string required Accepts: guest_brings_pet, guest_doesnt_clean_before_checkout, guest_smokes.
>>>>>>>> InternetFeePolicy Internet fee details. object optional Only allowed when FeePolicy[Type="5035"].
InternetType Specifies the type of internet connection. enumerated string optional Accepts: wired, wifi, none. Default: wifi
InternetCoverage Specifies the area covered by the internet. enumerated string optional Accepts: entire_property, public_areas, all_rooms, some_rooms, business_centre. Default: entire_property
>>>>>>>> ParkingFeePolicy Parking fee policy details. object optional You can apply parking fee with Parking fee policy details as a FeePolicy, which will not be added to reservation price. To apply parking fee as charges which is applied to all reservations, properties must request Booking.com local support team to set it as VAT/Tax/Charges in the extranet.
ParkingType Specifies the type of parking the property offers. enumerated string optional Accepts: on_site, location_nearby, none. Default: on_site
ParkingReservation Specifies whether guests can/must reserve a parking space in advance. enumerated string optional Accepts: needed, not_needed, not_available. Default: not_available
ParkingProperty Specifies whether the parking facility is publicly accessible or private. enumerated string Accepts: private, public. Default: public
>>> TPA_Extensions object optional Container for: StandardPhrases, GuestInformation, PropertyTaxInfo, PreventLikelyToBeCancelledBookings, CancellationGracePeriod, TotalNumberOfFloors, PricingType, LongStayInfo.
>>>> StandardPhrases Standard phrases details. object optional Can contain multiple StandardPhrases elements.
>>>>> StandardPhrase Standard phrase details. object optional Can contain multiple StandardPhrase elements.
Enabled Specifies whether the standard phrase is enabled. integer required Supported values are:
- 1 = true.
- 0 = false.
Name Specifies which standard phrase must be displayed. enumerated string required For Coronavirus-related phrases, see Standard phrases during the Coronavirus.
>>>>>> Options - Contains a collection of Options. optional
>>>>>>> Option - Additional configuration for certain types of StandardPhrase. optional Required if Name is KeyCollection, Renovation,HotelChainBedLinen, or SecurityDeposit.
Name The type of option. enumerated string required Accepts: KeyCollectionAddressLine, KeyCollectionCityName, KeyCollectionPostalCode, RenovationFrom, RenovationUntil, SecurityDepositAmount, SecurityDepositCollectMethod, SecurityDepositCollectWhen, SecurityDepositCollectNumDays, SecurityDepositReturnMethod, SecurityDepositReturnWhen, HotelChainBedLinenAmount.
>>>> GuestInformation Contains flags that specify which information guests must provide. object optional -
RequireGuestAddress Specifies whether guests must provide an address. integer optional Accepts: 1 (required), 0 (not required).
RequireGuestContactNumber Specifies whether guests must provide a contact telephone number. integer optional Accepts: 1 (required), 0 (not required).
HasAgeRestriction Specifies whether there is an age limit to check-in. integer optional Accepts: 1 (has age restriction), 0 (does not have age restriction).
AgeRestrictionMin Minimum allowed age for guests to check-in. Only effective when HasAgeRestriction=1. integer 18..99 Only effective when HasAgeRestriction=1.
AgeRestrictionMax Maximum allowed age for guests to check-in. Only effective when HasAgeRestriction=1. integer 18..99 Only effective when HasAgeRestriction=1.
HasCurfew Specifies whether property has a curfew - times at which guests cannot enter/leave the property. integer optional Accepts: 1 (has curfew), 0 (does not have curfew).
CurfewStart Curfew start time in HH:MM format. string optional Only effective when HasCurfew=1.
CurfewEnd Curfew start time in HH:MM format. string optional Only effective when HasCurfew=1.
>>>> PropertyTaxInfo Object that contains city tax-related information. object optional -
PropertyRegisteredInVcs Are you registered as a professional at the trade commercial register (Registre du Commerce et des Sociétés)? integer required Accepts: 1 (yes), 0 (no).
PropertyHasVat Do you have a VAT registered for this activity? integer required Accepts: 1 (yes), 0 (no).
PropertyDeclaresRevenue Do you declare revenues as professional for direct tax purposes (see article 155 IV du CGI)? integer required Accepts: 1 (yes), 0 (no).
PropertyTaxCategory Contains a number - city tax category ID. You can retrieve available categories using the /xml/citytaxcategory call. integer optional If your answer to any of the preceding questions is (yes), then you must NOT send the PropertyTaxCategory. The system sets it up automatically.
Accepts: integer value containing category ID.
PropertyNatureCategory Contains a number - nature category ID. You can retrieve available categories using /xml/citytaxcategory call. integer optional Accepts integer value containing category ID.
Enabled Enable/disable selling meal plans as addons through booking or not. boolean 1 will enable selling meals as addons through booking, 0 will disable that.
>>>> PreventLikelyToBeCancelledBookings Feature object object optional -
Enabled Enable/disable the feature for current property. boolean 1 - opt in to the feature. 0 - opt out of the feature.
>>>> CancellationGracePeriod Cancellation exceptions container object. object - -
HoursAfterBooking Grace period - amount of hours after booking when free cancellation is available. integer optional Accepts: 0, 1, 4, 24.
WeeksBeforeCheckIn Advance cancellation - amount of weeks before check-in when free cancellation is available. integer optional Accepts: 0, 4, 8, 12
>>>> TotalNumberOfFloors Allows to set the total number of floors in the building excluding underground floors. object optional -
Number Total number of floors the building has (excl. underground floors). non-negative Max value can be 200.
>>>> PricingType Additional pricing configuration for HotelProduct. object optional -
Value Specifies the pricing type for the product. enumerated string optional Accepts: Standard, OBP, or LOS. Default: Standard.
Note: For length of stay pricing (LOS) and Occupancy Based pricing (OBP), you must be certified to use these pricing types. Please check with the Booking.com Connectivity support team about the certification process.
>>>> LongStayInfo Long Stay container object. object Optional -
AcceptLongStay Whether the property accepts a stay longer than 30 nights. Defaults to No. boolean Optional Accepts:
- 0: False
- 1: true
MaxLengthOfStay The maximum length of stay that a guest can book. integer Optional Accepts: 45, 60, 75, 90.
Defaults to 90.
>>>> BookingModel Booking model of the property. Supports request to book or instant booking (default value). object optional -
Type Specifies whether the property supports request to book feature. enumerated string required Accepts:
- RTB: Enables request to book
- IB: (default) Enables instant booking. Disables request to book.

Request body

The following is a request body example:

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelDescriptiveContentNotifRQ
  xmlns="http://www.opentravel.org/OTA/2003/05"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  PrimaryLangID="en-us"
  EchoToken="GUID"
  TimeStamp="2015-06-09T09:30:47Z"
  xsi:schemaLocation="http://www.opentravel.org/2014B/OTA_HotelDescriptiveContentNotifRQ.xsd"
  id="OTA2014B"
  Version="8.0"
  Target="Production">
    <HotelDescriptiveContents>
        <HotelDescriptiveContent
      HotelName="The Best Hotel"
      LanguageCode="en"
      HotelDescriptiveContentNotifType="New">
            <ContactInfos>
                <ContactInfo ContactProfileType="PhysicalLocation">
                    <Addresses>
                        <Address>
                            <!-- Replace the {PlaceHolders} in the following lines! -->
                            <AddressLine>{AddressLine}</AddressLine>
                            <CityName>{CityName}</CityName>
                            <PostalCode>{PostalCode}</PostalCode>
                            <CountryName>{CountryCode}</CountryName>
                        </Address>
                    </Addresses>
                </ContactInfo>
                <ContactInfo ContactProfileType="general">
                    <Names>
                        <Name Language="en">
                            <GivenName>Jane</GivenName>
                            <Surname>Doe</Surname>
                        </Name>
                    </Names>          
                    <Emails>
                        <Email>noreply@booking.com</Email>
                    </Emails>
                    <Phones>
                        <Phone PhoneNumber="+31666666666" PhoneTechType="5" />
                    </Phones>
                </ContactInfo>
                <ContactInfo ContactProfileType="invoices">
                    <Names>
                        <Name Language="en">
                            <GivenName>Sam</GivenName>
                            <Surname>Xu</Surname>
                        </Name>
                    </Names>
                    <Addresses>
                        <Address>
                            <AddressLine>Herengracht 597</AddressLine>
                            <CityName>Amsterdam</CityName>
                            <PostalCode>1017 CE</PostalCode>
                            <StateProv StateCode="NH" />
                            <CountryName>NL</CountryName>
                        </Address>
                    </Addresses>          
                    <Phones>
                        <Phone PhoneNumber="+31207777777" PhoneTechType="1" Extension="30" />
                    </Phones>
                </ContactInfo>
            </ContactInfos>
            <HotelInfo>
                <CategoryCodes>
                    <GuestRoomInfo Quantity="100" />
                    <!-- Replace the {PlaceHolder} in the following line! -->
                    <HotelCategory ExistsCode="1" Code="{PropertyClassTypeCode}" />
                </CategoryCodes>
                <!-- Replace the {PlaceHolder} in the following line! -->
                <Position Latitude="{Latitude}" Longitude="{Longitude}" />
                <OwnershipManagementInfos>
                    <OwnershipManagementInfo>
                        <!-- Replace the {PlaceHolder} in the following line! -->
                        <CompanyName Code="{LegalEntityID}" />
                    </OwnershipManagementInfo>
                </OwnershipManagementInfos>
            </HotelInfo>     
            <FacilityInfo>
                <GuestRooms>
                    <GuestRoom>
                        <Amenities>
                            <Amenity RoomAmenityCode="228" />
                        </Amenities>
                    </GuestRoom>
                </GuestRooms>
                <Restaurants>
                    <Restaurant RestaurantName='Antekoje' OfferLunch='1' OfferDinner='1'>
                        <CuisineCodes>
                            <CuisineCode Code='51'/>
                            <CuisineCode Code='49'/>
                        </CuisineCodes>
                        <OperationSchedules>
                            <OperationSchedule>
                                <OperationTimes>
                                    <OperationTime Mon='1' Tue='1' Weds='1' Thur='1' Fri='1' Sat='1' Sun='1' Start='17:30' End='22:00' />
                                    <OperationTime Sat='1' Sun='1' Start='11:00' End='14:30' />
                                </OperationTimes>
                            </OperationSchedule>
                        </OperationSchedules>
                        <Features>
                            <Feature DescriptiveText='a la carte'/>
                            <Feature DescriptiveText='buffet'/>
                            <Feature DescriptiveText='accepts reservations'/>
                            <Feature DescriptiveText='outdoor seating'/>
                        </Features>
                        <TPA_Extensions>
                            <Ambiances>
                                <Ambiance Name='modern'/>
                            </Ambiances>
                            <DietaryOptions>
                                <DietaryOption Name='gluten free'/>
                                <DietaryOption Name='vegan'/>
                            </DietaryOptions>
                        </TPA_Extensions>
                    </Restaurant>
                </Restaurants>
            </FacilityInfo>   
            <Policies>
                <Policy>
                    <PolicyInfo CheckInTime="16:00" CheckOutTime="11:00"/>
                    <PetsPolicies PetsAllowedCode="Pets By Arrangements">
                        <PetsPolicy NonRefundableFee="free" />
                    </PetsPolicies>
                    <CancelPolicy>
                        <CancelPenalty PolicyCode="43" />
                        <CancelPenalty PolicyCode="1" />
                    </CancelPolicy>
                    <GuaranteePaymentPolicy>
                        <GuaranteePayment PolicyCode="43" />
                        <GuaranteePayment PolicyCode="1" />
                    </GuaranteePaymentPolicy>
                    <TaxPolicies>
                        <TaxPolicy Code="36" Percent="1800" DecimalPlaces="2" Type="Inclusive" ChargeFrequency="12" />
                        <TaxPolicy Code="3" Percent="350" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="21" />
                    </TaxPolicies>
                    <FeePolicies>
                        <FeePolicy Code="5012" Amount="1600" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="12" />
                        <FeePolicy Code="5013" Amount="1800" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="12" />
                        <FeePolicy Code="5035" Amount="500" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="1" >
                            <TPA_Extensions>
                                <InternetFeePolicy InternetType="wifi" InternetCoverage="public_areas" />
                            </TPA_Extensions>
                        </FeePolicy>
                        <FeePolicy Code="5036" Amount="350" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="2" >
                            <TPA_Extensions>
                                <ParkingFeePolicy ParkingType="location_nearby" ParkingReservation="needed" ParkingProperty="private"/>
                            </TPA_Extensions>
                        </FeePolicy>
                    </FeePolicies>
                </Policy>
            </Policies>
        </HotelDescriptiveContent>
    </HotelDescriptiveContents>
</OTA_HotelDescriptiveContentNotifRQ>

DescriptiveText

The Feature[DescriptiveText] accepts the following values. Each value corresponds with a similarly named setting on the Facilities & Services page on our Extranet. Some options appear only when the Restaurant checkbox is selected.

Value Description
a la carte The restaurant offers à la carte dining.
buffet The restaurant has a buffet.
guests only The restaurant only serves guests of the property.
accepts reservations Customers can reserve a table at the restaurant.
outdoor seating The restaurant offers outdoor seating.

ContactProfileType

ContactInfo[ContactProfileType] accepts the following values. Each value corresponds with a similarly named heading on the Contacts page in our extranet.

A property must have all the required contact profiles before you can open it.

Value Description Required
general Primary point of contact for the property. Required
contract Contact for contract matters. Optional
reservations Contact for reservations. Optional
invoices Contact for accounts payable. Required
availability Contact for questions about availability. Optional
site_content Contact for photos, descriptions, and other website content. Optional
parity Contact for pricing and rate matters. Optional
requests Contact for special requests. Optional
central_reservations Contact for central reservations. Applies to properties that manage reservations from another location. Optional
PhysicalLocation Address details for the property's physical location. Required

Response body example

The following is a successful response body example:

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelDescriptiveContentNotifRS 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_HotelDescriptiveContentNotifRS.xsd" TimeStamp="2015-07-31T12:36:23-00:00" Target="Test" Version="3.000">
  <UniqueID Type="10" ID="{PropertyID}" />
  <Success />
</OTA_HotelDescriptiveContentNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXX==] -->

Response body parameters

The following table describes the response elements:

Element Description Type Notes
OTA_HotelDescriptiveContentNotifRS Contains the response data. object
> warnings Contains potential warnings. These can help you improve your requests. array
> errors Contains potential errors. These can help you understand what went wrong with your request. array
> 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's Connectivity support team if you run into an issue. This can help to understand what went wrong.

Copying fees forward

When a property has set up a tax or fee change at a future moment in time in the extranet, Booking.com systems automatically copy the other existing fees to the future period. Looking at the table below, this means that at the future moment in time the updated fees will become effective.

Fee Now Future moment in time (for example, 01/01/2023)
VAT 8% 9%
Cleaning fee €50 per stay €50 per stay
City Tax €5 per day €5 per day

However, if you make changes via the Content API (/ota/OTA_HotelDescriptiveContentNotif endpoint) after the future fee change was set up, Booking.com systems did not automatically copy the updated fees to the future period. Looking at the table, you can see that when you change the cleaning fee value via the Content API, it does not get copied forward to the future moment in time.

Fee Now Future moment in time (for example, 01/01/2023)
VAT 8% 9%
Cleaning fee €70 per stay €50 per stay
City Tax €5 per day €5 per day

To mitigate this behavior, the Content API now has a setting (TPA_Extensions > OverwriteFutureFees) with a default setting (1) to copy any fee changes to the future moment in time. If you want to turn off this behavior, you can send a request by setting the value to 0.

Partial example

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelDescriptiveContentNotifRQ Target="Production">
    <HotelDescriptiveContents>
        <HotelDescriptiveContent
      HotelName="The Best Hotel"
      LanguageCode="en"
      HotelDescriptiveContentNotifType="Overlay">
            <Policies>
                <Policy>
                    <PolicyInfo CheckInTime="16:00" CheckOutTime="11:00"/>
                    <PetsPolicies PetsAllowedCode="Pets By Arrangements">
                        <PetsPolicy NonRefundableFee="free" />
                    </PetsPolicies>
                    <CancelPolicy>
                        <CancelPenalty PolicyCode="43" />
                        <CancelPenalty PolicyCode="1" />
                    </CancelPolicy>
                    <GuaranteePaymentPolicy>
                        <GuaranteePayment PolicyCode="43" />
                        <GuaranteePayment PolicyCode="1" />
                    </GuaranteePaymentPolicy>
                    <TaxPolicies>
                        <TaxPolicy Code="36" Percent="900" DecimalPlaces="2" Type="Inclusive" ChargeFrequency="12" />
                    </TaxPolicies>
                    <FeePolicies>
                        <FeePolicy Code="5009" Amount="7000" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="12" />
                        <FeePolicy Code="3" Amount="500" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="1" />
                        <FeePolicy Code="5036" Amount="350" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="2" />
                    </FeePolicies>
                    <TPA_Extensions OverwriteFutureFees='1' />
                </Policy>
            </Policies>
        </HotelDescriptiveContent>
    </HotelDescriptiveContents>
</OTA_HotelDescriptiveContentNotifRQ>

Enabling request to book

Booking.com supports two types of booking flow depending on the partners choice:

  • Instant booking (IB): The existing booking flow where guests search and book a stay instantly with the option to pay immediately or at the property depending on the cancellation policy.
  • Request to book (RTB): (a.) Guests who want to stay at the partner's property send them a booking request at least three days before check-in. (b.) Partner receives a booking request notification and has 24 hours to accept or decline it. (c.) If the partner accepts the request, the guest has 24 hours to complete their booking and confirm their stay. If they don’t complete the booking in time, the request will expire and no reservation will be made.

Note that availability for request to book are shown to guests only when the stay dates are 3 or more days in the future. RTB can be enabled only for new properties and is currently supported for properties located in the following countries:

Supported country list
USA
Australia
France
Germany
Italy
United Kingdom
Spain

In addition, RTB can be enabled only for the following property types:

Supported property type
Holiday Home
Apartment
Villa

If RTB feature is not specified in the /ota/OTA_HotelDescriptiveContentNotif request, then the property is configured for instant booking (IB) booking flow.

Partial example

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelDescriptiveContentNotifRQ Target="Production">
    <HotelDescriptiveContents>
        <HotelDescriptiveContent
      HotelName="The Best Hotel"
      LanguageCode="en"
      HotelDescriptiveContentNotifType="New">
          <TPA_Extensions>
            <BookingModel Type="RTB"/>
          </TPA_Extensions>
        </HotelDescriptiveContent>
    </HotelDescriptiveContents>
</OTA_HotelDescriptiveContentNotifRQ>

Error codes

BuildHotel error

If you receive the BuildHotel error, try to resend the same building request again until you receive a success response. The system excludes properties built with the BuildHotel error, which are automatically set to Closed (status). In case the BuildHotel error does not disappear, contact Connectivity Support.

Next steps