Modify a property's policies
Besides creating or updating a property, you can also use the OTA_HotelDescriptiveContentNotif
endpoint to add or modify policies for your property.
You can manage the following policy types:
- Cancellation policies created at the property level. See how to create a new cancellation policy for a property.
- Fee policy added at the property or room level. See how to add fee or tax policy at the room or property level.
- Pets and parking fee policies.
- Children policy. Using
OTA_HotelDescriptiveContentNotif
, you can specify whether children are allowed, the child age limit and more.
Creating a cancellation policy
Cancellation policies are specific to a property. You must create cancellation policy on the property level (using the OTA_HotelDescriptiveContentNotif
endpoint) but assign them on the roomrate level (using the OTA_HotelProductNotif
endpoint).
To create a cancellation policy, make sure to add the following:
- Cancellation penalty code
- Guarantee payment code (usually same as the penalty code)
- No show penalty (
default
- same as the cancellation penalty;total_price
: equals the total reservation price. )
Booking.com provides cancellation penalty conditions with varying cancellation deadlines and penalties each identified using a cancellation code. You can find free and non-free cancellation codes. Based on your business needs, you can use an appropriate cancellation code while creating a cancellation policy. For a full list of cancellation codes, see the cancellation policy codes.
Adding a fee or tax policy
You can add fee or tax policy at the:
- Property level. All units share the same fee details.
- Room level. For example, you can add a different cleaning fee for a one-bed apartment vs. a three-bed apartment.
If you specify both the property-level and room-level fee details, then the API uses the room-level fee details.
Adding fees or tax at the property level
To add fees or tax at the property level, you must provide the following details:
- The Booking.com provided code for a fee type that you want to charge. For example,
Code="5006"
represents the Heritage charge. For a full list of Booking.com provided fee and tax type codes and their descriptions, see Fee Tax Type Codes. - The amount to charge.
- Whether the fee is included in the price of the stay or added additionally. (
Inclusive
/Exclusive
) TheInclusive
orExclusive
status is determined by the country-specific settings where the property operates. If the data sent is not in line with those settings, the API automatically sets it to the correct value and returns a warning that states this change. - The Booking.com provided code for the charge frequency. For example
ChargeFrequency="1"
denotes the charges apply per day, whereasChargeFrequency="12"
denotes the charges apply per stay and so on. For a complete list of Booking.com provided charge frequency codes, see Charge Frequency codes.
Adding fees or tax at the room level
Adding fees at the room level involves specifying the room type ID using the InvCode
attribute in addition to providing all the details to add fees at the property level.
!!! Note "Make sure to create a room type using OTA_HotelInvNotif endpoint"
Before you can add individual fee for rooms, make sure to create a room type in the property with the relevant details using OTA_HotelInvNotif endpoint. You can retrieve the room type ID along with the property details using the OTA_HotelDescriptiveInfo
endpoint (FacilityInfo
->GuestRooms
->GuestRoom.ID
). Specify the room type ID as the value for InvCode
when adding fees for specific rooms.
For more information on all the fee policy parameters, see fee policy.
Before you start
Content API uses an overlay system. Every time you update an existing property, room type, or other object, the body of your request replaces whatever information was stored in our servers at that time. This means existing information may be deleted if you don't include it in your request.
To update an object without deleting information, make sure your request contains both the fields you want to update and those you want to keep the same. Copy/paste sample requests from this page at your own risk.
You need:
Request
HTTP request
https://supply-xml.booking.com/hotels/ota/OTA_HotelDescriptiveContentNotif
Request body
For more information on all the request parameters, see Creating a property.
The following example:
- Creates three cancellation policies.
- Specifies whether children are allowed.
- Creates fee and tax policies at both property and room level.
- Includes pets and parking fees policies.
<!-- WARNING: This request overlays existing objects. Copy/pasting may lead to loss of information. --> <?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 HotelCode="{PropertyID}" LanguageCode="en" HotelDescriptiveContentNotifType="Overlay" > <Policies> <Policy> <PolicyInfo CheckInTime="13:00" CheckOutTime="12:00" UsualStayFreeCutoffAge="12" UsualStayFreeChildPerAdult="1" AcceptedGuestType="ChildrenAllowed" MinGuestAge="0"/> <PetsPolicies PetsAllowedCode="Pets By Arrangements"> <PetsPolicy NonRefundableFee="free" /> </PetsPolicies> <CancelPolicy> <CancelPenalty PolicyCode="43" /> <CancelPenalty PolicyCode="1" /> <CancelPenalty PolicyCode="116" > <TPA_Extensions> <NoShowPolicy Penalty="default"/> </TPA_Extensions> </CancelPenalty> </CancelPolicy> <GuaranteePaymentPolicy> <GuaranteePayment PolicyCode="43" /> <GuaranteePayment PolicyCode="1" /> <GuaranteePayment PolicyCode="116" /> </GuaranteePaymentPolicy> <TaxPolicies> <TaxPolicy Code="36" Percent="1800" DecimalPlaces="2" Type="Inclusive" ChargeFrequency="12" InvCode="801185507" /> <TaxPolicy Code="3" Percent="350" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="21" /> </TaxPolicies> <FeePolicies> <FeePolicy Code="5012" Amount="1600" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="12" InvCode="801185507" /> <FeePolicy Code="5013" Amount="1800" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="12" /> <FeePolicy Code="5035" Amount="10000" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="5001" > <TPA_Extensions> <InternetFeePolicy InternetType="wired" InternetCoverage="public_areas" /> </TPA_Extensions> </FeePolicy> <FeePolicy Code="5036" Amount="10000" 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>
Response
The response contains an OTA_HotelDescriptiveContentNotifRS object:
<?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="Production" Version="3.000"> <Success /> </OTA_HotelDescriptiveContentNotifRS> <!-- RUID: [UmFuZG9tetc] -->
Known issues
Updating policies
To update any part of policies we recommend that you always send complete information (both the fields you want to update and those you want to keep the same) between <Policy>
and </Policy>
.
Removing entries from FeePolicies
when only Internet fee (5035
) and Parking fee (5036
) will remain
There is a special case where FeePolicy
fields will not be removed from the database when the only remaining FeePolicy
entries are Internet fee (5035
) and Parking fee (5036
). Let's use the example below. This is an excerpt and not a valid XML document.
<Policies> <Policy> <PetsPolicies PetsAllowedCode="Pets By Arrangements"> <PetsPolicy NonRefundableFee="charges_may_apply" /> </PetsPolicies> <FeePolicies> <FeePolicy Code="5009" Amount="1800" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="12" /> <FeePolicy Code="5035" Amount="10000" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="1" > <TPA_Extensions> <InternetFeePolicy InternetType="wired" InternetCoverage="public_areas" /> </TPA_Extensions> </FeePolicy> <FeePolicy Code="5036" Amount="10000" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="2" > <TPA_Extensions> <ParkingFeePolicy ParkingType="location_nearby" ParkingReservation="needed" ParkingProperty="private"/> </TPA_Extensions> </FeePolicy> </FeePolicies> </Policy> </Policies>
If you would like to remove Cleaning fee (5009
) from the example above you will need to set it's amount value to 0, like in the example below.
<Policies> <Policy> <PetsPolicies PetsAllowedCode="Pets By Arrangements"> <PetsPolicy NonRefundableFee="charges_may_apply" /> </PetsPolicies> <FeePolicies> <!-- Removing this FeePolicy using Amount="0" --> <FeePolicy Code="5009" Amount="0" Type="Exclusive" /> <FeePolicy Code="5035" Amount="10000" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="1" > <TPA_Extensions> <InternetFeePolicy InternetType="wired" InternetCoverage="public_areas" /> </TPA_Extensions> </FeePolicy> <FeePolicy Code="5036" Amount="10000" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="2" > <TPA_Extensions> <ParkingFeePolicy ParkingType="location_nearby" ParkingReservation="needed" ParkingProperty="private"/> </TPA_Extensions> </FeePolicy> </FeePolicies> </Policy> </Policies>