{% admonition type="warning" name="Outdated version" %} This documentation is outdated and is soon going to be deprecated. For the latest in Reservations API documentation, see the [Retrieving new reservations using OTA](/connectivity/docs/reservations-api/retrieving-new-reservations-ota.md) and [acknowledging new reservations](/connectivity/docs/reservations-api/acknowledging-new-reservations-ota.md) sections. {% /admonition %}
The following section is outdated and Booking.com does not actively verify its accuracy. Use at your own discretion. # HotelResNotifRQ/RS (OTA 2003B) This call is used for retrieving and responding to new reservations on Booking.com. ### Step 1: Send a GET request to this URL. ```http GET https://secure-supply-xml.booking.com/hotels/ota/OTA_HotelResNotif ``` **Steps for successful reservations retrieval** * 1- Get request to OTA_HotelResNotif URL. (By **Provider**). * 2- Booking.com will respond with a OTA_HotelResNotifRQ, including a full list of open reservations (By **Booking.com**) * 3- Post request to OTA_HotelResNotif URL with OTA_HotelResNotifRS message indicating a success(check OTA_HotelResNotifRS message formate below). (By **Provider**). * 4- Once Booking.com receives the confirmation that the reservations were processed successfully, we will remove those reservations from the queue.And respond back with OTA_HotelResNotifRS success. (By **Booking.com**) * **Note** If provider didn't respond with OTA_HotelResNotifRS message(step 3). Message will be sent as a fallback after a certain deadline. ## Example request and response **Note** This example does not contain optional elements that Booking.com supports. Optional elements are defined in separate section below. ### Step 2: You will receive this response. ### OTA_HotelResNotifRQ {% admonition type="info" name="Virtual credit card (VCC) details are included in all retrievals" %} In case you retrieve a reservation multiple times, VCC details are included in all retrievals. However, ordinary credit card (CC) details are only included once (B.XML) or until the details are acknowledged (OTA). {% /admonition %} ```xml All meals and select beverages are included in the room rate. 0 I need a wake up service Non-Smoking FIRSTNAMEBOOKER LASTNAMEBOOKER SPECIAL REQUESTS CARD HOLDER NAME FIRSTNAMEBOOKER LASTNAMEBOOKER
ADDRESS CITY ZIP CODE
``` The above request will do the following: respond with new reservation messages for hotel 367456, which is in this case; one new confirmation consisting of 3 rooms. In order to complete the process of retrieving this reservation; the Connectivity Partner must POST a success message to ### Step 3: Send acknowledge message ```http POST https://secure-supply-xml.booking.com/hotels/ota/OTA_HotelResNotif ``` ### OTA_HotelResNotif Response In case of success from your side, then send this: ```xml ``` `` This line is mandatory and means that the reservation ID in Booking.com system = 812864414. `` Include this line only if you enabled connection setting "Include External Reservation IDs in OTA messages"(Contact your Account manager) It means that the ID of the reservation in your system = OWNCODE64143566. This ID will be sent to you again for any modification messages within HotelReservationIDs tag. You need to enable connection setting "Include ResID_Source information in ``" to have attribute ResID_Source.(Contact your Account manager) In case of failure from your side, then send this, stating the errors happened: ```xml ``` **Error@RecordID** is the reservation ID ### Step 4: You will receive this reponse. **Response** ```xml ``` The above request will do the following: Confirm reservation 812864414 and take the xml reservation message out of the queue. Please confirm every reservation message in separate requests. Note, to confirm multiple reservation messages in one request, the tag can be used multiple times. ## Optional parameters in the request URL **Element name:** hotel_ids **Description:** The hotel ID supplied by Booking.com to identify the hotel you are trying to retrieve reservations from. **Type:** integer **Constraints:** * When "id" is specified, the "hotel_ids" parameter has no effect. * You can add up to 500 hotel_ids per request. If you add more, you receive the following error:
```invalid hotel_id value - you are not allowed to request more than 500 hotel ids per request``` **Format:** multiple hotel ID's are separated by commas. All hotel IDs are unique. **Example:** ```http https://secure-supply-xml.booking.com/hotels/ota/OTA_HotelResNotif?hotel_ids=10002,10003 ``` **Element name:** id **Description:** Short description Connectivity Partners are able to issue a reservation ID to retrieve a single reservation **Type:** integer **Constraints:** only IDs can be specified that are queued (or have been queued) for XML retrieval before. ID can only be specified if hotel_ids is omitted **Example:** ```http https://secure-supply-xml.booking.com/hotels/ota/OTA_HotelResNotif?id=569603872 ``` **Element name:** last_change **Description:** Retrieves all reservations that have been made or modified since the specified date in the last_change element **Type:** datetime **Constraints:** you should only request reservations up until 2 weeks in the past. **Format:** YYYY-MM-DD HH:MM:SS The last change function will not contain any reservation messages that have never been queued for XML before. Connectivity Partners should only request reservations up until 2 weeks in the past. The last_change element will also result in reservations that have been picked up via XML before. **last_change** will return reservations starting from the oldest reservation. The exact number varies depending on our system, but please expect several hundred. This can be reduced by specifying **limit**. {% raw-partial file="/connectivity/docs/snip/reservation-api/avoid-last-changed-body.md" /%} **Example:** ```http https://secure-supply-xml.booking.com/hotels/ota/OTA_HotelResNotif?last_change=2012-09-01 00:00:00 ``` **Element name:** limit **Description:** Maximum amount of reservations to return in the request. **Type:** integer **Constraints:** an integer equal or greater than 10 * The limit parameter specifies the maximum number of reservations to return in a response. You must use an integer larger than 10. However, note that each response can return less reservations than the specified maximum number regardless of the number of reservations available. **Example:** ```http https://secure-supply-xml.booking.com/hotels/ota/OTA_HotelResNotif?limit=200 ``` **Response** At a higher level, OTA_HotelResNotifRQ is a collection of HotelReservations: ```xml ``` In case the request is for an [independent property][glossary-independent-property] and you do not have access to the property ```xml ``` In case the request is for multiple properties you will get warning for properties that you do not have access to. ```xml ``` Each reservation contains: ### RoomStays ```xml ``` **RoomStay IndexNumber:** the room reservation ID as used by BOOKING.COM to identify the booked room within the reservation. Unique for every booked room. ### RoomTypes ```xml All meals and select beverages are included in the room rate. 0 Including service charge Excluding breakfast Including VAT TV Telephone Toilet ``` **RoomType RoomTypeCode:** the room type ID as used by BOOKING.COM. **RoomDescription Name:** Room short name as displayed on the website. Please note that the roomname might differ from the roomname in the roomrates request, depending on the policy and/or rate type. Therefore we suggest to only map based on room ID and rate ID. **RoomDescription Text:** Room description as currently known for the booked room in the database. **RoomDescription MealPlan:** Mealplan (breakfast, lunch or dinner) information that is applicable for the booked room. **RoomDescription MaxChildren:** The static setting of maximum amount of children that can stay free in the booked room. Note that, this does not mean that if the max_children=2, that the guest has entered 2 children in the bookprocess. This is a static setting, defined per room. The maximum age of the children can be found in the policy of the hotel. The hotelier can request this setting with the Booking.com account managers or check in the Booking.com Extranet. AdditionalDetails Text: room info as displayed on the website at the time the reservation was made. **Amenity:** room facility as displayed on the website at the time the reservation was made. ### RatePlans ```xml ``` **Amount:** the total commission due for this room for all nights combined. **DecimalPlaces:** the number of decimal places for a particular currency (eg. 13350 with DecimalPlaces="2" represents 133.50). **CurrencyCode:** the currency used for pricing is always the same for the hotel and set by BOOKING.COM. ### RoomRates Price and rate plan ID per night as known at the moment of reservation. ```xml ``` **EffectiveDate:** effective date. **RatePlanCode:** rate plan id. {% admonition type="info" name="Virtual credit card (VCC) payments" %} If you enabled the [VCC with rate plan ID feature](https://connect.booking.com/feature_management#), you can see the letters VCC attached to the end of the id. This indicates the payment to the property was made with a Booking.com virtual credit card (VCC). {% /admonition %} {% admonition type="info" name="VCC details can be retrieved multiple times" %} When retrieving reservations, you can retrieve VCC details multiple (unlimited) times. This is not possible with normal credit card (CC) details, which you can retrieve only once. {% /admonition %} **AmountAfterTax/AmountBeforeTax:** Specifies the price. If the room has both 'Including VAT' and 'Including taxes' enabled, AmountAfterTax is returned, otherwise AmountBeforeTax. **DecimalPlaces:** The number of decimal places for a particular currency (eg. 13350 with DecimalPlaces="2" represents 133.50). **CurrencyCode:** the currency used for pricing is always the same for the hotel and set by BOOKING.COM. GuestCounts ```xml ``` **Count:** It is the number of guests for this room as filled by the booker. ### Total The total price for this room for all nights combined, sum of all prices known at the moment of reservation. Note that there may be some excluded charges from this price. For more details please implement feature include_price_details. ```xml ``` **AmountAfterTax/AmountBeforeTax:** Specifies the price. If the room has both 'Including VAT' and 'Including taxes' enabled, AmountAfterTax is returned, otherwise AmountBeforeTax. **DecimalPlaces:** The number of decimal places for a particular currency (eg. 13350 with DecimalPlaces="2" represents 133.50). **CurrencyCode:** The currency used for pricing is always the same for the hotel and set by BOOKING.COM. BasicPropertyInfo ```xml ``` **HotelCode:** the hotel ID as used by BOOKING.COM. ### ResGuestRPHs ```xml ``` **RPH:** Specifies an index number that works as a cross-reference to link guests ([ResGuest]) to rooms [RoomStay]. ### Comments ```xml I need a wake up service ``` * **Comments** Element is not mandatory. It will be included if guest added a comment for the room. ### SpecialRequests ```xml Non-Smoking ``` * **SpecialRequests** Element is not mandatory. It will be included if guest has special request for the room. **Text:** Non-Smoking / Smoking. ### ServiceRPHs ```xml ``` **RPH:** Specifies an index number that works as a cross-reference to link guests ([ResGuest]) to rooms [RoomStay]. ### Services, Service ```xml ``` **ServiceRPH:** service identification, used to identify the RoomStay **ServiceInventoryCode:** the add-on id, according to the table: | ID | name | |----|-------------------------------------| | 1 | Breakfast | | 2 | Continental breakfast | | 3 | American breakfast | | 4 | Buffet breakfast | | 5 | Full english breakfast | | 6 | Lunch | | 7 | Dinner | | 8 | Half board | | 9 | Full board | | 11 | Breakfast for Children | | 12 | Continental breakfast for Children | | 13 | American breakfast for Children | | 14 | Buffet breakfast for Children | | 15 | Full english breakfast for Children | | 16 | Lunch for Children | | 17 | Dinner for Children | | 18 | Half board for Children | | 19 | Full board for Children | | 20 | WiFi | | 21 | Internet | | 22 | Parking space | | 23 | Extrabed | | 24 | Babycot | **ServicePricingType:** the pricing type code, according to the table: | ID | code | |----|-------------------------------------| | 0 | CPM_NOT_APPLICABLE | | 1 | CPM_PER_STAY | | 2 | CPM_PER_PERSON_PER_STAY | | 3 | CPM_PER_NIGHT | | 4 | CPM_PER_PERSON_PER_NIGHT | | 5 | CPM_PERCENTAGE | | 6 | CPM_PER_PERSON_PER_NIGHT_RESTRICTED | **ServiceDetails:** The service details, which can include any of these (according to the pricing type code): * GuestCount (number of guests) * Timespam (number of nights) * Fees (price to be paid for the add-ons) ### ResGuests, ResGuest ```xml FIRSTNAMEBOOKER LASTNAMEBOOKER ``` **ResGuestRPH:** index for this guest in this reservation. See also above. **Surname (can be empty):** guest name for this room as filled in on the website. ### ResGlobalInfo, Guarantee The credit card information. ```xml test ``` **EffectiveDate** The date that the card can be charged from. This attribute will exist only for virtual credit cards. To start receiving this attribute, please enable "Reservation virtual credit card activation" feature. **CurrentBalance** The current balance that is chargable on the virtual credit card. This attribute will exist only for virtual credit cards. To start receiving this attribute, please enable "Include VCC current balance" feature. **DecimalPlaces** This indicates the position of the decimal point (from right to left) in the current balance number. This means that 10599 with DecimalPlaces="2" represents 105.99. To include this attribute to the "PaymentCard" tag, you need to enable the "Include VCC current balance" feature in the [Provider Portal](https://connect.booking.com/feature_management?lang=en). **CurrencyCode** This specifies the currency code (ISO 4217) of the virtual credit card's current balance. To include this attribute to the "PaymentCard" tag, you need to enable the "Include VCC current balance" feature in the [Provider Portal](https://connect.booking.com/feature_management?lang=en). **VCCExpirationDate** This indicates the expiration date of the virtual credit card. This attribute will exist only for virtual credit cards. To include this attribute to the "PaymentCard" tag, you need to enable the "Include VCC current balance" feature in the [Provider Portal](https://connect.booking.com/feature_management?lang=en). **CardCode** - 2-character code of the credit card issuer. "XX" is returned if no code for the credit card is defined. | Card Code | Description | |-----------|----------------------------------| | AX | American Express | | BC | Bank Card | | BL | Carte Bancaire | | BL | Carte Bleue | | CU | Unionpay Credit Card | | DN | Diners Club | | DS | Discover Card | | JC | Japanese Credit Bureau Credit Card| | MA | Maestro (Switch) | | MC | Master Card | | MI | NSPK MIR | | VI | Visa | **CardNumber:** credit card number as supplied by the customer. If all 0, something went wrong when retrieving the number (please try again later). **SeriesCode:** credit card CVC-code as supplied by the customer. If all 0, something went wrong when retrieving the CVC-code (please try again later). **ExpireDate:** credit card expiration date as supplied by the customer. If all 0, something went wrong when retrieving the expiration date (please try again later). **CardHolderName:** credit card holder's name as supplied by the customer. If "-", something went wrong when retrieving the holder's name (please try again later). **Total:** The total amount of room sales of this reservation. All rooms * all nights combined. Note that there may be some excluded charges from this price. For more details please implement feature include_price_details. ```xml ``` **AmountAfterTax/AmountBeforeTax:** Specifies the price. If the room has both 'Including VAT' and 'Including taxes' enabled, AmountAfterTax is returned, otherwise AmountBeforeTax. **DecimalPlaces:** The number of decimal places for a particular currency (eg. 13350 with DecimalPlaces="2" represents 133.50). **CurrencyCode:** The currency used for pricing is always the same for the hotel and set by BOOKING.COM. HotelReservationIDs ```xml ``` **ResID_Value:** Booking.com Reservation ID. **ResID_Date:** Creation date of the reservation ### Profiles ```xml firstnameguest lastnameguest test.test@booking.com
test test 12345
``` **GivenName:** first name of the booker as supplied by the customer. Note that this doesn't have to be the same as the guestname(s). **Surname:** last name of the booker as supplied by the customer. Note that this doesn't have to be the same as the guestname(s). **PhoneNumber:** telephone number as supplied by the customer. **Email:** email address supplied by the customer. Used by BOOKING.COM to send the reservation confirmation. **AddressLine (can be empty):** home address supplied by the customer. **CityName (can be empty):** city of residence as supplied by the customer. **PostalCode (can be empty):** zip / post code as supplied by the customer. **CountryName Code:** countrycode of residence as supplied by the customer. **CompanyName (can be empty):** company name as supplied by the customer. **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. ## Features These are extra information that can be added to the response. You will have to enable them yourself. To enable Features: From Booking.com connectivity portal go to administration menu and then to feature management ### Extra reservation information(res_extra_info) Reservation extra information will add many new elements to the reservation messages. * You Have to enable feature "Get extra information for reservations" to have it. and That includes 4 extra sections descriped below. 1- Highlight genius status of the guest and if they qualify for any available freebies, such as a welcome drink or a late check-out. 2- Facilitating the transmission of payment options such as bank transfer and virtual credit cards. 3- information about the payment of the reservation. 4- Specify whether the booker is traveling on business, including company name and TAX. ```xml ... Welcome drink Early check in at 12:00 ... ... ``` **Services** element will also include genius freebies and booking.com’s loyalty program benefits if applicable. * **Service@ID** - **"ID=5000"** means that the customer has genius freebies or booking.com’s loyalty program benefits. * **SpecialRequest@Name** - represents the Booking.com Service Name Code as outlined below in the BCSN Code table, along with its description in US English in **SpecialRequest@Text** * * **BCSN** (Booking.com Service Name Codes) | Code Name | Description | |-----------|-----------------------------------------------| | GF_1 | Early check in | | GF_2 | Free airport shuttle | | GF_3 | Free drink upon arrival | | GF_4 | Free bike rental | | GF_5 | Give Genius guests 2 extra hours to check out | | GF_6 | Free breakfast | | GF_7 | Free parking on availability | | GF_8 | Free Wifi | ```xml ... ... Children and Extra Bed Policy: All children are welcome... ... ``` If property modified the rate on Booking.com extranet directly then * **TPA_Extensions** element will be included under **RoomRates** section. * **RateRewrite** is the element that contains attributes: * **ToCode** is the rate that is mapped with the provider. * **FromCode** is the rate code on Booking.com that the rate is originating from. * **FromName** is its respective name on Booking.com * * **RateGenius** Element: @Value is true if the rate(s) is genius and the rate(s) code. A reservation with the `RateGenius` set to `false` can show a genius discounted price, only if a genius discount has been added at the room level. For more information on how to set room-level genius rate discount, see the Opportunities tab in the extranet. In the case of multiple nights the @RateIds’s value will be separated by a comma. Genius rates are discounted rates offered to a closed user group who are eligible for this discount provided by the accommodation. * * **BookingCondition** Element: the content of this is what the accommodation has loaded in their policy section. ```xml ... ... Payment via Booking.com Payout type: Booking virtual credit card ... ``` * **DepositPayments** section contains information about the payment of the reservation. Booking.com can take payments from the guest on behalf of the property. In case of no Booking.com managed prepayment, this tag will be omitted. * **GuaranteePayment@GuaranteeType** - has the added types of **"Prepay"**. The **Text** of the **Description** will indicate the payout medium: Bank Transfer, or Booking Virtual Credit Card. {% admonition type="warning" name="The reservation can have two different currency codes" %} **The first one** is the hotel default currency. It is the value of the attribute `CurrencyCode` of the tags `` under `` and under ``. **The second one** is the currency of the booking virtual credit card. That is only in case the payment is payment_on_Booking.com through the Booking Virtual Credit Card. The property can choose through Extranet to recieve the virtual credit card in different curreny than its default one. It is the value of the attribute `Currency` of the `` tag under `` of the ``. {% /admonition %} ```xml ... ... ``` * **booker** The section contain information about the booker. * **affiliations** Should the booker be on business, you can find more information in the following section. * **affiliation** This section contains information about the name of the corporate company of the guest and VAT /tax if provided. * **flags** Following flags are only included if applicable. * - booker_is_genius means Booker has a genius status. Genius is a program where Booking.com reward our most frequent bookers by some freebies for a set of properties worldwide. Properties can configure that. * - no_address_reservation means Booker did not need to provide an address. * - no_cc_reservation means Booker did not need to provide a credit card. ### Include Price Details(include_price_details) Properties can configure the setup of taxes and charges in the Booking.com extranet. These setups will be reflected on the Front End, confirmation email to the customer and confirmation to the hotel. Properties can specify how VAT + city tax are calculated and can set up to 5 extra charges. You can retrieve these details within the reservation message by allowing this feature. ```xml VAT (3.8%) ... ``` * **Taxes** This section will have all taxes and charges added by thr ptoperty from Booking.com extranet. it can contain up to 5 **Tax** child elements * **Taxes@Amout** Total amount of taxes. * **Taxes@CurrencyCode** Currency Code of the total amount of taxes. * **Taxes@DecimalPlaces** the number of decimal places for a particular currency (eg. 13350 with DecimalPlaces="2" represents 133.50). * **Tax** this section will contain the details of certain Tax detail. * **Tax@Amount** the amount of the tax. * **Tax@ChargeFrequency** This attribute shows whether the tax is per person or per night. Check ChargeFrequency table below for different cases. * **Tax@Code** OTA code for taxes/extra charges types.If there is no matching code, it will be filled with the description of the tax. Check TaxCode table below. * **Taxe@CurrencyCode** Currency Code of the amount of taxe. * **Taxes@DecimalPlaces** the number of decimal places for a particular currency (eg. 13350 with DecimalPlaces="2" represents 133.50). * **Taxe@type** indicate whether this amount is included in the total price of the reservation or not. * * **ChargeFrequency** codes table: | ChargeFrequency Code | Description | |----------------------|----------------------------------| | 21 | per person and per night | | 20 | per person only | | 19 | per nights only | | 12 | niether per person nor per night | * * **TaxCode** table: | Tax Code | Description | |---------------|-----------------------| | 14 | service charge | | 19 or 36 | Value Added Tax (VAT) | | 3 | City Tax | | 17 or 13 | Tax | | 46 | Government Tax | ### OTA hotel reservation response token(ota_res_response_token) It has been reported by some providers that sometimes they are not able to pick up reservation modifications when they're in the process of sending a response regarding a previous message (either a confirmation or another modification). This results in inconsistent data for the hotels and possibly a poor experience for the guests. This is due to a limitation of our system, making it prone to race conditions like that. We have fixed it by implementing a simple Optimistic Concurrency Control mechanism. With this mechanism, it is now necessary to always include a token in OTA responses. They identify which message the provider is replying to, so we can properly acknowledge that a message has been received by the provider. We'll include a new HotelReservationID tag for every reservation. This tag is differentiated by having ResID_Source="BOOKING.COM" and ResID_Type="18". ResID_Value contains the response token that needs to be sent back to us in the OTA responses. Below you can see an example of the new tag, alongside the one that contains the reservation number. ```xml ``` In the OTA responses, this tag just needs to be added as-is inside HotelReservationIDs. Like that: ```xml ``` By Adding this info in the response we will detect there is a race condition happened and will return an HTTP status code "409 Conflict", and a message "response token '...' for hotel reservation '...' does not match. please pull again." %} ### Include reservation-level guest count(childcount) Include Number of adults and children (with their ages) that the booker searched for when making the booking along with the reservation message. **NOTE** This is not guaranteed to match the number of guests that arrive. The total number of adults should still be less than or equal to the max occupancy allowed for adults for the rooms reserved. ```xml ... ... ``` **GuestCounts** This section will contain all guest counts. * **GuestCount** Element minimum occurence = 0. * **GuestCount@AgeQualifyingCode** this is the code which identify whether the count is for children or adults. if adults Atrribute **Age** will not be included. It can has 2 values. **10** means counted as adults. **8** means counted as children. * **GuestCount@Age** If AgeQualifyingCode attribute = 8 then you will find this attribute which shows the age of the children. ### Include total commision(include_total_commission) Include total commission of the reservation. Currently commission amount is displayed per each RoomStay. As you know one reservation can have multiple Room stays. By enabling this feature you will get the total commission amount for the reservation. This is very important for modification/cancellation messages to check the commission amount calculated, as some non-refundable reservations may be obligable for commission. ```xml ... ... This is the total commission amount calculated by Booking.com ``` **Amount:** the total commission due for this reservation for all rooms for all nights combined. **DecimalPlaces:** the number of decimal places for a particular currency (eg. 6909 with DecimalPlaces="1" represents 690.9). **CurrencyCode:** the currency used for pricing is always the same for the hotel and set by BOOKING.COM. ### Include room-level occupancy (include_room_level_occupancy) This feature when enabled will return maximum occupancy for each room reservation. If the room has rate level restrictions then this is the maximum occupancy for that rate. In case of no rate level restrictions this is the maximum occupancy of the room. It can be used to get the maximum occupancy of the room for a price. ```xml 2 ``` ### Add cancellation policy (res_cancel_policies) This feature adds: 1- The [policy code][policy_code] which describes what are the cancellation policies 2- Grace period information for non-refundable rooms. If a property chooses to offer a grace period guests can cancel non-refundable bookings within 1, 4 or 24 hours after booking. 3- Add Grace period to ResGlobalInfo.Comments Normally there will be the cancel penalty element with the policy code. Only if the grace period policy applies there will be another element with policy code "grace_period" and the deadline. Amount attribute will always be 100 incase of grace_period and means that cancellation is free of charge within the specified deadline. **Note:** for cancellation policy details (including the actual amount needs to be paid and dates) please check feature "add cancellation policy details" ```xml ``` | FIELD | DESCRIPTION | TYPE | OCCURRENCES | |-------|-------------|------|-------------| | CancelPenalties | This is the parent element for all cancel penality policies | object | 1..1 | | CancelPenalty | - | object | 0..* | | CancelPenalty[@PolicyCode] | Cancellation [policy code][policy_code]. It will either has the policy code for the room reservation rate which is an integer or "grace_period" for the grace period policy if applies | string | 1..1 | | Deadline | This element will indicate when this policy ends | object | 0..1 | | Deadline[@time] | This attribute will indicate when this policy ends. The timezone is indicated in the value | datetime with the timezone | 1..1 | | AmountPercent | This element will how much the property should charge the guest, if the guest cancelled before the deadline | object | 0..1 | | AmountPercent[@amount] | This attribute is the amount that the property should charge the guest if the guest cancelled before the deadline. Amount attribute will always be 100 incase of grace_period and means that cancellation is free of charge within the specified deadline | Integer | 1..1 | ### Add cancellation policy details (res_cancel_policy_details) **Note:** You should implement feature "add cancellation policy" first. This feature add cancellation policy timeline including: 1- Start and end of cancellation policy periods. ex: from date x to date y if guest cancelled he will be charged z amount 2- The exact amount that the guest should be charged if he cancelled the reservation ```xml ``` | FIELD | DESCRIPTION | TYPE | OCCURRENCES | |-------|-------------|------|-------------| | CancelPenalties | This is the parent element for all cancel penality policies | object | 1..1 | | CancelPenalty | - | object | 0..* | | CancelPenalty[@PolicyCode] | Cancellation [policy code][policy_code]. It will either has the policy code for the room reservation rate which is an integer or "grace_period" for the grace period policy if applies | string | 1..1 | | CancelPenalty[@From] | Starting time of this policy | datetime with the timezone | 0..1 | | CancelPenalty[@Until] | End time of this policy. When their is no Until time specified and it is not a grace_period. Then this policy applies until forever | datetime with the timezone | 0..1 | | AmountPercent | This element will how much the property should charge the guest, if the guest cancelled before the deadline | object | 0..1 | | AmountPercent[@Amount] | This attribute is the amount that the property should charge the guest if the guest cancelled before the deadline. Amount attribute will always be 100 incase of grace_period and means that cancellation is free of charge within the specified deadline | Integer | 1..1 | | AmountPercent[@DecimalPlaces] | Decimal places for the amount | Integer | 0..1 | | AmountPercent[@CurrencyCode] | Currency code for the amount | string | 0..1 | ### Error codes You may receive errors in the response from Booking.com. Below a list of OTA error codes that can occur. | OTA Error Code | Description | |----------------|--------------------------------------------------------------------| | 367 | Not processed. Invalid value or incorrect combination of tags | | 321 | Missing element | ### Error responses: Example for invalid hotel_ids: HTTP/1.1 403 Forbidden ```xml ``` Example for reservation ID not found: HTTP/1.1 404 Not Found ```xml ``` Example for 400 errors: HTTP/1.1 400 Bad Request ```xml ``` [glossary-independent-property]: /connectivity/docs/glossary_of_terms.md#independent-property [policy_code]: /connectivity/docs/codes-bccp.md