Rates
The HotelRatePlanNotif
message contains information about rate prices and supplements. No rate information will be returned except code, currency and status.
As explained before, Channel-X extracts the product loaded between the Buyer (inventory) and the Channel Managers (availability and rates) into our Inventory tool and sends it to the Buyer's system, to your system. So, in this case, Travelgate will send HotelRatePlanNotif
requests to your system, and you will respond with either success or error.
HotelRatePlanNotif Requestโ
In the following examples, you will observe the requests that Travelgate will send you. All the examples presented here are Deltas (smaller product requests).
If you want to explore all possible scenarios of information that may come your way, head over to More Request Examples section; there you will find Full Copys (full product details requests) examples.
Note that our system works with up to 3 types of prices: per room, per standard occupancy, and per occupancy. To learn how to calculate the price for each case, go to Price Use Cases.
- Price per Room
- Price per Standard Occupancy
- Price per Occupancy
- Derived RatePlan
<s:Envelope xmlns:s = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:u = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<o:Security s:mustUnderstand = "1" xmlns:o = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<o:UsernameToken u:Id = "uuid-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-x">
<o:Username>username</o:Username>
<o:Password Type = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</o:Password>
</o:UsernameToken>
</o:Security>
</s:Header>
<s:Body xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<HotelRatePlanNotif xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmltravelgate.com/hubpush/provider/2012/10">
<request>
<POS xmlns="http://www.opentravel.org/OTA/2003/05">
<Source>
<RequestorID ID="Seller Code" />
<BookingChannel>
<CompanyName Code="Buyer Code" />
</BookingChannel>
</Source>
</POS>
<RatePlans HotelCode="2" xmlns="http://www.opentravel.org/OTA/2003/05">
<RatePlan CurrencyCode="EUR" RatePlanCode="BAR" RateReturn="false" FreeChild="false" FreeBaby="false" RatePlanStatusType="Active">
<Rates>
<Rate Start="2024-01-01" End="2024-01-01">
<BaseByGuestAmts>
<BaseByGuestAmt AmountAfterTax="100" Type="25" />
</BaseByGuestAmts>
</Rate>
</Rates>
<SellableProducts>
<SellableProduct InvCode="SNG" InvType="ROOM" />
</SellableProducts>
</RatePlan>
<RatePlan CurrencyCode="EUR" RatePlanCode="BAR" RateReturn="false" FreeChild="false" FreeBaby="false" RatePlanStatusType="Active">
<Rates>
<Rate Start="2024-01-02" End="2024-01-02">
<BaseByGuestAmts>
<BaseByGuestAmt AmountAfterTax="100" Type="25" />
</BaseByGuestAmts>
</Rate>
</Rates>
<Supplements>
<Supplement AgeQualifyingCode="10" Amount="10" Start="2024-01-02" End="2024-01-02" SupplementType="Board" InvCode="19" />
<Supplement AgeQualifyingCode="8" Amount="5" Start="2024-01-02" End="2024-01-02" SupplementType="Board" InvCode="19" />
<Supplement AgeQualifyingCode="7" Amount="0" Start="2024-01-02" End="2024-01-02" SupplementType="Board" InvCode="19" />
</Supplements>
<SellableProducts>
<SellableProduct InvCode="SNG" InvType="ROOM" />
</SellableProducts>
</RatePlan>
</RatePlans>
</request>
</HotelRatePlanNotif>
</s:Body>
</s:Envelope>
<s:Envelope xmlns:s = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:u = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<o:Security s:mustUnderstand = "1" xmlns:o = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<o:UsernameToken u:Id = "uuid-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-x">
<o:Username>username</o:Username>
<o:Password Type = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</o:Password>
</o:UsernameToken>
</o:Security>
</s:Header>
<s:Body xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<HotelRatePlanNotif xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmltravelgate.com/hubpush/provider/2012/10">
<request>
<POS xmlns="http://www.opentravel.org/OTA/2003/05">
<Source>
<RequestorID ID="Seller Code" />
<BookingChannel>
<CompanyName Code="Buyer Code" />
</BookingChannel>
</Source>
</POS>
<RatePlans HotelCode="2" xmlns="http://www.opentravel.org/OTA/2003/05">
<RatePlan CurrencyCode="EUR" RatePlanCode="BAR" RateReturn="false" FreeChild="false" FreeBaby="false" RatePlanStatusType="Active">
<Rates>
<Rate Start="2024-02-01" End="2024-02-01">
<BaseByGuestAmts>
<BaseByGuestAmt AmountAfterTax="45" NumberOfGuests="1" />
<BaseByGuestAmt AmountAfterTax="50" NumberOfGuests="2" />
</BaseByGuestAmts>
</Rate>
</Rates>
<SellableProducts>
<SellableProduct InvCode="DRT1" InvType="ROOM" />
</SellableProducts>
</RatePlan>
<RatePlan CurrencyCode="EUR" RatePlanCode="BAR" RateReturn="false" FreeChild="false" FreeBaby="false" RatePlanStatusType="Active">
<Rates>
<Rate Start="2024-02-02" End="2024-02-02">
<BaseByGuestAmts>
<BaseByGuestAmt AmountAfterTax="50" NumberOfGuests="2" />
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests="1" AgeQualifyingCode="10" Type="Exclusive" Amount="30" />
</AdditionalGuestAmounts>
</Rate>
</Rates>
<SellableProducts>
<SellableProduct InvCode="DRT1" InvType="ROOM" />
</SellableProducts>
</RatePlan>
<RatePlan CurrencyCode="EUR" RatePlanCode="BAR" RateReturn="false" FreeChild="false" FreeBaby="false" RatePlanStatusType="Active">
<Rates>
<Rate Start="2024-02-03" End="2024-02-03">
<BaseByGuestAmts>
<BaseByGuestAmt AmountAfterTax="50" NumberOfGuests="2" />
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests="1" AgeQualifyingCode="10" Type="Exclusive" Amount="30" />
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="10" Type="Exclusive" Amount="-10" />
</AdditionalGuestAmounts>
</Rate>
</Rates>
<SellableProducts>
<SellableProduct InvCode="DRT1" InvType="ROOM" />
</SellableProducts>
</RatePlan>
</RatePlans>
</request>
</HotelRatePlanNotif>
</s:Body>
</s:Envelope>
<s:Envelope xmlns:s = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:u = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<o:Security s:mustUnderstand = "1" xmlns:o = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<o:UsernameToken u:Id = "uuid-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-x">
<o:Username>username</o:Username>
<o:Password Type = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</o:Password>
</o:UsernameToken>
</o:Security>
</s:Header>
<s:Body xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<HotelRatePlanNotif xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmltravelgate.com/hubpush/provider/2012/10">
<request>
<POS xmlns="http://www.opentravel.org/OTA/2003/05">
<Source>
<RequestorID ID="Seller Code" />
<BookingChannel>
<CompanyName Code="Buyer Code" />
</BookingChannel>
</Source>
</POS>
<RatePlans HotelCode="2" xmlns="http://www.opentravel.org/OTA/2003/05">
<RatePlan CurrencyCode="EUR" RatePlanCode="BAR" RateReturn="false" FreeChild="false" FreeBaby="false" RatePlanStatusType="Active">
<Rates>
<Rate Start="2024-02-18" End="2024-02-18">
<BaseByGuestAmts>
<BaseByGuestAmt AmountAfterTax="20" Type="14" Code="1-0-0" />
<BaseByGuestAmt AmountAfterTax="30" Type="14" Code="1-1-1" />
<BaseByGuestAmt AmountAfterTax="50" Type="14" Code="2-0-0" />
<BaseByGuestAmt AmountAfterTax="75" Type="14" Code="2-0-1" />
<BaseByGuestAmt AmountAfterTax="90" Type="14" Code="3-0-0" />
</BaseByGuestAmts>
</Rate>
</Rates>
<SellableProducts>
<SellableProduct InvCode="AMIGO ROOM" InvType="ROOM" />
</SellableProducts>
</RatePlan>
<RatePlan CurrencyCode="EUR" RatePlanCode="BAR" RateReturn="false" FreeChild="false" FreeBaby="false" RatePlanStatusType="Active">
<Rates>
<Rate Start="2024-02-21" End="2024-02-21">
<BaseByGuestAmts>
<BaseByGuestAmt AmountAfterTax="20" Type="14" Code="1-0-0" />
<BaseByGuestAmt AmountAfterTax="25" Type="14" Code="1-1-0" />
<BaseByGuestAmt AmountAfterTax="50" Type="14" Code="2-0-0" />
<BaseByGuestAmt AmountAfterTax="55" Type="14" Code="2-0-1" />
</BaseByGuestAmts>
</Rate>
</Rates>
<SellableProducts>
<SellableProduct InvCode="AMIGO ROOM" InvType="ROOM" />
</SellableProducts>
</RatePlan>
</RatePlans>
</request>
</HotelRatePlanNotif>
</s:Body>
</s:Envelope>
<s:Envelope xmlns:s = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:u = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<o:Security s:mustUnderstand = "1" xmlns:o = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<o:UsernameToken u:Id = "uuid-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-x">
<o:Username>username</o:Username>
<o:Password Type = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</o:Password>
</o:UsernameToken>
</o:Security>
</s:Header>
<s:Body xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<HotelRatePlanNotif xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmltravelgate.com/hubpush/provider/2012/10">
<request>
<POS xmlns="http://www.opentravel.org/OTA/2003/05">
<Source>
<RequestorID ID="Seller Code" />
<BookingChannel>
<CompanyName Code="Buyer Code" />
</BookingChannel>
</Source>
</POS>
<RatePlans HotelCode="2" xmlns="http://www.opentravel.org/OTA/2003/05">
<RatePlan RatePlanCode="BDER" RateReturn="false" FreeChild="false" FreeBaby="false" RatePlanStatusType="Active" BaseRatePlanCode="BAR">
<Rates>
<Rate Start="2023-11-08" End="2023-11-08" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-09" End="2023-11-09" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-10" End="2023-11-10" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-11" End="2023-11-11" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-12" End="2023-11-12" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-13" End="2023-11-13" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-14" End="2023-11-14" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-15" End="2023-11-15" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-16" End="2023-11-16" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-17" End="2023-11-17" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-18" End="2023-11-18" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-19" End="2023-11-19" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-20" End="2023-11-20" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-21" End="2023-11-21" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-22" End="2023-11-22" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-23" End="2023-11-23" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-24" End="2023-11-24" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-25" End="2023-11-25" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-26" End="2023-11-26" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-27" End="2023-11-27" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-28" End="2023-11-28" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-29" End="2023-11-29" AdjustedPercentage="15" AdjustUpIndicator="false" />
<Rate Start="2023-11-30" End="2023-11-30" AdjustedPercentage="15" AdjustUpIndicator="false" />
</Rates>
</RatePlan>
</RatePlans>
</request>
</HotelRatePlanNotif>
</s:Body>
</s:Envelope>
Request Data Breakdownโ
Element | Rel | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
HotelRatePlanNotif | 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HotelRatePlanNotif/request | 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
request/RatePlans | 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@HotelCode | 1 | String | Hotel code | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RatePlans/RatePlan | 1..n | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@RatePlanCode | 1 | String | Rate plan code | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@FreeChild | 1 | Boolean | Indicates if childern are free with this rate plan. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@FreeBaby | 1 | Boolean | Indicates if babies are free with this rate plan. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@RatePlanStatusType | 0..1 | String | Active or Deactivated | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@BaseRatePlanCode | 0..1 | String | Rate code of the base rate plan. This field is exclusively used for Derivated rates. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@CurrencyCode | 0..1 | String | ISO Currency. This field is exclusively used for Basic Rates. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RatePlan/Rates | 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rates/Rate | 1..n | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@Start | 1 | Date | Start date of the rate. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@End | 1 | Date | End date of the rate. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@AdjustedPercentage | 0..1 | Decimal | The percentage that needs to be added to the base rate plan in order to calculate the price of the derived rate plan. This field is exclusively used for Derivated Rates. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@AdjustedAmount | 0..1 | Decimal | The amount that needs to be added to the base rate plan in order to calculate the price of the derived rate plan. This field is exclusively used for Derivated Rates. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@AdjustUpIndicator | 0..1 | Boolean | If true, the adjusted amount or percentage is added to the base rate plan's specified amount to calculate the derived rate amount. If false, the adjusted amount or percentage is subtracted from the base rate plan's specified amount to calculate the derived rate plan amount. This field is exclusively used for Derivated Rates. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rate/BaseByGuestAmts | 0..1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BaseByGuestAmts/BaseByGuestAmt | 1..n | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@AmountAfterTax | 1 | Decimal | Total amount for the @NumberOfGuests indicated per day. This amount doesnโt include tax. When value is -1, price should be deleted from the system. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@NumberOfGuests | 0..1 | Integer | PRICE PER PAX. The maximum @NumberOfGuests is the standard occupancy of the room. If @NumberOfGuests is not provided, then @Type must be specified. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@Type | 0..1 | Integer | @Type 25 PRICE PER ROOM; @Type 14 PRICE PER OCCUPANCY (In the case of 14 , @Code is mandatory and AdditionalGuestAmounts are not allowed). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@Code | 0..1 | String | Room scenario codes (adult-child-baby). Mandatory if @Type '14' PRICE PER ROOM. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rate/AdditionalGuestAmounts | 0..1 | This field is exclusively used for Basic Rates. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AdditionalGuestAmounts/AdditionalGuestAmount | 1..n | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@MaxAdditionalGuests | 1 | Integer | Number of the additional pax. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@AgeQualifyingCode | 1 | Integer | Age Qualifying Codes
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@Type | 0..1 | String | Exclusive, if present price is absolute and price tag is @Amount | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@Amount | 0..1 | Decimal | Price for each additional pax. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@Percent | 0..1 | Decimal | Percent for each additional pax. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RatePlan/Supplements | 0..1 | Present if supplements by board exists. This field is exclusively used for Basic Rates. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Supplements/Supplement | 1..n | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@Start | 1 | Date | Start date of the supplement. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@End | 1 | Date | End date of the supplement. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@AgeQualifyingCode | 0..1 | Integer | Age Qualifying Codes
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@ChargeTypeCode | 0..1 | String | Occupancy supplement board. Only allowed if charging supplement board by occupancy. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@Amount | 1 | Decimal | Amount of the supplement. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@SupplementType | 1 | String | Board | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@InvCode | 1 | String | Meal Plan codes
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RatePlan/SellableProducts | 0..1 | This field is exclusively used for Basic Rates. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SellableProducts/SellableProduct | 1..n | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@InvCode | 1 | Integer | Room code | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@InvType | 1 | Integer | ROOM |
More Request Examplesโ
Download the following requests to explore all possible scenarios of information that may come your way.
๐Price per Room
๐Price per Standard Occupancy
๐Price per Occupancy
๐Derived Rate
Price Use Casesโ
Our system works with up to 3 types of prices: per room, per standard occupancy and per occupancy. Although it is unusual that a Channel Manager works with more than one, it can happen. If this is the case, the 3 price types can coexist and the system should always return the lowest one at availability response. Also when more than one price is charged for the same day, the newest price will be returned as available price.
Price per Roomโ
When a price is charged per Room, it means that all occupancies allowed in the room will have the same price. If an AdditionalGuestAmount
is charged for occupancies exceeding the standard occupancy, it will be applied.
Sample scenarios for "Price per Room" price calculations.
Standard occupancy: 2
Room scenarios (adult-child-baby):
- 1-0-0
- 2-0-0
- 1-1-0
Message:
<BaseByGuestAmts>
<BaseByGuestAmt Type = "25" AmountAfterTax="100.00"/>
</BaseByGuestAmts>
Price:
Occupancy | Price |
---|---|
1-0-0 | 100 |
2-0-0 | 100 |
1-1-0 | 100 |
Standard occupancy: 2
Room scenarios (adult-child-baby):
- 1-0-0
- 2-0-0
- 3-0-0
- 1-1-0
- 3-1-0
Message:
<BaseByGuestAmts>
<BaseByGuestAmt Type = "25" AmountAfterTax="100.00"/>
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests = "1" Amount = "20.00" AgeQualifyingCode = "10" />
<AdditionalGuestAmount MaxAdditionalGuests = "1" Amount = "10.00" AgeQualifyingCode = "8" Type="Exclusive"/>
</AdditionalGuestAmounts>
Price:
Occupancy | Price |
---|---|
1-0-0 | 100 |
2-0-0 | 100 |
3-0-0 | 100 + (100โ2 + 20) = 170 |
1-1-0 | 100 |
3-1-0 | 100 + (100โ2 + 20) + 10 = 180 |
Standard occupancy: 3
Room scenarios (adult-child-baby):
- 1-0-0
- 2-0-0
- 3-0-0
- 4-0-0
Message:
<BaseByGuestAmts>
<BaseByGuestAmt Type = "25" AmountAfterTax="120.00"/>
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests = "1" Amount = "20.00" AgeQualifyingCode = "10" />
</AdditionalGuestAmounts>
Price:
Occupancy | Price |
---|---|
1-0-0 | 120 |
2-0-0 | 120 |
3-0-0 | 120 |
4-0-0 | 120 + (120โ3 + 20) = 180 |
Price per Standard Occupancy (Pax/Guest)โ
When a price is charged per Pax means, it means that the price is based on the specified number of guests. If the NumberOfGuests
is equal to or below the standard occupancy, the returned price must be the same as the charged price. If the NumberOfGuests
exceeds the standard occupancy, the price is calculated based on the standard occupancy price and the AdditionalGuestAmount
charged.
Sample scenarios for "Price per Standard Occupancy (Pax/Guest)" price calculations.
Standard occupancy: 2
Room scenarios (adult-child-baby):
- 1-0-0
- 2-0-0
Message:
<BaseByGuestAmts>
<BaseByGuestAmt NumberOfGuests = "2" AmountAfterTax="100.00"/>
</BaseByGuestAmts>
Price:
Occupancy | Price |
---|---|
1-0-0 | ร |
2-0-0 | 2*(100โ2) = 100 |
Standard occupancy: 2
Room scenarios (adult-child-baby):
- 1-0-0
- 2-0-0
Message:
<BaseByGuestAmts>
<BaseByGuestAmt NumberOfGuests = "1" AmountAfterTax="100.00"/>
<BaseByGuestAmt NumberOfGuests = "2" AmountAfterTax="130.00"/>
</BaseByGuestAmts>
Price:
Occupancy | Price |
---|---|
1-0-0 | 100 |
2-0-0 | 2*(130โ2) = 130 |
Standard occupancy: 2
Room scenarios (adult-child-baby):
- 1-0-0
- 2-0-0
- 3-0-0
Message:
<BaseByGuestAmts>
<BaseByGuestAmt NumberOfGuests = "2" AmountAfterTax="100.00"/>
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests = "1" Amount = "40.00" AgeQualifyingCode = "10"/>
</AdditionalGuestAmounts>
Price:
Occupancy | Price |
---|---|
1-0-0 | ร |
2-0-0 | 2*(100โ2) = 100 |
3-0-0 | (100โ2) + (100โ2) + ((100โ2) + 40) = 190 |
Standard occupancy: 2
Room scenarios (adult-child-baby):
- 1-0-0
- 2-0-0
- 3-0-0
Message:
<BaseByGuestAmts>
<BaseByGuestAmt NumberOfGuests = "2" AmountAfterTax="100.00"/>
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests = "1" Amount = "40.00" AgeQualifyingCode = "10" Type="Exclusive"/>
</AdditionalGuestAmounts>
Price:
Occupancy | Price |
---|---|
1-0-0 | ร |
2-0-0 | 2*(100โ2) = 100 |
3-0-0 | (100โ2) + (100โ2) + 40 = 140 |
Standard occupancy: 2
Room scenarios (adult-child-baby):
- 1-0-0
- 2-0-0
- 1-1-0
Message:
<BaseByGuestAmts>
<BaseByGuestAmt NumberOfGuests = "2" AmountAfterTax="100.00"/>
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests = "1" Amount = "40.00" AgeQualifyingCode = "8" />
</AdditionalGuestAmounts>
Price:
Occupancy | Price |
---|---|
1-0-0 | ร |
2-0-0 | 2*(100โ2) = 100 |
1-1-0 | (100โ2) + ((100โ2) + 40)= 190 |
Standard occupancy: 2
Room scenarios (adult-child-baby):
- 1-0-0
- 2-0-0
- 1-0-1
Message:
<BaseByGuestAmts>
<BaseByGuestAmt NumberOfGuests = "2" AmountAfterTax="100.00"/>
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests = "1" Amount = "40.00" AgeQualifyingCode = "7" Type="Exclusive"/>
</AdditionalGuestAmounts>
Price:
Occupancy | Price |
---|---|
1-0-0 | ร |
2-0-0 | 2*(100โ2) = 100 |
1-0-1 | 2*(100โ2) + 40 = 140 |
Standard occupancy: 2
Room scenarios (adult-child-baby):
- 1-0-0
- 2-0-0
- 2-1-0
Message:
<BaseByGuestAmts>
<BaseByGuestAmt NumberOfGuests = "2" AmountAfterTax="100.00"/>
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests = "1" Amount = "-40.00" AgeQualifyingCode = "8" />
</AdditionalGuestAmounts>
Price:
Occupancy | Price |
---|---|
1-0-0 | ร |
2-0-0 | 2*(100โ2) = 100 |
1-1-0 | 2*(100โ2) + ((100โ2) -40) = 60 |
Standard occupancy: 2
Room scenarios (adult-child-baby):
- 1-0-0
- 2-0-0
- 3-0-0
- 4-0-0
Message:
<BaseByGuestAmts>
<BaseByGuestAmt NumberOfGuests = "2" AmountAfterTax="100.00"/>
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests = "1" Amount = "10.00" AgeQualifyingCode = "10" />
<AdditionalGuestAmount MaxAdditionalGuests = "2" Amount = "-15.00" AgeQualifyingCode = "10" />
</AdditionalGuestAmounts>
Price:
Occupancy | Price |
---|---|
1-0-0 | ร |
2-0-0 | 2*(100โ2) = 100 |
3-0-0 | (100โ2) + (100โ2) + ((100โ2) + 10) = 160 |
4-0-0 | (100โ2) + (100โ2) + ((100โ2) + 10) + ((100โ2) - 15) = 195 |
Standard occupancy: 2
Room scenarios (adult-child-baby):
- 1-0-0
- 2-0-0
- 3-0-0
- 4-0-0
Message:
<BaseByGuestAmts>
<BaseByGuestAmt NumberOfGuests = "2" AmountAfterTax="100.00"/>
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests = "1" Amount = "-10.00" AgeQualifyingCode = "10" />
</AdditionalGuestAmounts>
Price:
Occupancy | Price |
---|---|
1-0-0 | ร |
2-0-0 | 2*(100โ2) = 100 |
3-0-0 | (100โ2) + (100โ2) + ((100โ2) -10) = 140 |
4-0-0 | ร |
Standard occupancy: 3
Room scenarios (adult-child-baby):
- 1-0-0
- 2-0-0
- 3-0-0
- 4-0-0
- 5-0-0
Message:
<BaseByGuestAmts>
<BaseByGuestAmt NumberOfGuests = "3" AmountAfterTax="150.00"/>
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests = "1" Amount = "-10.00" AgeQualifyingCode = "10" />
<AdditionalGuestAmount MaxAdditionalGuests = "2" Amount = "15.00" AgeQualifyingCode = "10" />
</AdditionalGuestAmounts>
Price:
Occupancy | Price |
---|---|
1-0-0 | ร |
2-0-0 | ร |
3-0-0 | 3*(150โ3) = 150 |
4-0-0 | (150โ3) + (150โ3) + (150โ3) + ((150โ3) - 10) = 190 |
5-0-0 | (150โ3) + (150โ3) + (150โ3) + ((150โ3) - 10) + ((150โ3) + 15) = 255 |
Price per Occupancyโ
When a price is charged per Occupancy means that this price will only be available for the specified occupancy. No AdditionalGuestAmount
are applied.
Sample scenarios for "Price per Occupancy" price calculations.
Room scenarios (adult-child-baby):
- 1-0-0
- 2-0-0
- 3-0-0
Message:
<BaseByGuestAmts>
<BaseByGuestAmt Type = "14" AmountAfterTax="100.00" Code = "2-0-0"/>
</BaseByGuestAmts>
Price:
Occupancy | Price |
---|---|
1-0-0 | ร |
2-0-0 | 100 |
3-0-0 | ร |
Room scenarios (adult-child-baby):
- 2-1-0
- 2-0-1
Message:
<BaseByGuestAmts>
<BaseByGuestAmt Type = "14" AmountAfterTax="95.00" Code = "2-1-0"/>
<BaseByGuestAmt Type = "14" AmountAfterTax="80.00" Code = "2-0-1"/>
</BaseByGuestAmts>
Price:
Occupancy | Price |
---|---|
2-1-0 | 95 |
2-0-1 | 80 |
HotelRatePlanNotif Responseโ
After each request, a response should be provided from your side. If a HotelRatePlanNotif
request is received, a corresponding HotelRatePlanNotif
response should be sent. There are two response options, success or error.
Our system has a timeout of 5000ms. If no response occurs within this timeframe, we won't attempt to resend the request. It is recommended that your system processes our requests with an average handling time of 100ms.
- Success
- Error
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:U="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<s:Header>
<wsse:Security>
<U:Timestamp>
<U:Created>2023-11-10T11:16:19.206</U:Created>
<U:Expires>2023-11-10T11:46:19.206</U:Expires>
</U:Timestamp>
</wsse:Security>
</s:Header>
<s:Body>
<HotelRatePlanNotifResponse xmlns="http://schemas.xmltravelgate.com/hubpush/provider/2012/10">
<HotelRatePlanNotifResult Version="0" TransactionIdentifier="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">
<Success xmlns="http://www.opentravel.org/OTA/2003/05" />
</HotelRatePlanNotifResult>
</HotelRatePlanNotifResponse>
</s:Body>
</s:Envelope>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:U="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<s:Header>
<wsse:Security>
<U:Timestamp>
<U:Created>2023-11-10T11:15:37.445</U:Created>
<U:Expires>2023-11-10T11:45:37.445</U:Expires>
</U:Timestamp>
</wsse:Security>
</s:Header>
<s:Body>
<HotelRatePlanNotifResponse xmlns="http://schemas.xmltravelgate.com/hubpush/provider/2012/10">
<HotelRatePlanNotifResult Version="0" TransactionIdentifier="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">
<Errors xmlns="http://www.opentravel.org/OTA/2003/05">
<Error ShortText="Validation error" Code="-1" Language="en"/>
</Errors>
</HotelRatePlanNotifResult>
</HotelRatePlanNotifResponse>
</s:Body>
</s:Envelope>
Response Data Breakdownโ
Element | Rel | Type | Description | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
HotelRatePlanNotifResult | 1 | ||||||||||||||||||||||
@Version | 1 | String | 0 | ||||||||||||||||||||
@TransactionIdentifier | 1 | String | Transaction Identifier | ||||||||||||||||||||
HotelRatePlanNotifResult/Success | 0..1 | If SUCCESS | |||||||||||||||||||||
HotelRatePlanNotifResult/Errors | 0..1 | If ERROR | |||||||||||||||||||||
Errors/Error | 1 | ||||||||||||||||||||||
@ShortText | 1 | String | Error Codes and Description
| ||||||||||||||||||||
@Code | 1 | String | Error Codes and Description
| ||||||||||||||||||||
@Language | 1 | String | Language Codes
|
Frequently Asked Questionsโ
How can I calculate the final price, AmountAfterTax, taking into account the taxes?
Note that there are two types of taxes (and that taxes are optional): Inclusive taxes must be included in the final price. While taxes different from inclusive or not specified, are paid directly at the hotel, they are provided for informational purposes only.
Taxes are found in HotelRatePlanInventoryNotif, and prices in HotelRatePlanNotif. To calculate the total price, you'll need information from both sources.
ยท If this rate plan (for which you already know the price) includes inclusive taxes, you'll need to add them to the price to get the total.
ยท However, if taxes are different from inclusive or not specified, your final price will remain as you originally knew it.