OTA_HotelRateAmountNotifRQ

Syntax

The OTA_HotelRateAmountNotifRQ message uses the following syntax:
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            TimeStamp="timestamp"
                            Version="3.0"
                            NotifType="[Overlay|Delta|Remove]"
                            NotifScopeType="[ProductRate]">
  <POS>
    <Source>
      <RequestorID ID="partner_account_name"/>
    </Source>
  </POS>
  <RateAmountMessages HotelCode="HotelID">
    <RateAmountMessage>
      <StatusApplicationControl Start="YYYY-MM-DD"
                                End="YYYY-MM-DD"
                                InvTypeCode="RoomID"
                                RatePlanCode="PackageID"/>
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountBeforeTax="float"
                            AmountAfterTax="float"
                            CurrencyCode="currency"
                            NumberOfGuests="integer"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Elements & Attributes

The OTA_HotelRateAmountNotifRQ message has the following elements and attributes:
Element / @Attribute Occurrences Type Description
OTA_HotelRateAmountNotifRQ 1 Complex element The root element for a rates message.
OTA_HotelRateAmountNotifRQ / @xmlns 0..1 String (URI) The XML namespace.
OTA_HotelRateAmountNotifRQ / @TimeStamp 1 DateTime The creation date and time of this message.
OTA_HotelRateAmountNotifRQ / @Version 1 Decimal The OpenTravel message version.
OTA_HotelRateAmountNotifRQ / @NotifType 0..1 Enum

The type of notification to apply to every <RateAmountMessage>.

Valid values are:

  • Overlay: Delete all of the existing per-occupancy rates for the room type, rate plan, and dates specified in <StatusApplicationControl> and replace them with new rates.
  • Remove: Delete all of the existing per-occupancy rates for the room type, rate plan, and dates specified in <StatusApplicationControl>.
  • Delta: (the default if NotifType isn't specified) Add or update the existing per-occupancy rates for the room type, rate plan, and dates specified in <StatusApplicationControl>.
OTA_HotelRateAmountNotifRQ / @NotifScopeType 0..1 Enum

The scope of the NotifType to apply to every <RateAmountMessage>.

Valid values are:

  • ProductRate: (the default if NotifScopeType isn't specified) The NotifType applies to products—combinations of room type (InvTypeCode) and rate plan (RatePlanCode).
OTA_HotelRateAmountNotifRQ / POS 0..1 POS A container for specifying the partner account for this message (typically used if your backend provides price feeds for multiple partner accounts).
OTA_HotelRateAmountNotifRQ / POS / Source 1 Source Required if <POS> is present. A container for the <RequestorID>.
OTA_HotelRateAmountNotifRQ / POS / RequestorID 1 RequestorID Required if <POS> is present. Defines the partner account.
OTA_HotelRateAmountNotifRQ / POS / RequestorID / @ID 1 String The partner account for this message. This attribute is typically used if your backend provides price feeds for multiple partner accounts. To get the name of your partner account, contact us.
OTA_HotelRateAmountNotifRQ / RateAmountMessages 1 RateAmountMessages A collection of <RateAmountMessage> elements that define rates.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / @HotelCode 1 String The unique identifier for the property. This value must match the Hotel ID specified using <id> in the <listing> element in the Hotel List Feed. The Hotel ID is also listed in Hotel Center.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage 1..n RateAmountMessage A container for setting prices for a room rate (a room type and rate plan combination across a date range).
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl 1 StatusApplicationControl Defines the date range, as well as the identifiers for the room type (InvTypeCode) and rate plan (RatePlanCode).
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Start 1 Date The starting date of the date range.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @End 1 Date The ending date of the date range. Must be equal or greater than the start value. If start and end are equal, the update applies to that date.
OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @Mon 0..1 Boolean Set to true or 1 to explicitly include Mondays.

If set to true, other days of the week that aren't explicitly set to true are excluded (in effect, they are filtered out from the dates within the Start and End).

OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @Tue 0..1 Boolean Set to true or 1 to explicitly include Tuesdays.

If set to true, other days of the week that aren't explicitly set to true are excluded (in effect, they are filtered out from the dates within the Start and End).

OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @Weds 0..1 Boolean Set to true or 1 to explicitly include Wednesdays.

If set to true, other days of the week that aren't explicitly set to true are excluded (in effect, they are filtered out from the dates within the Start and End).

OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @Thur 0..1 Boolean Set to true or 1 to explicitly include Thursdays.

If set to true, other days of the week that aren't explicitly set to true are excluded (in effect, they are filtered out from the dates within the Start and End).

OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @Fri 0..1 Boolean Set to true or 1 to explicitly include Fridays.

If set to true, other days of the week that aren't explicitly set to true are excluded (in effect, they are filtered out from the dates within the Start and End).

OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @Sat 0..1 Boolean Set to true or 1 to explicitly include Saturdays.

If set to true, other days of the week that aren't explicitly set to true are excluded (in effect, they are filtered out from the dates within the Start and End).

OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @Sun 0..1 Boolean Set to true or 1 to explicitly include Sundays.

If set to true, other days of the week that aren't explicitly set to true are excluded (in effect, they are filtered out from the dates within the Start and End).

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @InvTypeCode 1 String The unique identifier for the inventory (room type). This value maps to <RoomID> in a Transaction (Property Data) message.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @RatePlanCode 1 String A unique identifier for the rate plan. This identifier maps to the <PackageID> in a Transaction (Property Data) message. The rate plan is further defined and referred to in <StatusApplicationControl> in both <OTA_HotelRateAmountNotifRQ> and <OTA_HotelAvailNotifRQ> messages.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates 0..1 Rates Container for a collection of <Rate> elements. If NotifType is “Remove”, this element must not be specified. Otherwise, this element must be specified exactly once.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate 1 Rate Container for a collection of <BaseByGuestAmts> elements.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseGuestAmts 1 BaseByGuestAmts Container for a collection of base charges.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseGuestAmts / BaseByGuestAmt 1 BaseByGuestAmt Specifies room prices in a specified currency. The price can be per-occupancy by using multiple <BaseByGuestAmt> elements, each with a different value for NumberOfGuests. Otherwise, the price is applicable for a maximum number of occupants defined by NumberOfGuests.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseGuestAmts / BaseByGuestAmt / @AmountBeforeTax 0..1 Float

The daily price of the room rate before taxes and fees.

If you are using promotions, the discount is applied to AmountBeforeTax; percentage discounts are also applied to AmountAfterTax. Since this does not work with some tax structures, we strongly recommend only specifying AmountBeforeTax here and using TaxFeeInfo to specify taxes and fees.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseGuestAmts / BaseByGuestAmt / @AmountAfterTax 0..1 Float The daily price of the room rate after including applicable taxes and fees. If AmountAfterTax is specified, separate per-property <TaxFeeInfo> messages do not need to be sent. This attribute can be used in combination with AmountBeforeTax to provide both base and total rates that can be shown to users in certain regions.

Warning: If you are using promotions, we strongly recommend against using AmountAfterTax amounts. If you want to use discounts, specify taxes and fees by using the TaxFeeInfo message. Your discounts will then be applied to AmountBeforeTax amounts.

Note: If AmountBeforeTax isn't specified, AmountAfterTax must be specified.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseGuestAmts / BaseByGuestAmt / @CurrencyCode 1 Enum The ISO 4217 (3) alpha character code for a specific monetary unit.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseGuestAmts / BaseByGuestAmt / @NumberOfGuests 0..1 Integer Maximum number of guests for which a room is intended. Defaults to 2 if not provided.

Examples

This section provides code examples that highlight how to:

Set up base rates and total rates

Example 1

Base rate (without taxes or fees) for default occupancy (double). In this model, taxes and fees for the property must be defined using a TaxFeeInfo message. The base rate will be more prominent for users searching from certain regions.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            TimeStamp="2020-05-19T20:50:37-05:00"
                            Version="3.0">
  <RateAmountMessages HotelCode="Property_1">
    <RateAmountMessage>
      <StatusApplicationControl Start="2020-05-18"
                                End="2020-05-23"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountBeforeTax="100.00"
                            CurrencyCode="USD"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Example 2

Base and total rate for default occupancy (double). In this model, taxes and fees shouldn't be defined separately using TaxFeeInfo messages. The base rate will be more prominent for users searching from certain regions.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            TimeStamp="2020-05-19T20:50:37-05:00"
                            Version="3.0">
  <RateAmountMessages HotelCode="Property_1">
    <RateAmountMessage>
      <StatusApplicationControl Start="2020-05-18"
                                End="2020-05-23"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountBeforeTax="100.00"
                            AmountAfterTax="110.00"
                            CurrencyCode="USD"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Example 3

Total rate (with taxes and fees) for multiple occupancies. In this model, taxes and fees shouldn't be defined separately using TaxFeeInfo messages.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            TimeStamp="2020-05-19T20:50:37-05:00"
                            Version="3.0">
  <RateAmountMessages HotelCode="Property_1">
    <RateAmountMessage>
      <StatusApplicationControl Start="2020-05-18"
                                End="2020-05-23"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountAfterTax="100.00"
                            CurrencyCode="USD"
                            NumberOfGuests="1"/>
            <BaseByGuestAmt AmountAfterTax="110.00"
                            CurrencyCode="USD"
                            NumberOfGuests="2"/>
            <BaseByGuestAmt AmountAfterTax="120.00"
                            CurrencyCode="USD"
                            NumberOfGuests="3"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Example 4

Base and total rate for multiple room types and rate plans across different date ranges.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            TimeStamp="2020-05-19T20:50:37-05:00"
                            Version="3.0">
  <RateAmountMessages HotelCode="Property_1">
    <RateAmountMessage>
      <StatusApplicationControl Start="2020-05-18"
                                End="2020-05-23"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountBeforeTax="100.00"
                            AmountAfterTax="110.00"
                            CurrencyCode="USD"
                            NumberOfGuests="2"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
    <RateAmountMessage>
      <StatusApplicationControl Start="2020-05-01"
                                End="2020-05-31"
                                InvTypeCode="RoomID_2"
                                RatePlanCode="PackageID_2"/>
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountBeforeTax="200.00"
                            AmountAfterTax="220.00"
                            CurrencyCode="USD"
                            NumberOfGuests="2"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Add, overlay, and remove rates

Add rates

Set NotifType to Delta to add per-occupancy rates for RoomID_1 and PackageID_1 between 2020-05-18 and 2020-05-23.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            TimeStamp="2020-05-19T20:50:37-05:00"
                            Version="3.0"
                            NotifType="Delta"
                            NotifScopeType="ProductRate">
  <RateAmountMessages HotelCode="Property_1">
    <RateAmountMessage>
      <StatusApplicationControl Start="2020-05-18"
                                End="2020-05-23"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountBeforeTax="100.00"
                            CurrencyCode="USD"
                            NumberOfGuests="1"/>
            <BaseByGuestAmt AmountBeforeTax="110.00"
                            CurrencyCode="USD"
                            NumberOfGuests="2"/>
            <BaseByGuestAmt AmountBeforeTax="120.00"
                            CurrencyCode="USD"
                            NumberOfGuests="3"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Overlay rates

Set NotifType to Overlay to delete all per-occupancy rates for RoomID_1 and PackageID_1 between 2020-05-18 and 2020-05-23 and replace them with the newly specified per-occupancy rates.

For example, if this message was sent after the "Add rates" message, the occupancy 1, 2, and 3 rates would be deleted, and only the new occupancy 1 rate would be stored.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            TimeStamp="2020-05-19T20:50:37-05:00"
                            Version="3.0"
                            NotifType="Overlay"
                            NotifScopeType="ProductRate">
  <RateAmountMessages HotelCode="Property_1">
    <RateAmountMessage>
      <StatusApplicationControl Start="2020-05-18"
                                End="2020-05-23"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountBeforeTax="200.00"
                            CurrencyCode="USD"
                            NumberOfGuests="1"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Remove rates

Set NotifType to Delete to delete all per-occupancy rates for RoomID_1 and PackageID_1 between 2020-05-18 and 2020-05-23.

For example, if this message was sent after either of the other example messages, no per-occupancy rates would be stored.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            TimeStamp="2020-05-19T20:50:37-05:00"
                            Version="3.0"
                            NotifType="Remove"
                            NotifScopeType="ProductRate">>
  <RateAmountMessages HotelCode="Property_1">
    <RateAmountMessage>
      <StatusApplicationControl Start="2020-05-18"
                                End="2020-05-23"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>