Skip to main content

Booking Notification

During the booking process, we'll send you a HotelResNotif request message to share reservation details. You just need to check and let us know the reservation status. After that, Travelgate will handle the response from your system, moving forward with the reservation and updating you on the status.

tip

If you have the booking locator, include it in the HotelResNotif response, this way we'll include it in our response.

Keep in mind that if there's an issue with the reservation in your system, we'll consider it as not successful (NOK) and let you know with an error message.

HotelResNotif Request​

<OTA_HotelResRS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ResResponseType="Committed" xmlns="http://www.opentravel.org/OTA/2003/05">
<POS>
<Source>
<RequestorID ID="Seller Code" />
<BookingChannel>
<CompanyName Code="Buyer Code" />
</BookingChannel>
</Source>
</POS>
<HotelReservations>
<HotelReservation CreateDateTime="2023-11-22T13:30:07.8054362Z" ResStatus="Confirmed">
<RoomStays>
<RoomStay>
<RoomTypes>
<RoomType RoomTypeCode="STD2" RoomID="47915">
<RoomDescription>
<Text>Standard</Text>
</RoomDescription>
</RoomType>
</RoomTypes>
<RatePlans>
<RatePlan RatePlanCode="BAR" RatePlanType="11" PriceViewableInd="false" QualificationType="25">
<RatePlanDescription>
<Text>Test rate</Text>
</RatePlanDescription>
<Commission Percent="15" />
<Guarantee PaymentCode="MerchantPayment" />
<AdditionalDetails>
<AdditionalDetail Code="code" Type="39">
<DetailDescription>
<Text>Negotiated</Text>
</DetailDescription>
</AdditionalDetail>
</AdditionalDetails>
<Fees>
<AmendFees>
<AmendFee Amount="13" CurrencyCode="EUR" ChargeUnit="2" />
</AmendFees>
</Fees>
</RatePlan>
</RatePlans>
<RoomRates>
<RoomRate BookingCode="1|30#30|2|2023-12-20|2|5948716|5948717|14|11|0" EffectiveDate="2023-12-20" ExpireDate="2023-12-22" RoomTypeCode="STD2" InvBlockCode="14" NumberOfUnits="999" RatePlanCode="BAR" RoomID="47915">
<Rates>
<Rate EffectiveDate="2023-12-20" ExpireDate="2023-12-21">
<Base AmountBeforeTax="100.0" AmountAfterTax="100.0" CurrencyCode="EUR" Type="25" />
<CancelPolicies>
<CancelPenalty PolicyCode="3ca19e3e-da3b-42fd-90c3-d6d428ab5d89" />
<CancelPenalty PolicyCode="2c846cc7-648d-4046-8ea6-5acd4f9d7fa3" />
<CancelPenalty PolicyCode="ed89264a-9a3b-4532-b61f-452f754add29" />
</CancelPolicies>
</Rate>
<Rate EffectiveDate="2023-12-21" ExpireDate="2023-12-22">
<Base AmountBeforeTax="100.0" AmountAfterTax="100.0" CurrencyCode="EUR" Type="25" />
</Rate>
</Rates>
<Total AmountBeforeTax="200.0" AmountAfterTax="200.0" CurrencyCode="EUR">
<Taxes>
<Tax Code="" Amount="80" Type="Exclusive" />
</Taxes>
</Total>
<Features>
<Feature>
<Description>
<Text>MYROOM2</Text>
</Description>
</Feature>
</Features>
</RoomRate>
</RoomRates>
<CancelPenalties>
<CancelPenalty PolicyCode="3ca19e3e-da3b-42fd-90c3-d6d428ab5d89" NonRefundable="false">
<Deadline AbsoluteDeadline="2023-11-30" OffsetTimeUnit="Day" OffsetUnitMultiplier="20" OffsetDropTime="BeforeArrival" />
<AmountPercent NmbrOfNights="3" CurrencyCode="EUR" />
</CancelPenalty>
</CancelPenalties>
<BasicPropertyInfo HotelCode="2" HotelName="Hotel Test Pruebas Travelgate 2" />
<ServiceRPHs>
<ServiceRPH RPH="1" />
<ServiceRPH RPH="2" />
</ServiceRPHs>
</RoomStay>
</RoomStays>
<ResGuests>
<ResGuest ResGuestRPH="1" AgeQualifyingCode="10">
<Profiles>
<ProfileInfo>
<Profile>
<Customer>
<PersonName>
<NamePrefix>Mr</NamePrefix>
<GivenName>Name</GivenName>
<Surname>Surname</Surname>
</PersonName>
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
<GuestCounts>
<GuestCount Age="30" />
</GuestCounts>
</ResGuest>
<ResGuest ResGuestRPH="2" AgeQualifyingCode="10">
<Profiles>
<ProfileInfo>
<Profile>
<Customer>
<PersonName>
<NamePrefix>Mr</NamePrefix>
<GivenName>Name</GivenName>
<Surname>Surname</Surname>
</PersonName>
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
<GuestCounts>
<GuestCount Age="30" />
</GuestCounts>
</ResGuest>
</ResGuests>
<ResGlobalInfo>
<Total AmountBeforeTax="200" AmountAfterTax="200" CurrencyCode="EUR" />
<HotelReservationIDs>
<HotelReservationID ResID_Value="test_doc_1" ResID_SourceContext="Client" />
<HotelReservationID ResID_Value="2706797" ResID_SourceContext="Internal" />
<HotelReservationID ResID_Value="" ResID_SourceContext="Provider" />
</HotelReservationIDs>
<Profiles>
<ProfileInfo>
<Profile>
<Customer>
<PersonName>
<NamePrefix>Mr</NamePrefix>
<GivenName>Name</GivenName>
<Surname>Surname</Surname>
</PersonName>
<Telephone PhoneTechType="1" PhoneNumber="02087074461" />
<Email EmailType="1">name@email.com</Email>
<Address Type="1">
<AddressLine>Nice Address Line</AddressLine>
<CityName>Good City</CityName>
<PostalCode>078745</PostalCode>
<CountryName>ES</CountryName>
</Address>
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
</ResGlobalInfo>
</HotelReservation>
</HotelReservations>
<Success />
</OTA_HotelResRS>

Request Headers​

Our system sends HotelResNotif and CancelNotif messages without SOAP envelop, directly the OTA_HotelResRS, as POST request with the following headers.

Content Type: Content-Type header provides information about the actual content type of the returned content. In this case, the header is set to:

Content-Type: text/xml;charset=UTF-8

Authentication:

Authorization: Basic xxxxxxxxxxxxxxxxx

Request Data Breakdown​

ElementRelTypeDescription
OTA_HotelResRS1Root Node.
OTA_HotelResRS/HotelReservations0..1Node containing the reservation.
HotelReservations/HotelReservation1Node containing information about the reservation.
@CreateDateTime1DateTimeDate and time when the reservation was made.
@ResStatus1StringStatus of the reservation. The possible status value is: β€˜Confirmed’
HotelReservation/RoomStays1Node containing the RoomStays of the reservation.
RoomStays/RoomStay1..nNode containing RoomStay information.
RoomStay/RoomTypes1Node containing information about rooms.
RoomTypes/RoomType1Node containing information about one room.
@RoomTypeCode1StringRoom code.
@RoomID1StringId of the room.
RoomType/RoomDescription1Node containing the description of the room.
RoomDescription/Text1StringDescription of the room.
RoomStay/RatePlans1Node containing information about RatePlans.
RatePlans/RatePlan1Node containing information about one RatePlan.
@RatePlanCode1RatePlan code.
@RatePlanTypeString
Rate Rule Codes
Code Description
0 No selected
7 Large Family
8 Public Servant
10 Negotiated
11 Package
34 Canary Resident
35 Balearic Resident
36 Honeymoon
@PriceViewableIndBoolean
@QualificationTypeString
RatePlan/RatePlanDescription1Node containing information the RatePlan description one RatePlan.
RatePlanDescription/Text1StringDescription of the RatePlan.
RatePlan/Commission1Node containing the commission of the RatePlan.
@Percent1DecimalCommission of the RatePlane.
RatePlan/Guarantee0..1Node containing the Guarantee provided with the reservation.
Guarantee/GuaranteesAccepted0..1Node containing the Guarantee provided with the reservation.
GuaranteesAccepted/GuaranteeAccepted1Node that contains the booking payment details accepted.
GuaranteeAccepted/PaymentCard1Node that contains the credit card accepted. The credit card information can be a URL with the information(in TPA_Extension tag) or the details in the PaymentCard tags and attributes.
@CardCode1String
Credit Card codes
Code Name
VI Visa
AX American Express
BC BC Card
CA MasterCard
CB Carte Blanche
CU China Union Pay
DS Discover
DC Diners Club
T Carta Si
R Carte Bleue
N Dankort
L Delta
E Electron
JC Japan Credit Bureau
TO Maestro
S Switch
EC Electronic Cash
EU EuroCard
TP Universal air travel card
OP optima
ER Air Canada/RnRoute
XS access
O others
@ExpireDate0..1StringThis is the expiry date of the credit card used for deposit/prepayment. Format MMyy.
PaymentCard/CardHolderName0..1StringPaymentCard / CardHolderName.
PaymentCard/CardNumber0..1
CardNumber/PlainText0..1StringThis is actual number of the credit card used for deposit/prepayment.
PaymentCard/SeriesCode0..1
SeriesCode/PlainText0..1StringThe SeriesCode attribute is used (Optionally) for the security number of the card.
PaymentCard/TPA_Extensions0..1Optional, contains credit card URL.
Param1
@key1StringURL.
@value1StringURL where the Credit card details are stored.
RatePlan/AdditionalDetails0..1
AdditionalDetails/AdditionalDetail0..n
@Code1StringClient code for whom the rate is offered.
@Type1StringContract/negotiated booking information, allowed only for 39.
AdditionalDetail/DetailDescription1
DetailDescription/Text1StringIf the additional details type is 39, the name of the client for whom the rate is offered will be sent as text.
RoomStay/RoomRates1Node containing information about RoomRates.
RoomRates/RoomRate1Node containing information about one RoomRate.
@BookingCode1Booking Code.
@EffectiveDate1DateEffective date when the RoomRate start applying.
@ExpireDate1DateExpire date when the RoomRate ends applying. Check out night minus 1.
@RoomTypeCode1StringCode of the Room.
@InvBlockCode1StringInventary block code.
@NumberOfUnits1String
@RatePlanCode1StringCode of the RatePlan.
@RoomID1StringRoom ID.
RoomRate/Rates1Node containing information about the rates.
Rates/Rate1Node containing information about one rate.
@EffectiveDate1DateEffective date when the Rate start applying.
@ExpireDate1DateExpire date when the Rate ends applying.
Rate/Base1Node containing core information about the rate.
@AmountBeforeTax0..1DecimalAmount before tax of the rate.
@AmountAfterTax1DecimalAmount after tax of the rate.
@CurrencyCode1StringCurrency code of the rate.
@Type1String
Rate/CancelPolicies1Node containing information about cancel policies which are applied to the rate.
CancelPolicies/CancelPenalty0..nNode containing information about one cancel penalty.
@PolicyCode1StringPolicy code of the cancel penalty.
RoomRate/Total1Node containing information about the total price of the RoomRate.
@AmountBeforeTax0..1DecimalAmount before tax of the RoomRate.
@AmountAfterTax1DecimalAmount after tax of the RoomRate.
@CurrencyCode1StringCurrency code of the RoomRate.
@Type1String
RoomStay/CancelPenalties1Node containing all cancel penalties of the RoomStay.
CancelPenalties/CancelPenalty0..nNode containing information about one cancel penalty.
@PolicyCode1StringPolicy code of the cancel penalty.
@NonRefundable1BooleanIndicates whether the Rate is refundable or not.
CancelPenalty/Deadline0..nNode containing information about the deadline of the cancel penalty.
@AbsoluteDeadline1DateTimeIndicates when the absolute deadline.
@OffsetTimeUnit1StringTime unit of the offset for the absolute deadline.
@OffsetUnitMultiplier1IntegerNumber of time units of offset for the absolute ege deadline.
@OffsetDropTime1StringIndicates when the deadline is applied.
CancelPenalty/AmountPercent0..nAmount of the cancel penalty.
@Percent1StringPercent of the total charged as a cancel penalty amount. Percent or NmbrOfNights must be present.
@NmbrOfNights1StringNumber of nights charged as a cancel penalty amount.
@CurrencyCode1StringCurrency code of the cancel penalty amount.
RoomStay/BasicPropertyInfo1Node containing basic information of the property.
@HotelCode1IntegerHotel code.
@HotelName1StringHotel name.
RoomStay/ServiceRPHs1Node containing information of the guests of the room.
ServiceRPHs/ServiceRPH1..nNode containing information of a guest of the room.
@RPH1StringCode of a guest of the room. Match with @ResGuestRPH at the ResGuests node.
RoomStay/Comments0..1Node containing information of the customer comments.
Comments/Comment1..nStringCustomer comment text
Comment/Text1Node containing information about one customer comment
HotelReservation/ResGuests1Node containing all reservation guests.
ResGuests/ResGuest1..nNode containing information about one of the guests.
@ResGuestRPH1IntegerRPH of the guest.
@AgeQualifyingCode1IntegerAge qualifying code of the guest.
ResGuest/Profiles1Node containing information about the profiles of the guest.
Profiles/ProfileInfo1Node containing information about the profile of the guest.
ProfileInfo/Customer1Node containing customer information of the guest.
Customer/PersonName1Node containing the person name of the guest.
PersonName/NamePrefix1StringPrefix/Traitement name of the guest.
PersonName/GivenName1StringGiven name of the guest.
PersonName/Surname1StringSurname of the guest.
ResGuest/GuestCounts1Node containing quantity informations for the guest.
GuestCounts/GuestCount1Node containing quantity information for the guest.
@Age1IntegerAge of the guest.
HotelReservation/ResGlobalInfo1Node containing general information about the reservation.
ResGlobalInfo/Total1Node containing the total price.
@AmountBeforeTax0..1DecimalAmount before tax of the Reservation.
@AmountAfterTax1DecimalAmount after tax of the Reservation.
@CurrencyCode1StringCurrency code of the Reservation.
ResGlobalInfo/HotelReservationIDs1Node containing the ids of the reservation.
HotelReservationIDs/HotelReservationID2Node containing information of one reservation id.
@ResIDValue1StringValue of the id.
@ResIDSourceContext1StringId context.
ResGlobalInfo/Profiles1Node containing information about the profiles of the reservation.
Profiles/ProfileInfo1Node containing information about the profile of the reservation.
ProfileInfo/Profile1Node containing information about the profile of the reservation.
Profile/Customer1Node containing information about the customer of the reservation. The customer of the reservation can be or not a pax of the reservation. If it’s a pax will be present in ResGuests node.
Customer/PersonName1Node containing the person name of the customer of the reservation.
PersonName/NamePrefix1StringName prefix of the customer.
PersonName/GivenName1StringGiven name of the customer.
PersonName/Surname1StringSurname of the customer.
Customer/Telephone1Node containing information about the telephone of the customer.
@PhoneTechType1StringPhone technology type.
@PhoneNumber1StringPhone number.
Customer/Email1Node containing information about the email of the customer.
@EmailType1StringEmail of the customer.
Customer/Address1Node containing information about the address of the customer.
@Type1
Address/AddressLine1StringAddress of the customer.
Address/CityName1StringCity name.
Address/PostalCode1StringPostal code.
Address/CountryName1StringCountry name.
OTA_HotelResRS/Success0..1Should only be present if it was a successful response. The Errors node should not be present if the Success node is present.

HotelResNotif Response​

After each request, a response should be provided from yours side. If a HotelResNotif request is received, a corresponding HotelResNotif response should be sent. There are two response options, success or error.

<OTA_HotelResNotifRS xmlns = "http://www.opentravel.org/OTA/2003/05" Timestamp = "2018-09-12T23:09:08+03:00">
<HotelReservations>
<HotelReservation ResStatus = "Confirmed">
<ResGlobalInfo>
<HotelReservationIDs>
<HotelReservationID ResID_Value = "**providerLocator**" ResID_SourceContext = "Provider"/>
</HotelReservationIDs>
</ResGlobalInfo>
</HotelReservation>
</HotelReservations>
<Success/>
/OTA_HotelResNotifRS>

Response Data Breakdown​

ElementRelTypeDescription
OTA_HotelResNotifRS1
OTA_HotelResNotifRS/HotelReservations0..1If SUCCESS
HotelReservations/HotelReservation1
@ResStatus1Status of the reservation. The possible status value is: Confirmed
HotelReservation/ResGlobalInfo1
ResGlobalInfo/HotelReservationIDs1
HotelReservationIDs/HotelReservationID1
@ResID_Value1Provider Locator
@ResID_SourceContext1Provider
HotelRatePlanInventoryNotifResult/Success1
OTA_HotelResNotifRS/Errors0..1If ERROR
Errors/Error1
@ShortText1String
Error Codes and Description
Error Code Error Description
-1 Unexpected error
1 Validation error
10 HotelCode not found
11 Invalid dates
14 Invalid derived rate
22 Rooms not found
23 Rates not found
30 Occupancy error
31 RatePlan_Rate Error
38 POS credentials not found
50 Confirmation error
60 Cancellation error
@Code1String
Error Codes and Description
Error Code Error Description
-1 Unexpected error
1 Validation error
10 HotelCode not found
11 Invalid dates
14 Invalid derived rate
22 Rooms not found
23 Rates not found
30 Occupancy error
31 RatePlan_Rate Error
38 POS credentials not found
50 Confirmation error
60 Cancellation error