Rates

HotelRunner receive updates for rates via the OTA_HotelRateAmountNotifRQ message. HotelRunner will add the updates to the queue and respond with the OTA_HotelRateAmountNotifRS message as a receipt of success or failure.

OTA_HotelRateAmountNotifRQ

The OTA_HotelRateAmountNotifRQ message is used to update the rates for one or more room types for a single hotel. Specifically:

* Room rates * Room inclusions

Each OTA_HotelRateAmountNotifRQ message should have a single RateAmountMessages element which indicates the hotel to update using the RateAmountMessages/@HotelCode attribute. The RateAmountMessages/RateAmountMessage elements will contain the updates to process over a date range. There can be several RateAmountMessage updates per request, however each request should be limited to one hotel.

Please note that, this API only supports sending the Base Rate for a room. Extra prices cannot be sent over API.

The basic structure of the message is as follows:

<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2016-04-01T12:31:47+03:00" Version="1.0" EchoToken="echo-1903">
  <POS>
    <Source>
      <RequestorID Type="22" ID="PMS1"/>
    </Source>
  </POS>
  <RateAmountMessages>
    <RateAmountMessage>
      <StatusApplicationControl RatePlanCode="HR:10243"/>
      <Rates>
        <Rate CurrencyCode="AUD" Start="2016-04-11" End="2016-04-11" Mon="1" Tue="1" Weds="1" Thur="1" Fri="1" Sat="1" Sun="1">
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountAfterTax="123.00"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
    <RateAmountMessage>
      <!-- Content omitted -->
    </RateAmountMessage>
</OTA_HotelRateAmountNotifRQ>

StatusApplicationControl

This element must appear once in each RateAmountMessage element. The StatusApplicationControl element is used to specify the room type, rate code and dates for which the update applies.
The @InvTypeCode attribute is required and the @RatePlanCode attribute is optional. It is possible to have 1 or more HotelRunner room types linked to the same InvTypeCode/RatePlanCode combination and the update will be applied to all room types found with matching values.

Rate

The Rate element is used to determine the dates for which the update applies. The dates affected by the update are controlled by the mandatory Rate@Start and Rate@End attributes. Use the Mon, Tue, Wed, Thur, Fri, Sat or Sun attributes to apply an update to specific days of the week. If any of these day of week attributes is present, then they must all be present. For example it is not possible to specify just the Mon and Fri attribute and not include the other 5.

Setting Rates

Rates should be sent through in the BaseByGuestAmt element. Either @AmountAfterTax or @AmountBeforeTax must be included and must contain the rate as a positive decimal value. In order to set Rates it is mandatory to specify the @CurrencyCode. At present HotelRunner DOES NOT perform currency conversion and the Rate amount specified will be applied directly to HotelRunner.

<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2016-04-01T12:31:47+03:00" Version="1.0" EchoToken="echo-1903">
  <POS>
    <Source>
      <RequestorID Type="22" ID="PMS1"/>
    </Source>
  </POS>
  <RateAmountMessages>
    <RateAmountMessage>
      <StatusApplicationControl RatePlanCode="HR:10243"/>
      <Rates>
        <Rate CurrencyCode="AUD" Start="2016-04-11" End="2016-04-11" Mon="1" Tue="1" Weds="1" Thur="1" Fri="1" Sat="1" Sun="1">
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountAfterTax="123.00"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
    <RateAmountMessage>
      <!-- Content omitted -->
    </RateAmountMessage>
</OTA_HotelRateAmountNotifRQ>


Choosing a Destination Booking Agent

To specify which booking agent a rate update is for use the DestinationSystemCodes node. The example below is limiting the update to Booking.com and Expedia. To see the list of booking agent codes, please see our Channel Code Table.

<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2016-04-01T12:31:47+03:00" Version="1.0" EchoToken="echo-1903">
  <POS>
    <Source>
      <RequestorID Type="22" ID="PMS1"/>
    </Source>
  </POS>
  <RateAmountMessages>
    <RateAmountMessage>
      <StatusApplicationControl RatePlanCode="HR:10243">
          <DestinationSystemCodes>
              <DestinationSystemCode>bookingcom</DestinationSystemCode>
              <DestinationSystemCode>expedia</DestinationSystemCode>
          </DestinationSystemCodes>
      </StatusApplicationControl>

      <Rates>
        <Rate CurrencyCode="AUD" Start="2016-04-11" End="2016-04-11" Mon="1" Tue="1" Weds="1" Thur="1" Fri="1" Sat="1" Sun="1">
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountAfterTax="123.00"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
    <RateAmountMessage>
      <!-- Content omitted -->
    </RateAmountMessage>
</OTA_HotelRateAmountNotifRQ>

OTA_HotelRateAmountNotifRS

This message is returned to the PMS in response to the OTA_HotelRateAmountNotifRQ message. It notifies whether the OTA_HotelRateAmountNotifRQ message has been processed successfully.

<OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2016-04-01T12:31:47+03:00" Version="1.0" EchoToken="echo-1903">
  <Success/>
</OTA_HotelRateAmountNotifRS>


<OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2016-04-01T12:31:47+03:00" Version="1.0" EchoToken="echo-abc123">
  <Errors>
    <Error Type="3" Code="392">Cannot finder hotelier ABC</Error>
  </Errors>
</OTA_HotelRateAmountNotifRS>

OTA_HotelRateAmountNotifRQ Specification

Element  Number  Description
OTA_HotelRateAmountNotifRQ 1 Root Node
@EchoToken 1 Globally unique identifier for the request, the value will be returned in the response EchoToken.
@Version  1 Current version is 1.0
@TimeStamp 1 Time of the transaction in xml schema dateTime format
OTA_HotelRateAmountNotifRQ / POS / Source / RequestorID  1 This identifies the system which is sending the reservation. This element must appear in the first Source element.
@Type  1 Fixed at 22
@ID  1 The ID used will be agreed by the trading partners and remain the same throughout the messages.
OTA_HotelRateAmountNotifRQ / RateAmountMessages 1 Contains rates for a given hotel
@HotelCode 1 Hotel code of the property whose rate is being updated
RateAmountMessages / RateAmountMessage 1..n Rates to be updated
RateAmountMessage / StatusApplicationControl  1 Contains room identification information
@RatePlanCode  0..1  Identifies the rate to be updated
StatusApplicationControl / DestinationSystemCodes  0..1 Contains a list of BookingAgent/Channel codes that you want to change the rates or inclusions for. This is optional, by default if it is not present the rate update is assumed to be for all BookingAgents / Channels mapped to the hotel.
DestinationSystemCodes / DestinationSystemCode  1..n  Required if DestinationSystemCodes is present. This is the BookingAgent/Channel code. Please refer to the code table provided. If an update is sent for a BookingAgent/Channel that is not mapped to the hotel, it will be discarded.
RateAmountMessage / Rates / Rate  1..n Contains the timespan the update applies to and the currency code if this is a rate update
@Start, @End  1  The start and end date of the rate plan in xml date format. End date is inclusive. End date cannot be more than 750 days in the future.
@ Sun, Mon, Tue, Weds, Thur, Fri, Sat  0..1  "0" or "1". Optional, if not set all are assumed to be set to true. The day of the week indicators are used to communicate which days of the week the update pertains to. For example, if mon, tue and weds are set to "1", and the other days are set to "0", the rate will only be updated for Monday, Tuesday and Wednesday.
Rate / BaseByGuestAmts  0..1  Optional. Contains information about the rates. Can be omitted if the update is only for inclusions.
BaseByGuestAmts / BaseByGuestAmt  1  Contains the rate amounts per room
@AmountAfterTax  0..1 One and only one of @AmountAfterTax and @AmountBeforeTax must be included if BaseByGuestAmts is present. Must be a positive decimal value.
RateDescription / Text  0..1  Inclusions. If available this is a description of the rate being uploaded. Max Length is 255 characters.