AI-generated Key Takeaways
- 
          The OTA_HotelRateAmountNotifRQmessage is used to send hotel room rates, with recommended message size and upload rate limits.
- 
          The message uses an XML structure with elements to define notification type, scope, and optional partner account information. 
- 
          Rate updates specify date ranges, room types, and rate plans using StatusApplicationControl.
- 
          Pricing can include base rates for varying occupancy and additional amounts for extra guests, defined within BaseByGuestAmtsandAdditionalGuestAmounts.
- 
          The message supports per-date and LOS-based pricing, with specific guidance on how to structure these rates and recommendations on consistency per hotel. 
- 
          The response indicates success or provides error details, including specific types and codes for processing exceptions. 
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
         Valid values are: To understand how these attributes work, check out the examples. 
 | 
| OTA_HotelRateAmountNotifRQ / @NotifScopeType | 0..1 | enum | The scope of the  Valid values are: 
 | 
| 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  | 
| 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 startvalue.
        Ifstartandendare 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 trueor1to explicitly include
        Mondays.If set to  | 
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Tue | 0..1 | boolean | Set to trueor1to explicitly include
        Tuesdays.If set to  | 
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Weds | 0..1 | boolean | Set to trueor1to explicitly include
        Wednesdays.If set to  | 
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Thur | 0..1 | boolean | Set to trueor1to explicitly include
        Thursdays.If set to  | 
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Fri | 0..1 | boolean | Set to trueor1to explicitly include
        Fridays.If set to  | 
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Sat | 0..1 | boolean | Set to trueor1to explicitly include
        Saturdays.If set to  | 
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Sun | 0..1 | boolean | Set to trueor1to explicitly include
         Sundays.If set to  | 
| 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. IfNotifTypeis"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,
         | 
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / @UnitMultiplier | 0..1 | Integer | The number of RateTimeUnitswhich compose the length of
      stay for this rate.For example, if  The occupancy rate(s) specified under this  To use LOS-based pricing,
       | 
| 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 forNumberOfGuests.
        Otherwise, the price is applicable for a maximum number of occupants
        defined byNumberOfGuests. | 
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @AmountBeforeTax | 0..1 | float | The daily price of the room rate before taxes and fees.  Both  If you are using promotions, the
          discount is applied to  | 
| 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 AmountAfterTaxis specified, separate per-property<TaxFeeInfo>messages don't need to be sent. This
        attribute can be used in combination withAmountBeforeTaxto 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  Note: If  | 
| 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  | 
| 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
           
 For example, suppose that base rates are specified for 1 and 2 adults. 
 | 
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount | 0..n | AdditionalGuestAmount | Specifies prices based on the type of guest, specified through AgeQualifyingCodeand, if applicable, the guest's age
        specified throughMaxAge. | 
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @AgeQualifyingCode | 1 | enum | Defines the type of additional guest, either adult or child. Valid
        options are: 
 
 
 | 
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @MaxAge | 0..1 | integer | MaxAgemust be specified whenAgeQualifyingCodeis8. It must not be
        specified whenAgeQualifyingCodeis10.
 Specifying a value of  Values greater than  Multiple child age ranges can be specified through separate
           | 
| 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  | 
Examples
This section provides code examples that highlight how to:
- Set up base rates and total rates
- Add, overlay, and remove rates
- Add, overlay, and remove additional guest amounts
- Set up LOS-based rates
- Add, overlay, and remove LOS-based rates
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_HotelRateAmountNotifRQmessage. | 
| OTA_HotelRateAmountNotifRS / Success | 0..1 | Success | Indicates that the OTA_HotelRateAmountNotifRQmessage was
        processed successfully.Either  | 
| OTA_HotelRateAmountNotifRS / Errors | 0..1 | Errors | A container for one or more issues encountered while processing the OTA_HotelRateAmountNotifRQmessage.Either  | 
| OTA_HotelRateAmountNotifRS / Errors / Error | 1..n | Error | The description of an error encountered while processing the OTA_HotelRateAmountNotifRQmessage. 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 NotProcessedis 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>