Last updated

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.
Room-level fee details take precedence

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) The Inclusive or Exclusive 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, whereas ChargeFrequency="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

Exercise caution while using the Overlay mode

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>

Next steps