Rates

Sync pricing from your PMS to SiteMinder for channel distribution.

What is Rates

Rates is an update method where the Property Management System (PMS) actively sends room pricing information to the SiteMinder Platform for distribution across all connected channels. This integration ensures that all booking channels receive synchronized rate updates in real-time, maintaining accurate pricing across your distribution network 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.

Integration Requirements

Understand the essential requirements for API integration, including connectivity, authentication, message formats, and security protocols.

Web Service Endpoint

  • SiteMinder will provide a single global endpoint for all hotels for PMS to send update requests OTA_HotelRateAmountNotifRQ and receive confirmation responses OTA_HotelRateAmountNotifRS.

Authentication

  • SiteMinder will provide a single username/password for all hotels (PMS Level authentication).

  • PMS must include authentication credentials within the SOAP Security header of each request OTA_HotelRateAmountNotifRQ.

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 will 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.

Message Exchange Flow

When your PMS needs to update room pricing, it sends updates to SiteMinder using a synchronous SOAP/HTTPS exchange. SiteMinder then distributes these updates to all connected channels in real-time. Each update triggers a simple request-response cycle.

  1. Rates Update (PMS to SiteMinder): OTA_HotelRateAmountNotifRQ Delivers 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.

  2. Confirmation Response (SiteMinder to PMS): OTA_HotelRateAmountNotifRS Confirms successful receipt and processing or reports validation errors.

Security Header

The Security Header is a mandatory SOAP header that authenticates every reservation request from your PMS to SiteMinder endpoint. It contains the username and password credentials that we provide to the PMS during integration setup.

Key Requirements:

  • Validation: Our 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.

The only acceptable value for the Password @Type attribute is http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText. Plain text passwords are acceptable as all communication is done over encrypted HTTP (HTTPS).

Requests must include a SOAP Security Header for authentication.

<SOAP-ENV:Envelope
	xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
	<SOAP-ENV:Header>
		<wsse:Security
			xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" SOAP-ENV:mustUnderstand="1">
			<wsse:UsernameToken>
				<wsse:Username>USERNAME</wsse:Username>
				<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">VKcYa3ShbPkp2AqgFcTsjK</wsse:Password>
			</wsse:UsernameToken>
		</wsse:Security>
	</SOAP-ENV:Header>
	<SOAP-ENV:Body>
		<OTA_HotelRateAmountNotifRQ
			xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:41+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c">
			<!-- ... other elements and attributes have been omitted for brevity ... -->
		</OTA_HotelRateAmountNotifRQ>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

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.

M
Definition

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

To set Rates, it is mandatory to include the @CurrencyCode attribute in the RateAmountMessage. The rate value provided will be applied directly to SiteMinder without any currency conversion by SiteMinder. Therefore, ensure that the specified rate is in the correct currency as no conversion will be performed.

  • Only adult occupancy rates are supported, indicated by @AgeQualifyingCode="10". Child occupancy rates are not supported in the primary rate structure.

  • The @NumberOfGuests attribute must specify adult occupancy as a positive integer between 1 and 5. Sending a value greater than 5 will result in an error.

  • If certain occupancy levels are missing in the request, SiteMinder will automatically backfill those levels with the provided rate. For example, if only @NumberOfGuests="3" is received, the same rate will apply to occupancies of 1 and 2 guests.

  • While child occupancy rates are not directly supported in the primary rate setup, the AdditionalGuestAmounts element provides a way to include specific charges for extra adults and children as needed.

<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">
	<POS>
		<Source>
			<RequestorID Type="22" ID="PMSCODE"/>
		</Source>
	</POS>
	<RateAmountMessages HotelCode="HOTEL">
		<RateAmountMessage>
			<StatusApplicationControl InvTypeCode="SUP" RatePlanCode="BAR"/>
			<Rates>
				<Rate CurrencyCode="AUD" Start="2025-03-01" End="2025-03-14">
					<BaseByGuestAmts>
						<BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="100.00"/>
						<BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="2" AmountAfterTax="200.00"/>
						<BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="3" AmountAfterTax="250.00"/>
						<BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="4" AmountAfterTax="300.00"/>
						<BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="5" AmountAfterTax="350.00"/>
					</BaseByGuestAmts>
					<AdditionalGuestAmounts>
						<AdditionalGuestAmount AgeQualifyingCode="10" Amount="50"/> <!-- Extra Adult Rate -->
						<AdditionalGuestAmount AgeQualifyingCode="8" Amount="10"/> <!-- Extra Child Rate -->
					</AdditionalGuestAmounts>
				</Rate>
			</Rates>
		</RateAmountMessage>
		<!-- Additional RateAmountMessage elements -->
	</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>
Element/Attribute
Type
M
Description

OTA_HotelRateAmountNotifRQ

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.

POS / Source / RequestorID

1

@Type

1

Fixed at 22 (ESRP)

@ID

1

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. Note: No overlapping dates allowed.

@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.

@CurrencyCode

String

1

Use ISO 4217 currency codes.

@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.

Mon, Tue, Weds, Thur, Fri, Sat, Sun

0..1

The day-of-week indicators are used to specify which days a rate update applies to. These indicators accept values of "0" or "1", where:

  • "1" indicates the update applies to that day.

  • "0" indicates the update does not apply to that day.

BaseByGuestAmts

Element

1

Base charge for a given number of guests.

BaseByGuestAmt

Element

1

Contains individual rate amounts.

@AmountAfterTax

Decimal

0..1

Either @AmountAfterTax or @AmountBeforeTax must be included.

Positive decimal value for the rate amount after tax.

@AmountBeforeTax

Decimal

0..1

Either @AmountAfterTax or @AmountBeforeTax must be included. 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 for the rate:

10 Adult

Mandatory for OBP.

AdditionalGuestAmounts

Element

0..1

For OBP: Additional charges for extra guests based on age qualification.

AdditionalGuestAmount

Element

0..2

For OBP: Contains details of extra guest charges.

@AgeQualifyingCode

String

1

Age qualification 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.

2. Confirmation Response

<SOAP-ENV:Envelope
	xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
	<SOAP-ENV:Header/>
	<SOAP-ENV:Body>
		<OTA_HotelRateAmountNotifRS
			xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:41+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c">
			<Success/>
		</OTA_HotelRateAmountNotifRS>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Element / @Attribute
Type
M
Description

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.

@Type

Integer

1

Type of error. Refer to Error Warning Types (EWT).

@Code

Integer

0..1

Code representing the error. Refer to Error Codes (ERR).

Help Centre

Last updated

Was this helpful?