Skip to main content

Rate Push

The HotelRatePlanNotif request message pushes rate plans for the inventory that has been previously setup.

HotelRatePlanNotif Request

In the following examples, you will see the requests that you need to send in order to Push Rate Plans.

info

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.

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://schemas.xmltravelgate.com/hubpush/provider/2012/10" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
<s:Header>
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>username</wsse:Username>
<wsse:Password>password</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</s:Header>
<s:Body>
<ns:HotelRatePlanNotif>
<ns:request>
<ns1:POS>
<ns1:Source>
<ns1:RequestorID ID="Seller Code"/>
<ns1:BookingChannel>
<ns1:CompanyName Code="Buyer Code"/>
</ns1:BookingChannel>
</ns1:Source>
</ns1:POS>
<ns1:RatePlans HotelCode="2">
<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>

Request Data Breakdown

note

During the onboarding process, your username and password will be provided. After each connection is established, you'll receive an email with RequestorID (Seller Code) and CompanyName (Buyer Code) values.

ElementRelTypeDescription
HotelRatePlanNotif1
HotelRatePlanNotif/request1
request/RatePlans1
@HotelCode1StringHotel code
RatePlans/RatePlan1..n
@RatePlanCode1StringRate plan code
@FreeChild1BooleanIndicates if childern are free with this rate plan.
@FreeBaby1BooleanIndicates if babies are free with this rate plan.
@RatePlanStatusType0..1StringActive or Deactivated
@BaseRatePlanCode0..1StringRate code of the base rate plan. This field is exclusively used for Derivated rates.
@CurrencyCode0..1StringISO Currency. This field is exclusively used for Basic Rates.
RatePlan/Rates1
Rates/Rate1..n
@Start1DateStart date of the rate.
@End1DateEnd date of the rate.
@AdjustedPercentage0..1DecimalThe 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.
@AdjustedAmount0..1DecimalThe 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.
@AdjustUpIndicator0..1BooleanIf 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/BaseByGuestAmts0..1
BaseByGuestAmts/BaseByGuestAmt1..n
@AmountAfterTax1DecimalTotal amount for the @NumberOfGuests indicated per day. This amount doesn’t include tax. When value is -1, price should be deleted from the system.
@NumberOfGuests0..1IntegerPRICE PER PAX. The maximum @NumberOfGuests is the standard occupancy of the room. If @NumberOfGuests is not provided, then @Type must be specified.
@Type0..1Integer@Type 25 PRICE PER ROOM; @Type 14 PRICE PER OCCUPANCY (In the case of 14, @Code is mandatory and AdditionalGuestAmounts are not allowed).
@Code0..1StringRoom scenario codes (adult-child-baby). Mandatory if @Type '14' PRICE PER OCCUPANCY.
Rate/AdditionalGuestAmounts0..1This field is exclusively used for Basic Rates.
AdditionalGuestAmounts/AdditionalGuestAmount1..n
@MaxAdditionalGuests1IntegerNumber of the additional pax.
@AgeQualifyingCode1Integer
Age Qualifying Codes
Code Description
7 Baby
8 Child
10 Adult
@Type0..1StringExclusive, if present price is absolute and price tag is @Amount
@Amount0..1DecimalPrice for each additional pax.
@Percent0..1DecimalPercent for each additional pax.
RatePlan/Supplements0..1Present if supplements by board exists. This field is exclusively used for Basic Rates.
Supplements/Supplement1..n
@Start1DateStart date of the supplement.
@End1DateEnd date of the supplement.
@AgeQualifyingCode0..1Integer
Age Qualifying Codes
Code Description
7 Baby
8 Child
10 Adult
Not allowed if charging Supplement Board by Occupancy.
@ChargeTypeCode0..1StringOccupancy supplement board. Only allowed if charging supplement board by occupancy.
@Amount1DecimalAmount of the supplement.
@SupplementType1StringBoard
@InvCode1String
Meal Plan codes
Code Description
1 All inclusive
2 American
3 Bed & breakfast
4 Buffet breakfast
5 Caribbean breakfast
6 Continental breakfast
7 English breakfast
8 European plan
9 Family plan
10 Full board
11 Full breakfast
12 Half board/modified American plan
13 As brochured
14 Room only
15 Self catering
16 Bermuda
17 Dinner bed and breakfast plan
18 Family American
19 Breakfast
20 Modified
255 Full board And Drinks
256 Half board And Drinks
257 All inclusive Premium
258 Gala Dinner
259 All Inclusive Light
260 Bed and breakfast + Half board
261 All Inclusive Limited
262 Bed and Brunch
Only if @SupplementType is 'Board'
RatePlan/SellableProducts0..1This field is exclusively used for Basic Rates.
SellableProducts/SellableProduct1..n
@InvCode1StringRoom code
@InvType1StringROOM

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.
Case 1

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:

OccupancyPrice
1-0-0100
2-0-0100
1-1-0100

Case 2

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:

OccupancyPrice
1-0-0100
2-0-0100
3-0-0100 + (100⁄2 + 20) = 170
1-1-0100
3-1-0100 + (100⁄2 + 20) + 10 = 180

Case 3

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:

OccupancyPrice
1-0-0120
2-0-0120
3-0-0120
4-0-0120 + (120⁄3 + 20) = 180

Price per Pax/Guest (Standard Occupancy)

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 Pax/Guest" price calculations.
Case 1

Standard occupancy: 2


Room scenarios (adult-child-baby):

  • 1-0-0
  • 2-0-0

Message:

<BaseByGuestAmts>
<BaseByGuestAmt NumberOfGuests = "2" AmountAfterTax="100.00"/>
</BaseByGuestAmts>

Price:

OccupancyPrice
1-0-0Ø
2-0-02*(100⁄2) = 100

Case 2

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:

OccupancyPrice
1-0-0100
2-0-02*(130⁄2) = 130

Case 3

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:

OccupancyPrice
1-0-0Ø
2-0-02*(100⁄2) = 100
3-0-0(100⁄2) + (100⁄2) + ((100⁄2) + 40) = 190

Case 4

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:

OccupancyPrice
1-0-0Ø
2-0-02*(100⁄2) = 100
3-0-0(100⁄2) + (100⁄2) + 40 = 140

Case 5

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:

OccupancyPrice
1-0-0Ø
2-0-02*(100⁄2) = 100
2-1-0(100⁄2) + ((100⁄2) + 40)= 190

Case 5.1

Standard occupancy: 2


Room scenarios (adult-child-baby):

  • 1-0-0
  • 2-0-0
  • 2-0-1

Message:

<BaseByGuestAmts>
<BaseByGuestAmt NumberOfGuests = "2" AmountAfterTax="100.00"/>
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests = "1" Amount = "40.00" AgeQualifyingCode = "7" Type="Exclusive"/>
</AdditionalGuestAmounts>

Price:

OccupancyPrice
1-0-0Ø
2-0-02*(100⁄2) = 100
2-0-12*(100⁄2) + 40 = 140

Case 6

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:

OccupancyPrice
1-0-0Ø
2-0-02*(100⁄2) = 100
2-1-02*(100⁄2) + ((100⁄2) -40) = 60

Case 7

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:

OccupancyPrice
1-0-0Ø
2-0-02*(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

Case 8

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:

OccupancyPrice
1-0-0Ø
2-0-02*(100⁄2) = 100
3-0-0(100⁄2) + (100⁄2) + ((100⁄2) -10) = 140
4-0-0Ø

Case 9

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:

OccupancyPrice
1-0-0Ø
2-0-0Ø
3-0-03*(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.
Case 1

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:

OccupancyPrice
1-0-0Ø
2-0-0100
3-0-0Ø

Case 2

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:

OccupancyPrice
2-1-095
2-0-180

HotelRatePlanNotif Response

After each request, Travelgate will process the data and provide you with a response. Upon receiving a HotelRatePlanNotif request, Travelgate will send you a corresponding HotelRatePlanNotif response. The response options include either success or an 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">
<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">
<u:Timestamp u:Id="_0">
<u:Created>2023-11-22T11:03:26.904Z</u:Created>
<u:Expires>2023-11-22T11:08:26.904Z</u:Expires>
</u:Timestamp>
</o:Security>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<HotelRatePlanNotifResponse xmlns="http://schemas.xmltravelgate.com/hubpush/provider/2012/10">
<HotelRatePlanNotifResult>
<Success xmlns="http://www.opentravel.org/OTA/2003/05"/>
</HotelRatePlanNotifResult>
</HotelRatePlanNotifResponse>
</s:Body>
</s:Envelope>

Response Data Breakdown

ElementRelTypeDescription
HotelRatePlanNotifResult1
HotelRatePlanNotifResult/Success0..1If SUCESS
HotelRatePlanNotifResult/Errors0..1If ERROR
Errors/Error1
@ShortText1String
Error Codes and Description
Error Code Error Description
-1 Unexpected error
1 Invalid request
10 Invalid hotel id
11 Invalid dates
12 Invalid rate plan code
13 Invalid reservation id
14 Invalid derived rate adjust values
15 Invalid id
16 Invalid amount type
17 Invalid supplement type
18 Invalid number of hotel
19 Invalid rate currency code
20 Requestor id not found
21 Provider id not found
22 Rooms not found
23 Rates not found
30 Occupation error
31 Rate error
32 Avail rq error
33 Data Base error
34 Cancel error
35 Confirmation error
36 Valuation_error
37 Authorization error
38 Authentication error
90 Connection time out
@Code1String
Error Codes and Description
Error Code Error Description
-1 Unexpected error
1 Invalid request
10 Invalid hotel id
11 Invalid dates
12 Invalid rate plan code
13 Invalid reservation id
14 Invalid derived rate adjust values
15 Invalid id
16 Invalid amount type
17 Invalid supplement type
18 Invalid number of hotel
19 Invalid rate currency code
20 Requestor id not found
21 Provider id not found
22 Rooms not found
23 Rates not found
30 Occupation error
31 Rate error
32 Avail rq error
33 Data Base error
34 Cancel error
35 Confirmation error
36 Valuation_error
37 Authorization error
38 Authentication error
90 Connection time out