OTA_HotelRateAmountNotifRQ

Requests

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"
                            EchoToken="message_ID"
                            TimeStamp="timestamp"
                            Version="3.0"
                            NotifType="[Overlay|Delta|Remove]"
                            NotifScopeType="[ProductRate]">
  <POS>
    <Source>
      <RequestorID ID="partner_key"/>
    </Source>
  </POS>
  <RateAmountMessages HotelCode="HotelID">
    <RateAmountMessage>
      <StatusApplicationControl Start="YYYY-MM-DD"
                                End="YYYY-MM-DD"
                                Mon="boolean_value"
                                Tue="boolean_value"
                                Weds="boolean_value"
                                Thur="boolean_value"
                                Fri="boolean_value"
                                Sat="boolean_value"
                                Sun="boolean_value"
                                InvTypeCode="RoomID"
                                RatePlanCode="PackageID"
                                RatePlanType="[26]" />
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountBeforeTax="float"
                            AmountAfterTax="float"
                            CurrencyCode="currency"
                            NumberOfGuests="integer"/>
          </BaseByGuestAmts>
          <AdditionalGuestAmounts>
            <AdditionalGuestAmount Amount="float"
                                   AgeQualifyingCode="[10|8]"
                                   MaxAge="integer"/>
          </AdditionalGuestAmounts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Elements and 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 / @EchoToken 1 string A unique identifier for this request message. This value is returned in the response message. Allowed characters are a-z, A-Z, 0-9, _ (underscore), and - (dash).
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:

To understand how these attributes work, check out the examples.

  • Overlay: Delete all of the 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 string value is the "Partner key" value listed on the Account settings page in Hotel Center.

Note: If you have a backend that provides feeds for multiple accounts, this value needs to match the partner attribute value of your Transaction (Property Data) message and the ID attribute value in the <RequestorID> element of your <OTA_HotelAvailNotifRQ> message for the same account.

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 (based on the property's time zone), inclusive, of the date range.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @End 1 Date The ending date (based on the property's time zone), inclusive, 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. Note that Google supports up to three years of data.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / 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_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / 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_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / 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_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / 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_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / 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_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / 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_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / 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 / StatusApplicationControl / @RatePlanType 0..1 string An identifier that indicates the type of ARI pricing model that applies to this pricing update. This should only be specified, using a value of 26, when using the LOS-based pricing model. Exclusion of this attribute indicates this is a per-date pricing update.
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 / @RateTimeUnit 0..1 String The unit by which length of stay is specified. The only supported value is "Day", meaning the length of stay will be specified in days.

To use LOS-based pricing, RateTimeUnit and UnitMultiplier must be specified. Otherwise, neither should be specified.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / @UnitMultiplier 0..1 Integer The number of RateTimeUnits which compose the length of stay for this rate.

For example, if RateTimeUnits value is "Day", a UnitMultiplier of 5 indicates that the rate(s) specified under this Rate object apply to each night of a 5 night stay.

The occupancy rate(s) specified under this Rate object will be multiplied by the UnitMultiplier (length of stay) to arrive at the total price for the stay.

To use LOS-based pricing, RateTimeUnit and UnitMultiplier must be specified. Otherwise, neither should be specified.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts 1 BaseByGuestAmts Container for a collection of base charges.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt 1..n 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 / BaseByGuestAmts / BaseByGuestAmt / @AmountBeforeTax 0..1 float

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

Both AmountBeforeTax and AmountAfterTax can be specified. If AmountBeforeTax isn't specified, AmountAfterTax must be specified. If AmountBeforeTax is specified and AmountAfterTax isn't specified, then taxes and fees must be specified in a <TaxFeeInfo> message.

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 / BaseByGuestAmts / 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 don't 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 / BaseByGuestAmts / BaseByGuestAmt / @CurrencyCode 1 enum The ISO 4217 (3) alpha character code for a specific monetary unit.

Refer to the list of supported currencies.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @NumberOfGuests 0..1 integer Maximum number of guests that can be accommodated by this rate. Defaults to 2 guests if not provided.

Note that if <AdditionalGuestAmounts> contains charges for children, NumberOfGuests refers only to adults. If <AdditionalGuestAmounts> is unspecified, or does not contain charges for children, NumberOfGuests refers to the total number of occupants including both adults and children.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts 0..1 AdditionalGuestAmounts Container for a collection of charges for additional guests.

This syntax is useful if additional guest or child rates change based on the date. Consider using the more efficient ExtraGuestCharges message if these amounts can be defined statically at the property level.

Additional guest amounts are applied as follows:
  • They are applied on top of the base occupancy rate. The base occupancy rate is the highest occupancy rate, specified in <BaseByGuestAmts>, that is less than or equal to the number of adults in a user search.
  • They are applied as long as the occupancy in a user search is within the room's capacity.
  • <AdditionalGuestAmounts> always replace previously specified additional amounts with new ones when the NotifType is either Delta or Overlay.
  • <AdditionalGuestAmounts> may be sent independently of base rates only when NotifType is Delta. <BaseByGuestAmts>must be specified when NotifType is Overlay.
  • An empty <AdditionalGuestAmounts> element with NotifType set to Delta removes existing additional amounts without affecting base rates.
  • They are applied using the currency specified in <BaseByGuestAmt>.

For example, suppose that base rates are specified for 1 and 2 adults.

  • If a user searches for 3 adults, the double occupancy rate would be selected as the base rate, and an additional guest amount for 1 adult would be applied on top of it.
  • If the user searches for 1 adult and 2 children, the single occupancy rate would be selected as the base rate, and additional amounts would be applied on top of it, for the two children.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount 0..n AdditionalGuestAmount Specifies prices based on the type of guest, specified through AgeQualifyingCode and, if applicable, the guest's age specified through MaxAge.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @AgeQualifyingCode 1 enum Defines the type of additional guest, either adult or child. Valid options are:
  • 10: Adult.
  • 8: Child.

AgeQualifyingCode can be set to 10 for at most one AdditionalGuestAmount element.

MaxAge must be specified when AgeQualifyingCode is 8.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @MaxAge 0..1 integer MaxAge must be specified when AgeQualifyingCode is 8. It must not be specified when AgeQualifyingCode is 10.

MaxAge should be an integer between 0 and 17.

Specifying a value of 0 disables child occupants.

Values greater than 17 will be treated as the maximum accepted value of 17.

Multiple child age ranges can be specified through separate AdditionalGuestAmount elements. Age ranges must be contiguous and non-overlapping.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @Amount 1 float Amount before taxes and fees added to the base rate for each additional guest.

Taxes and fees that depend on occupants' ages must be specified through the <AgeBrackets> element in a <TaxFeeInfo> message.

Examples

This section provides code examples that highlight how to:

When you set the add, overlay, or remove values, the date ranges can the same or different depending on your goals. For example, you can use overlay to set only a few weeks for the December holidays rather than the entire range set for the "Add rate" message. This will replace the occupancy rates for only this period.

Per-date pricing

For a given room and rate plan there can be a maximum of 50 occupancy rates per property. If the rates are same for all occupancies, you should just send the maximum occupancies with the required price. By doing this, Google infers that the lower occupancies also receives the same base rate.

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"
                            EchoToken="12345678"
                            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"
                            EchoToken="12345678"
                            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"
                            EchoToken="12345678"
                            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"
                            EchoToken="12345678"
                            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

There is a limit of 5000 products—room type and package combinations— per property. Use the Overlay or Remove notification types to remove previously defined products.

Add rates

Set NotifType to Delta to add per-occupancy rates for RoomID_1 and PackageID_1 between 2021-10-20 and 2021-12-31. Note that Google supports up to three years of data.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            EchoToken="12345678"
                            TimeStamp="2021-10-20T20:50:37-05:00"
                            Version="3.0"
                            NotifType="Delta"
                            NotifScopeType="ProductRate">
  <RateAmountMessages HotelCode="Property_1">
    <RateAmountMessage>
      <StatusApplicationControl Start="2021-10-20"
                                End="2021-12-31"
                                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 2021-10-20 and 2021-12-31 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. You can also set a shorter date range (e.g.: 2021-12-20 and 2021-12-31) to replace only some of the occupancy rates on certain dates, such as for holidays.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            EchoToken="12345678"
                            TimeStamp="2021-10-20T20:50:37-05:00"
                            Version="3.0"
                            NotifType="Overlay"
                            NotifScopeType="ProductRate">
  <RateAmountMessages HotelCode="Property_1">
    <RateAmountMessage>
      <StatusApplicationControl Start="2021-10-20"
                                End="2021-12-31"
                                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 Removeto delete all per-occupancy rates for RoomID_1 and PackageID_1 between 2021-10-20 and 2021-12-31.

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"
                            EchoToken="12345678"
                            TimeStamp="2021-10-20T20:50:37-05:00"
                            Version="3.0"
                            NotifType="Remove"
                            NotifScopeType="ProductRate">>
  <RateAmountMessages HotelCode="Property_1">
    <RateAmountMessage>
      <StatusApplicationControl Start="2021-10-20"
                                End="2021-12-31"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>
Add, overlay, and remove additional guest amounts

Add amounts

Set NotifType to Delta to add base rates for occupancy 1 and 2, and additional guest amounts, for RoomID_1 and PackageID_1 between 2021-10-20 and 2021-12-31.

Additional guest amounts will be applied on top of a base rate which will be determined by the occupancy in a user search. The user specified occupancy must be within RoomID_1's capacity.

In this example, additional guest amounts will be applied as:

  • $5 for children in the age range 0 to 10 (inclusive).
  • $10 for children in the age range 11 to 17 (inclusive).
  • $20 for adults.
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            EchoToken="12345678"
                            TimeStamp="2021-10-20T20:50:37-05:00"
                            Version="3.0"
                            NotifType="Delta"
                            NotifScopeType="ProductRate">
  <RateAmountMessages HotelCode="Property_1">
    <RateAmountMessage>
      <StatusApplicationControl Start="2021-10-20"
                                End="2021-12-31"
                                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"/>
          </BaseByGuestAmts>
          <AdditionalGuestAmounts>
            <AdditionalGuestAmount Amount="5.00" AgeQualifyingCode="8" MaxAge="10" />
            <AdditionalGuestAmount Amount="10.00" AgeQualifyingCode="8" MaxAge="17" />
            <AdditionalGuestAmount Amount="20.00" AgeQualifyingCode="10" />
          </AdditionalGuestAmounts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Overlay amounts

Set NotifType to Overlay to delete all per-occupancy rates and all additional guest amounts for RoomID_1 and PackageID_1 between 2021-10-20 and 2021-12-31 and replace them with the newly specified per-occupancy rates and additional amounts.

For example, if this message was sent after the "Add rates" message, the base occupancy 1 and 2 rates would be deleted, and only the new base occupancy 1 rate would be stored. The previous set of additional guest amounts would be deleted, and only the new set of amounts would be stored. Additional guest amounts would now use the new occupancy 1 rate as the base rate. Note that after this update, there are no additional guest charges defined for children.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            EchoToken="12345678"
                            TimeStamp="2021-10-20T20:50:37-05:00"
                            Version="3.0"
                            NotifType="Overlay"
                            NotifScopeType="ProductRate">
  <RateAmountMessages HotelCode="Property_1">
    <RateAmountMessage>
      <StatusApplicationControl Start="2021-10-20"
                                End="2021-12-31"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountBeforeTax="200.00"
                            CurrencyCode="USD"
                            NumberOfGuests="1"/>
          </BaseByGuestAmts>
          <AdditionalGuestAmounts>
            <AdditionalGuestAmount Amount="30.00" AgeQualifyingCode="10" />
          </AdditionalGuestAmounts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Remove amounts

Set NotifType to Delete to delete all per-occupancy base rates, and all additional guest amounts for RoomID_1 and PackageID_1 between 2021-10-20 and 2021-12-31.

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

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

Remove only additional guest amounts

Set NotifType to Delta with an empty <AdditionalGuestAmounts> element to delete all additional guest amounts for RoomID_1 and PackageID_1 without affecting base rates between 2021-10-20 and 2021-12-31.

For example, if this message was sent after either of the other example messages, only the base amounts would be stored.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            EchoToken="12345678"
                            TimeStamp="2021-10-20T20:50:37-05:00"
                            Version="3.0"
                            NotifType="Delta"
                            NotifScopeType="ProductRate">
  <RateAmountMessages HotelCode="Property_1">
    <RateAmountMessage>
      <StatusApplicationControl Start="2021-10-20"
                                End="2021-12-31"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
      <Rates>
        <Rate>
          <AdditionalGuestAmounts/>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

LOS-based pricing

Set up LOS-based rates

Example 1

Set rates for 1, 2, and 3 night stays starting on 2020-05-18. The total rate for 1, 2 and 3 night stays in this example would be $100, $180 and $240 respectively.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            EchoToken="12345678"
                            TimeStamp="2020-05-19T20:50:37-05:00"
                            Version="3.0">
  <RateAmountMessages HotelCode="Property_1">
    <RateAmountMessage>
      <StatusApplicationControl Start="2020-05-18"
                                End="2020-05-18"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"
                                RatePlanType="26"/>
      <Rates>
        <Rate UnitMultiplier="1" RateTimeUnit="Day">
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountBeforeTax="100.00"
                            CurrencyCode="USD"
                            NumberOfGuests="2"/>
          </BaseByGuestAmts>
        </Rate>
        <Rate UnitMultiplier="2" RateTimeUnit="Day">
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountBeforeTax="90.00"
                            CurrencyCode="USD"
                            NumberOfGuests="2"/>
          </BaseByGuestAmts>
        </Rate>
        <Rate UnitMultiplier="3" RateTimeUnit="Day">
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountBeforeTax="80.00"
                            CurrencyCode="USD"
                            NumberOfGuests="2" />
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>
Add, overlay, and remove LOS-based rates

Add length(s) of stay

With LOS-based pricing, a Delta operation allows rates to be incrementally updated for the check-in date ranges indicated in <StatusApplicationControl> and for all lengths of stay indicated by each child Rate element's UnitMultiplier.

For each applicable check-in date and length of stay, all occupancy rates must be specified.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            EchoToken="12345678"
                            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-18"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"
                                RatePlanType="26"/>
      <Rates>
        <Rate UnitMultiplier="3" RateTimeUnit="Day">
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountBeforeTax="80.00"
                            CurrencyCode="USD"
                            NumberOfGuests="2"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Overlay length(s) of stay

With LOS-based pricing, an Overlay operation replaces the rates for all lengths of stay of the product and check-in date range indicated in <StatusApplicationControl>.

With this message, per-occupancy rates for all lengths of stay on the specified arrival dates will be removed and replaced by a double-occupancy rate that is only defined for length of stay 3.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            EchoToken="12345678"
                            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-18"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"
                                RatePlanType="26"/>
      <Rates>
        <Rate UnitMultiplier="3" RateTimeUnit="Day">
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountBeforeTax="80.00"
                            CurrencyCode="USD"
                            NumberOfGuests="2"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Remove length(s) of stay

With LOS-based pricing, a Remove operation removes the rates for all lengths of stay of the product and check-in date range indicated in <StatusApplicationControl>.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            EchoToken="12345678"
                            TimeStamp="2021-10-20T20:50:37-05:00"
                            Version="3.0"
                            NotifType="Remove"
                            NotifScopeType="ProductRate">
  <RateAmountMessages HotelCode="Property_1">
    <RateAmountMessage>
      <StatusApplicationControl Start="2021-10-20"
                                End="2021-12-31"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"
                                RatePlanType="26"/>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Responses

Syntax

The OTA_HotelRateAmountNotifRS message uses the following syntax:

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05"
                            TimeStamp="timestamp"
                            EchoToken="echo_token"
                            Version="3.0">
  <!-- Either Success or Errors will be populated. -->
  <Success/>
  <Errors>
    <Error Type="12" Status="NotProcessed" ShortText="issue_code">issue_description</Error>
  </Errors>
</OTA_HotelRateAmountNotifRS>

Elements and attributes

The OTA_HotelRateAmountNotifRS message has the following elements and attributes:

Element / @Attribute Occurrences Type Description
OTA_HotelRateAmountNotifRS 1 Complex element The root element for a response to an availability message.
OTA_HotelRateAmountNotifRS / @TimeStamp 1 DateTime The creation date and time of this message.
OTA_HotelRateAmountNotifRS / @EchoToken 1 string The unique identifier from the associated OTA_HotelRateAmountNotifRQ message.
OTA_HotelRateAmountNotifRS / Success 0..1 Success Indicates that the OTA_HotelRateAmountNotifRQ message was processed successfully.

Either <Success> or <Errors> is present in each message.

OTA_HotelRateAmountNotifRS / Errors 0..1 Errors A container for one or more issues encountered while processing the OTA_HotelRateAmountNotifRQ message.

Either <Success> or <Errors> is present in each message.

OTA_HotelRateAmountNotifRS / Errors / Error 1..n Error The description of an error encountered while processing the OTA_HotelRateAmountNotifRQ message. Details on these errors can be found in Feed Status Error Messages.
OTA_HotelRateAmountNotifRS / Errors / Error / @Type 1 integer The OpenTravel Alliance EWT (Error Warning Type) associated with the error. Only the value 12 (Processing exception) is used.
OTA_HotelRateAmountNotifRS / Errors / Error / @Code 1 integer The OpenTravel Alliance ERR (Error Code) associated with the error. Only the value 450 (Unable to process) is used.
OTA_HotelRateAmountNotifRS / Errors / Error / @Code 1 enum The status of the original request. Only the value NotProcessed is used.
OTA_HotelRateAmountNotifRS / Errors / Error / @ShortText 1 string The Google identifier for the issue. Details on these errors can be found in Feed Status Error Messages.

Examples

Success

The following is a response to a successfully processed OTA_HotelRateAmountNotifRQ message.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05"
                       EchoToken="12345678"
                       TimeStamp="2021-10-20T20:50:37-05:00"
                       Version="3.0">
  <Success/>
</OTA_HotelRateAmountNotifRS>

Errors

The following is a response to a OTA_HotelRateAmountNotifRQ message not processed due to errors.

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05"
                       EchoToken="12345678"
                       TimeStamp="2021-10-20T20:50:37-05:00"
                       Version="3.0">
  <Errors>
    <Error Type="12" Code="450" Status="NotProcessed" ShortText="8001">Example</Error>
  </Errors>
</OTA_HotelRateAmountNotifRS>