Rates
Message Exchange Workflow
OTA_HotelRateAmountNotifRQ- request made by SiteMinder to the Booking Channel endpoint.OTA_HotelRateAmountNotifRS- response sent by the Booking Channel.
Request
Per Day Pricing
Example of a Rates XML that does not support any additional rate features. Note the absence of the @NumberOfGuests attribute. By default, SiteConnect assumes the Included Occupancy for incoming rates is set on the Booking Channel side.
@NumberOfGuests attribute is ONLY present if you're using our Included Occupancy and/or Single Guest Discount features and the hotel configures the Included Occupancy / Single Guest Discount value(s) within the 'Channel Settings' for your particular channel.
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2025-07-06T15:27:41+00:00" Version="1.0">
<RateAmountMessages HotelCode="HOTELCODE">
<RateAmountMessage>
<StatusApplicationControl End="2025-10-05" InvTypeCode="SGL" RatePlanCode="BAR" Start="2025-10-05"/>
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="300.00" CurrencyCode="EUR"/>
</BaseByGuestAmts>
<RateDescription>
<Text>Contemporary 1 Bedroom Apartment with private balcony.</Text> <!-- Inclusions -->
</RateDescription>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>Once Included Occupancy is enabled, it will be a mandatory field for the hotelier to fill in while mapping the room. @NumberOfGuests attribute will be present indicating the base included occupancy for the rate.
<OTA_HotelRateAmountNotifRQ
xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2025-07-06T15:27:41+00:00" Version="1.0">
<RateAmountMessages HotelCode="HOTELCODE">
<RateAmountMessage>
<StatusApplicationControl End="2025-10-05" InvTypeCode="SGL" RatePlanCode="BAR" Start="2025-10-05"/>
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="300.00" CurrencyCode="EUR" NumberOfGuests="3"/>
</BaseByGuestAmts>
<RateDescription>
<Text>Contemporary 1 Bedroom Apartment with private balcony.</Text> <!-- Inclusions -->
</RateDescription>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>@NumberOfGuests="1" stands for a 'Single Guest Discount' and does NOT represent 'Included Occupancy'. the below XML only shows that 100 EUR discount is applied for a single guest occupancy, without specifying 'Included Occupancy' for this particular room rate.
The absence of @NumberOfGuests in one of BaseByGuestAmt elements indicates that the 'Included Occupancy' feature is not supported.
<OTA_HotelRateAmountNotifRQ
xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2025-07-06T15:27:41+00:00" Version="1.0">
<RateAmountMessages HotelCode="HOTELCODE">
<RateAmountMessage>
<StatusApplicationControl End="2025-10-05" InvTypeCode="SGL" RatePlanCode="BAR" Start="2025-10-05"/>
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="200.00" CurrencyCode="EUR" NumberOfGuests="1"/> <!-- Single Guest Discount applied -->
<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="300.00" CurrencyCode="EUR"/>
</BaseByGuestAmts>
<RateDescription>
<Text>Contemporary 1 Bedroom Apartment with private balcony.</Text> <!-- Inclusions -->
</RateDescription>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>Both fields, Included Occupancy and Single Guest Discount fields are enabled in SiteMinder for the hotel to add the values during the mapping.
<OTA_HotelRateAmountNotifRQ
xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2025-07-06T15:27:41+00:00" Version="1.0">
<RateAmountMessages HotelCode="HOTELCODE">
<RateAmountMessage>
<StatusApplicationControl End="2025-10-05" InvTypeCode="SGL" RatePlanCode="BAR" Start="2025-10-05"/>
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="200.00" CurrencyCode="EUR" NumberOfGuests="1"/><!-- Single Guest Discount applied -->
<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="300.00" CurrencyCode="EUR" NumberOfGuests="3"/><!-- Included Occupancy -->
</BaseByGuestAmts>
<RateDescription>
<Text>Contemporary 1 Bedroom Apartment with private balcony.</Text> <!-- Inclusions -->
</RateDescription>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>These features can also be supported individually. For instance:
If your channel supports Extra Adult Rate only, the XML would consist of a single AdditionalGuestAmount element containing @AgeQualifyingCode="10" (value for Adult).
If your channel supports Extra Child Rate only, the XML would consist of a single AdditionalGuestAmount element containing @AgeQualifyingCode="8" (value for Child).
<OTA_HotelRateAmountNotifRQ
xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2025-07-06T15:27:41+00:00" Version="1.0">
<RateAmountMessages HotelCode="HOTELCODE">
<RateAmountMessage>
<StatusApplicationControl End="2025-10-05" InvTypeCode="SGL" RatePlanCode="BAR" Start="2025-10-05"/>
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="300.00" CurrencyCode="EUR"/>
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount AgeQualifyingCode="10" Amount="100" CurrencyCode="EUR"/> <!-- Extra Adult Rate -->
<AdditionalGuestAmount AgeQualifyingCode="8" Amount="50" CurrencyCode="EUR"/> <!-- Extra Child Rate -->
</AdditionalGuestAmounts>
<RateDescription>
<Text>Contemporary 1 Bedroom Apartment with private balcony.</Text> <!-- Inclusions -->
</RateDescription>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ><OTA_HotelRateAmountNotifRQ
xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2025-07-06T15:27:41+00:00" Version="1.0">
<RateAmountMessages HotelCode="HOTELCODE">
<RateAmountMessage>
<StatusApplicationControl End="2025-10-05" InvTypeCode="SGL" RatePlanCode="BAR" Start="2025-10-05"/>
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="200.00" CurrencyCode="EUR" NumberOfGuests="1"/><!-- Single Guest Discount applied -->
<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="300.00" CurrencyCode="EUR" NumberOfGuests="3"/><!-- Included Occupancy -->
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount AgeQualifyingCode="10" Amount="100" CurrencyCode="EUR"/> <!-- Extra Adult Rate -->
<AdditionalGuestAmount AgeQualifyingCode="8" Amount="50" CurrencyCode="EUR"/> <!-- Extra Child Rate -->
</AdditionalGuestAmounts>
<RateDescription>
<Text>Contemporary 1 Bedroom Apartment with private balcony.</Text> <!-- Inclusions -->
</RateDescription>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>Occupancy Based Pricing
If Occupancy Based Pricing is enabled, the AdditionalGuestAmount for AgeQualifyingCode=”10” is no longer included in the XML.
AdditionalGuestAmount will only contain AgeQualifyingCode=”8” if your integration supports Extra Child Rate.
<OTA_HotelRateAmountNotifRQ
xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
<RateAmountMessages HotelCode="HOTELCODE">
<RateAmountMessage>
<StatusApplicationControl End="2024-10-05" InvTypeCode="SGL" RatePlanCode="BAR" Start="2024-10-05"/>
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="100.00" CurrencyCode="EUR" NumberOfGuests="1"/>
<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="200.00" CurrencyCode="EUR" NumberOfGuests="2"/>
<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="300.00" CurrencyCode="EUR" NumberOfGuests="3"/>
<BaseByGuestAmt AgeQualifyingCode="10" AmountAfterTax="400.00" CurrencyCode="EUR" NumberOfGuests="4"/>
<!-- Additional BaseByGuestAmt elements -->
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount AgeQualifyingCode="8" Amount="50" CurrencyCode="EUR"/> <!-- Extra Child Rate -->
</AdditionalGuestAmounts>
<RateDescription>
<Text>Contemporary 1 Bedroom Apartment with private balcony.</Text> <!-- Inclusions -->
</RateDescription>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>Specification
OTA_HotelRateAmountNotifRS
Element
1
Root element for the request.
@xmlns
String
1
Defines the XML namespace for the request. Will be set to http://www.opentravel.org/OTA/2003/05
@EchoToken
String
1
Unique identifier for the request, used to match requests and responses.
@TimeStamp
DateTime
1
Time when the request was generated.
@Version
String
1
Specifies the API version. Will be set to 1.0.
RateAmountMessages
Element
1
Container for rate status messages.
@HotelCode
String
1
Identifier for the hotel.
RateAmountMessage
Element
1..n
Single rate status message.
StatusApplicationControl
Element
1
Contains date and room identification information.
@Start
Date
1
The start date for which the update is being set. This date is inclusive.
@End
Date
1
The end date for which the update is being set. This date is inclusive.
@InvTypeCode
Integer
1
Identifies the room.
@RatePlanCode
Element
0..1
Identifies the rate.
Rates
String
1
Container for rate information.
Rate
String
1
Contains individual rate information.
BaseByGuestAmts
Element
1
Base charge for a given number of guests.
BaseByGuestAmt
Element
1..n
Contains individual rate amounts.
@AmountAfterTax
Decimal
1
Positive decimal value for the rate amount after tax.
@NumberOfGuests
Integer
0..1
Number of guests in the room. Mandatory for OBP.
@AgeQualifyingCode
Element
0..1
Age qualification code for the rate:
10 Adult
Mandatory for OBP.
@CurrencyCode
String
0..1
Use ISO 4217 currency codes.
AdditionalGuestAmounts
Element
0..1
Additional charges for extra guests based on age qualification.
AdditionalGuestAmount
Element
0..2
Contains details of extra guest charges.
@AgeQualifyingCode
String
1
Age qualification code for the extra guest charge:
10 Adult (only for PDP)
8 Child
@Amount
Decimal
1
Extra charge amount.
@CurrencyCode
String
0..1
Use ISO 4217 currency codes.
RateDescription
Element
0..1
Description of what the rate includes.
Text
Element
1
Inclusion text (maximum 255 characters).
Response
Examples
<OTA_HotelRateAmountNotifRS
xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
<Success/>
</OTA_HotelRateAmountNotifRS><OTA_HotelRateAmountNotifRS
xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
<Errors>
<Error Type="6" Code="392">Hotel not found for HotelCode=HOTELCODE</Error>
</Errors>
</OTA_HotelRateAmountNotifRS>Specification
OTA_HotelRateAmountNotifRS
Element
1
Root element for the response.
@xmlns
String
1
Defines the XML namespace for the request. Will be set to http://www.opentravel.org/OTA/2003/05
@EchoToken
String
1
Unique identifier for the request, used to match requests and responses.
@TimeStamp
DateTime
1
Time when the response was generated.
@Version
String
1
Specifies the API version. Must be set to 1.0.
Success
Element
0..1
Indicates successful processing of the request.
Errors
Element
0..1
Indicates an error occurred during the processing of the request.
Error
Element
1..n
Single error information containing free text.
Help Centre
Last updated
Was this helpful?