Rates
Sync pricing from SiteMinder Platform to your booking channel.
What is Rates?
Rates is an update method where the SiteMinder Platform actively sends room pricing information to the booking channel. This integration ensures that the booking channel receive synchronized rate updates in real-time, maintaining accurate pricing and maximizing revenue opportunities.
The API supports two pricing models:
Per Day Pricing (PDP): Base rates are set for each individual day, allowing different prices on different days. Rate updates specify rates for each date within the defined range, enabling precise daily rate management.
Occupancy Based Pricing (OBP): Rates vary based on the number of occupants in the room. Rate updates include pricing for various occupancy levels (single, double, triple, etc.), providing detailed pricing based on the number of guests.
Pricing Model Configuration: The pricing model (PDP or OBP) is configured at the booking channel level and applies to all properties connected to your integration. You cannot have some properties using Per Day Pricing while others use Occupancy Based Pricing.
For partners migrating from PDP to OBP: Your channel must provide the Maximum Occupancy for each room and rate code combination via Rooms and Rates for all connected properties. This data is required for an initial setup of the Maximum Occupancy values in our system.
Integration Requirements
Understand the essential requirements for API integration, including connectivity, authentication, message formats, and security protocols.
Web Service Endpoint
The booking channel will provide a single global endpoint for all hotels for SiteMinder to push
OTA_HotelRateAmountNotifRQmessages and receiveOTA_HotelRateAmountNotifRSresponses indicating success or failure.The endpoint must use a registered domain name.
Direct IP addresses are not supported and cannot be used as endpoints.
Authentication
The booking channel will provide a single username/password for all hotels.
SiteMinder will include authentication credentials within the SOAP Security header of each
OTA_HotelRateAmountNotifRQ.Credentials must follow a strong password policy: minimum of 12 characters, including a mix of uppercase and lowercase letters, numbers, and at least one special character (e.g.,
!@#?]).Do not use
<>&"'as they can cause issues with the Web Service.
Message Structure
All messages must adhere to the SOAP message format.
OTA message must be encapsulated within the SOAP Body.
Requests must include a SOAP Security Header for authentication.
Responses must be returned in a SOAP envelope with empty SOAP Header.
Content-Type
text/xml; charset=utf-8
Version
SOAP 1.1
Protocol & Security
All communication must occur over HTTPS using TLS 1.2 or higher.
Non-secure (HTTP) connections are not permitted.
Communication is synchronous request/response pairs.
Each message is atomic - processed entirely or not at all.
SiteMinder sends requests over port 443.
IP Whitelisting
Pre-Production IP addresses:
52.13.134.140
34.213.128.113
35.164.250.223
Production IP addresses will be provided during go-live.
Message Exchange Flow
When SiteMinder needs to update room pricing, it sends updates to your booking channel using a synchronous SOAP/HTTPS exchange. Each update triggers a simple request-response cycle.
Rates Update (SiteMinder to booking channel):
OTA_HotelRateAmountNotifRQDelivers rate values for specific room types and rate plans across defined date ranges. Rates can be configured as Per Day Pricing (PDP) with fixed amounts, or Occupancy Based Pricing (OBP) with rates varying by guest count.Confirmation Response (booking channel to SiteMinder):
OTA_HotelRateAmountNotifRSConfirms successful receipt and processing or reports validation errors.
Security Header
The Security Header is a mandatory SOAP header that authenticates every request from SiteMinder to your booking channel endpoint. It contains the username and password credentials that you provide to the SiteMinder during integration setup.
Key Requirements:
Validation: Your endpoint will validate these credentials on every request.
Scope: One set of credentials is used for all properties in your integration.
Security: Credentials are transmitted as plain text within the HTTPS encrypted channel.
Response: Invalid credentials will return a SOAP fault with appropriate error code.
Requests must include a SOAP Security Header for authentication.
Responses must be returned in a SOAP envelope with an empty SOAP Header.
Multiplicity
In the SOAP Specification tables below M refers to the number of instances or occurrences of an element or attribute that are allowed or required in a given context. It defines how many times a particular component (element or attribute) can appear within a specific structure.
1
The element or attribute must be present exactly once.
0..1
The element or attribute is optional; it can be present zero or one time.
0..n
The element or attribute can be present zero or more times, with no upper limit (where n represents an infinite number of occurrences).
1..n
The element or attribute must be present at least once and can be present any number of times, with no upper limit.
n..m
Specific range, the element or attribute must be present at least n times and no more than m times (where n and m are specific numbers).
1. Rates Update
Each Rate message contains a single RateAmountMessages element which indicates the hotel to update using the RateAmountMessages / HotelCode attribute. The RateAmountMessages / RateAmountMessage elements will contain the updates to process over a date range. There can be several RateAmountMessage updates per request, however, each request will be limited to one hotel and one room type.
Per Day Pricing
PDP refers to a pricing model where rates are set for each individual day. Under this model, the rate for a room type is determined on a daily basis, allowing for different prices on different days. The Rate API updates for PDP will specify rates for each date within the defined range, allowing for precise daily rate management. The below functionalities are supported:
Rates *
Included Occupancy
Single Guest Discount
Extra Adult Rate
Extra Child Rate
Inclusions
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.
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.
@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.
Both fields, Included Occupancy and Single Guest Discount fields are enabled in SiteMinder for the hotel to add the values during the mapping.
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).
Occupancy Based Pricing
OBP is a pricing model where rates vary based on the number of occupants in the room. Under this model, the rate changes depending on the number of guests staying in the room. The Rate updates for OBP will include rates for various occupancy levels, providing detailed pricing based on the number of guests. The below functionalities are supported:
Rates *
Included Occupancy *
Maximum Occupancy *
Single Guest Discount *
Extra Adult Rate *
Extra Child Rate
Inclusions
Default Included Occupancy: If no Included Occupancy value is set by the property, the SiteMinder assumes a default included occupancy of 2 guests.
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.
Uniform Rates for Undefined Settings: If the property has not set values for Included Occupancy, Single Guest Discount, or Extra Adult Rate, the SiteMinder will apply the same rate for all occupancy levels.
Migrate from PDP to OBP
Existing partners transitioning from Per Day Pricing to Occupancy Based Pricing:
Maximum Occupancy Requirement: Your channel must provide the Maximum Occupancy for each room and rate code combination via OTA_HotelAvailRS for all connected properties. This data is required for an initial setup of the Maximum Occupancy values in our system.
Migration Process: The switch from PDP to OBP occurs instantaneously for all properties on your channel simultaneously. Your endpoint must support both PDP and OBP message formats to handle the cutover, potential rollbacks, and the verification period. Only disable PDP parsing after Partner Integrations confirms migration stability across all properties.
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).
2. Confirmation Response
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.
Common Questions
What is the difference between Per Day Pricing (PDP) and Occupancy Based Pricing (OBP)?
Per Day Pricing (PDP):
Rates set for each individual day
Base rate applies to default occupancy (configured on booking channel)
Optional Included Occupancy via
NumberOfGuestsattributeExtra guest charges via
AdditionalGuestAmounts(both adults and children)Single Guest Discount shown as
NumberOfGuests="1"
Occupancy Based Pricing (OBP):
Rates vary based on number of guests
Separate rate for each occupancy level from 1 to Maximum Occupancy
NumberOfGuestsattribute mandatory for all ratesExtra Adult Rate not used (adult rates already included for each occupancy)
Only Extra Child Rate in
AdditionalGuestAmounts
How to identify:
PDP: May have single
BaseByGuestAmtor includeNumberOfGuestsfor Included OccupancyOBP: Multiple consecutive
BaseByGuestAmtelements (1, 2, 3, 4...) up to Maximum Occupancy
How often will I receive rate updates?
Update Frequency:
Rate updates sent every 2 minutes in coordination with ARI updates
Only changed values for specific room/rate/date combinations are sent
Maximum payload: 210 days per message
Important Dependency: Rate updates are sent after successful processing of availability and restrictions. If availability/restriction updates fail, rate updates will be queued until resolved.
Update Trigger: When rates change, all rate components are included:
Base rates for all occupancy levels (OBP) or base rate with optional Included Occupancy (PDP)
Extra guest rates (if configured)
Inclusions text (if configured)
Why am I receiving availability and restrictions updates but not rate updates?
This is expected behaviour. SiteConnect sends updates in a specific order:
Update Sequence:
First: Availability and Restrictions updates sent
Then: Rate updates sent only after successful availability/restrictions response
Action: Verify your endpoint is successfully processing and responding to availability/restrictions updates before expecting rate updates.
What does Included Occupancy mean?
Included Occupancy is the number of guests covered by the base rate.
For PDP (Per Day Pricing):
Indicated by
NumberOfGuestsattribute on base rate elementExample:
NumberOfGuests="2"means base price covers 2 guestsIf more guests allowed, extra charges can be added via
AdditionalGuestAmountsSingle Guest Discount can be applied with
NumberOfGuests="1"
For OBP (Occupancy Based Pricing):
Every rate has
NumberOfGuestsattribute (mandatory)Each occupancy level (1, 2, 3...) has its own complete rate
No "included occupancy" concept - each occupancy is explicitly priced
Default Behavior:
PDP: If
NumberOfGuestsnot present, booking channel uses its own defaultOBP: If hotel doesn't configure Included Occupancy, SiteMinder defaults to 2 guests as the base
What's the difference between NumberOfGuests="1" and Included Occupancy?
This depends on whether you're receiving PDP or OBP rates:
In PDP Messages:
NumberOfGuests="1"= Single Guest Discount (reduced rate for solo travellers)NumberOfGuests="2"or higher = Included Occupancy (base rate for that number of guests)If only one
BaseByGuestAmtwithoutNumberOfGuests= base rate with no occupancy specification
Example PDP with both:
This means: Rate for 1 guest is 200, rate for 3+ guests is 300, extra charges may apply for 4+ guests.
In OBP Messages:
NumberOfGuests="1"= Rate for 1 guest (part of occupancy-based pricing)All occupancy levels explicitly provided (1, 2, 3, 4...)
No "discount" concept - each occupancy has its own rate
Example OBP:
What happens if the Maximum Occupancy in SiteMinder doesn't match my channel's settings?
You must return an "Invalid number of adults" error when there's a mismatch.
Expected Behavior:
SiteMinder sends rates for 1 to Maximum Occupancy (consecutive)
Number of
BaseByGuestAmtelements = Maximum Occupancy valueYour channel must validate this matches your configured Maximum Occupancy
Error Response Examples:
Impact of Mismatched Maximum Occupancy:
If hotel reduces max occupancy (5 to 4): Rates for 5 guests no longer sent, potentially causing booking issues for 5-guest reservations
If hotel increases max occupancy (4 to 5): Your channel receives new rate for 5 guests
How many occupancy rates can I receive in an OBP message?
You will receive one rate for each occupancy level from 1 to the Maximum Occupancy.
Number of Rates:
Determined by
MaxOccupancyvalue provided in your Rooms and Rates responseValid range: 1 to 50
Always consecutive: 1, 2, 3, 4... up to max
Examples:
MaxOccupancy="3"→ 3 rates (for 1, 2, and 3 guests)MaxOccupancy="6"→ 6 rates (for 1, 2, 3, 4, 5, and 6 guests)
Message Size Considerations: Higher Maximum Occupancy values result in larger messages. Plan your parsing logic to handle up to 50 BaseByGuestAmt elements per rate update.
How does SiteConnect sync Extra Adult Rate, Extra Child Rate, and Single Guest Discount in an PDP?
Sync Behavior:
These values are rate plan level settings (not date-specific)
Once configured, a full sync is sent for the entire rate plan
All dates for that room/rate combination receive the same extra guest rates and discount
Update Trigger:
When hotel first configures these values
When hotel changes these values
During regular rate updates (included with base rates)
In Messages:
Extra Adult/Child Rates: Sent in
AdditionalGuestAmountssectionSingle Guest Discount: Sent as
BaseByGuestAmtwithNumberOfGuests="1"Applied across all dates in the message date range
Example: If a hotel sets Extra Adult Rate to 50 EUR for a rate plan, all future rate updates for that rate plan will include <AdditionalGuestAmount AgeQualifyingCode="10" Amount="50" CurrencyCode="EUR"/> regardless of the date range.
I added a Single Guest Discount and stopped receiving rate updates. Why?
This occurs when the Single Guest Discount results in a negative rate.
Example Problem:
Base rate: 50 EUR
Single Guest Discount: 60 EUR
Result: 50 - 60 = -10 EUR (negative rate)
System Behavior:
SiteMinder detects the negative rate
Rate updates for that room-rate combination stop being sent
Error prevents invalid pricing from reaching your channel
Resolution:
Hotel must adjust the Single Guest Discount to be less than the base rate
Once corrected, rate updates will resume
Best practice: Validate that Single Guest Discount ≤ Base Rate in your channel's hotel management interface
Are rates received from SiteConnect inclusive or exclusive of taxes?
All rates are sent in the AmountAfterTax attribute, but the actual tax inclusion depends on hotel configuration.
What SiteConnect Sends:
Attribute:
AmountAfterTax(always used)Value: Daily rate amount as configured by hotel
No explicit tax flag to indicate inclusive vs. exclusive
Common Practice:
Most hotels load all-inclusive rates (required by major channels like Booking.com, Expedia)
Your channel can handle rates on your extranet as you see fit
Critical: Hotel must be informed and agree on how rates are interpreted
Recommendation:
Document your channel's rate handling policy clearly
Communicate this to hotels during onboarding
Consider adding a toggle in your extranet if you support both models
We only support one currency. Can we work without receiving CurrencyCode?
Yes, you can request to have CurrencyCode disabled.
Default Behavior:
SiteConnect sends
CurrencyCodeattribute by defaultUses ISO 4217 currency codes (EUR, USD, GBP, etc.)
Allows properties to select currency to send
Single Currency Channels:
Request Partner Integrations team to disable
CurrencyCodeThis is a channel-level setting (applies to all properties)
Rate messages will be sent without the
CurrencyCodeattributeYour channel assumes your supported currency
Multi-Currency Support:
If you support multiple currencies, keep
CurrencyCodeenabledEach hotel can configure their preferred currency in SiteMinder
Only one currency per request (never mixed)
Will I receive both PDP and OBP messages during migration to Occupancy Based Pricing?
Yes, your channel must support both message formats during the migration period.
Migration Switch:
PDP to OBP migration happens simultaneously for all properties on your channel
The switch occurs instantaneously - all properties convert at once
Your endpoint must process both PDP and OBP messages to ensure continuity
Why Both Formats:
Handle the instantaneous cutover moment
Support potential rollback to PDP if issues occur
Maintain service during the verification period
When to Disable PDP: Only after SiteMinder Partner Integrations confirms:
All properties successfully receiving OBP updates
Verification period completed without issues
Migration is stable with no rollback required
How to Detect Format:
OBP: Multiple consecutive
BaseByGuestAmtwithNumberOfGuests="1","2","3"...PDP: Single or non-consecutive
BaseByGuestAmtelements
Help Centre
Last updated
Was this helpful?