# PMS -> SM

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

{% hint style="warning" %}
**Pricing Model Configuration**: The pricing model (PDP or OBP) is configured at the PMS/RMS 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**: The **Included Occupancy** value must be set by each property in their SiteMinder Platform for all room rates before sending OBP updates.
{% endhint %}

## Integration Requirements

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

<table data-header-hidden><thead><tr><th width="199.954833984375">Category</th><th>Requirement</th></tr></thead><tbody><tr><td><strong>Web Service Endpoint</strong></td><td><ul><li>SiteMinder will provide a single global endpoint for all hotels for PMS to send update requests <code>OTA_HotelRateAmountNotifRQ</code> and receive confirmation responses <code>OTA_HotelRateAmountNotifRS</code>.</li><li><strong>Test Environment Endpoint:</strong> <a href="https://tpi-pmsx.preprod.siteminderlabs.com/webservices/%7BRequestorID%7D">https://tpi-pmsx.preprod.siteminderlabs.com/webservices/{RequestorID}</a></li></ul></td></tr><tr><td><strong>Authentication</strong></td><td><ul><li>SiteMinder will provide a single username/password for all hotels (PMS Level authentication).</li><li>PMS must include authentication credentials within the <strong>SOAP Security header</strong> of each request <code>OTA_HotelRateAmountNotifRQ</code>.</li></ul></td></tr><tr><td><strong>Message Structure</strong></td><td><ul><li>All messages must adhere to the SOAP message format.</li><li>OTA message must be encapsulated within the SOAP Body.</li><li>Requests must include a SOAP Security Header for authentication.</li><li>Responses will be returned in a SOAP envelope with empty SOAP Header.</li></ul></td></tr><tr><td><strong>Content-Type</strong></td><td><code>text/xml; charset=utf-8</code></td></tr><tr><td><strong>Version</strong></td><td><code>SOAP 1.1</code></td></tr><tr><td><strong>Protocol &#x26; Security</strong></td><td><ul><li>All communication must occur over <strong>HTTPS</strong> using <strong>TLS 1.2 or higher</strong>.</li><li>Non-secure (HTTP) connections are <strong>not permitted</strong>.</li><li>Communication is synchronous request/response pairs.</li><li>Each message is atomic - processed entirely or not at all.</li></ul></td></tr></tbody></table>

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

{% hint style="info" %}
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).
{% endhint %}

{% tabs %}
{% tab title="Rates Update" %}
Requests must include a SOAP Security Header for authentication.

```xml
<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">PASSWORD</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>
```

{% endtab %}

{% tab title="Confirmation Response" %}
Responses must be returned in a SOAP envelope with an empty SOAP Header.

```xml
<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>
```

{% endtab %}
{% endtabs %}

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

<table><thead><tr><th width="94">M</th><th>Definition</th></tr></thead><tbody><tr><td><strong>1</strong></td><td>The element or attribute must be present exactly once.</td></tr><tr><td><strong>0..1</strong></td><td>The element or attribute is optional; it can be present zero or one time.</td></tr><tr><td><strong>0..n</strong></td><td>The element or attribute can be present zero or more times, with no upper limit (where <strong>n</strong> represents an infinite number of occurrences).</td></tr><tr><td><strong>1..n</strong></td><td>The element or attribute must be present at least once and can be present any number of times, with no upper limit.</td></tr><tr><td><strong>n..m</strong></td><td>Specific range, the element or attribute must be present at least <strong>n</strong> times and no more than <strong>m</strong> times (where <strong>n</strong> and <strong>m</strong> are specific numbers).</td></tr></tbody></table>

## **1. Rates Update**

{% hint style="info" %}
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.
{% endhint %}

### Per Day Pricing (PDP) <a href="#per-day-pricing" id="per-day-pricing"></a>

PDP refers to a pricing model where rates are set for each individual day. Under this model, the rate for a room rate is determined on a daily basis, allowing for different prices on different days. The rate updates for PDP will specify rates for each date within the defined range, allowing for precise daily rate management.

{% tabs %}
{% tab title="Per Day Pricing" %}

```xml
<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 AmountAfterTax="123.00"/> <!-- Base Rate -->
					</BaseByGuestAmts>
				</Rate>
			</Rates>
		</RateAmountMessage>
		<!-- Additional RateAmountMessage elements -->
	</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>
```

{% endtab %}
{% endtabs %}

### Occupancy Based Pricing (OBP)

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 additional functionalities are supported:

* Extra Adult Rate
* Extra Child Rate

{% tabs %}
{% tab title="Occupancy Based Pricing" %}

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

```xml
<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>
```

{% endtab %}
{% endtabs %}

### Migrate from PDP to OBP <a href="#migrate-from-pdp-to-obp" id="migrate-from-pdp-to-obp"></a>

Existing partners transitioning from **Per Day Pricing** to **Occupancy Based Pricing**:

**Included Occupancy Requirement**: The **Included Occupancy** value must be set by each property in their SiteMinder Platform for all room rates before sending OBP updates.

{% hint style="warning" %}
**Simplifying Property Configuration**: SiteMinder is developing tools to streamline the Included Occupancy setup process. Partners implementing OBP must also certify the [**PMS** **Rooms and Rates**](/pmsxchange-api/reference/rooms-and-rates/pms-to-sm.md) component, which will enable automated configuration in the future.
{% endhint %}

#### Migration Process:

1. **Build and Certify OBP** in test environment with `BaseByGuestAmts` per occupancy (1-5) and optional `AdditionalGuestAmounts`
2. **Property Configuration:** Included Occupancy must be set in SiteMinder Platform for all properties connected to your system for all room rates.
3. **Coordinate Cutover:** As migration is PMS level, affecting all properties under your PMS code simultaneously.
4. **Deploy and Switch:** SiteMinder switches pricing model during agreed window; all rate updates must use OBP format after cutover.

{% hint style="info" %}
If properties want to maintain flat per day pricing, send the same rate amount for all occupancies in OBP format, this behaves like PDP but uses the OBP message structure.
{% endhint %}

<table><thead><tr><th width="268">Element/Attribute</th><th width="108">Type</th><th width="60" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><code>OTA_HotelRateAmountNotifRQ</code></td><td>Element</td><td align="center">1</td><td>Root element for the request.</td></tr><tr><td><code>@xmlns</code></td><td>String</td><td align="center">1</td><td>Defines the XML namespace for the request. Will be set to <code>http://www.opentravel.org/OTA/2003/05</code></td></tr><tr><td><code>@EchoToken</code></td><td>String</td><td align="center">1</td><td>Unique identifier for the request, used to match requests and responses.</td></tr><tr><td><code>@TimeStamp</code></td><td>DateTime</td><td align="center">1</td><td>Time when the request was generated.</td></tr><tr><td><code>@Version</code></td><td>String</td><td align="center">1</td><td>Specifies the API version. Will be set to <code>1.0</code>.</td></tr><tr><td><code>POS / Source / RequestorID</code></td><td></td><td align="center">1</td><td></td></tr><tr><td><code>@Type</code></td><td></td><td align="center">1</td><td>Fixed at <code>22</code> (ESRP)</td></tr><tr><td><code>@ID</code></td><td></td><td align="center">1</td><td></td></tr><tr><td><code>RateAmountMessages</code></td><td>Element</td><td align="center">1</td><td>Container for rate status messages.</td></tr><tr><td><code>@HotelCode</code></td><td>String</td><td align="center">1</td><td>Identifier for the hotel.</td></tr><tr><td><code>RateAmountMessage</code></td><td>Element</td><td align="center">1..n</td><td>Single rate status message.</td></tr><tr><td><code>StatusApplicationControl</code></td><td>Element</td><td align="center">1</td><td>Contains date and room identification information. <strong>Note:</strong> No overlapping dates allowed.</td></tr><tr><td><code>@InvTypeCode</code></td><td>String</td><td align="center">1</td><td>Identifies the room.</td></tr><tr><td><code>@RatePlanCode</code></td><td>String</td><td align="center">0..1</td><td>Identifies the rate.</td></tr><tr><td><code>Rates</code></td><td>Element</td><td align="center">1</td><td>Container for rate information.</td></tr><tr><td><code>Rate</code></td><td>Element</td><td align="center">1</td><td>Contains individual rate information.</td></tr><tr><td><code>@CurrencyCode</code></td><td>String</td><td align="center">1</td><td>Use ISO 4217 currency codes.</td></tr><tr><td><code>@Start</code></td><td>Date</td><td align="center">1</td><td>The start date for which the update is being set. This date is inclusive.</td></tr><tr><td><code>@End</code></td><td>Date</td><td align="center">1</td><td>The end date for which the update is being set. This date is inclusive.</td></tr><tr><td><code>Mon</code>, <code>Tue</code>, <code>Weds</code>, <code>Thur</code>, <code>Fri</code>, <code>Sat</code>, <code>Sun</code></td><td></td><td align="center">0..1</td><td><p>The <strong>day-of-week indicators</strong> are used to specify which days a rate update applies to. These indicators accept values of <code>"0"</code> or <code>"1"</code>, where:</p><ul><li><strong><code>"1"</code></strong> indicates the update applies to that day.</li><li><strong><code>"0"</code></strong> indicates the update does not apply to that day.</li></ul></td></tr><tr><td><code>BaseByGuestAmts</code></td><td>Element</td><td align="center">1</td><td>Base charge for a given number of guests.</td></tr><tr><td><code>BaseByGuestAmt</code></td><td>Element</td><td align="center">1</td><td>Contains individual rate amounts.</td></tr><tr><td><code>@AmountAfterTax</code></td><td>Decimal</td><td align="center">0..1</td><td><p>Either <code>@AmountAfterTax</code> or <code>@AmountBeforeTax</code> must be included.</p><p>Positive decimal value for the rate amount after tax.</p></td></tr><tr><td><code>@AmountBeforeTax</code></td><td>Decimal</td><td align="center">0..1</td><td>Either <code>@AmountAfterTax</code> or <code>@AmountBeforeTax</code> must be included. Positive decimal value for the rate amount after tax.</td></tr><tr><td><code>@NumberOfGuests</code></td><td>Integer</td><td align="center">0..1</td><td>Number of guests in the room. <strong>Mandatory for OBP</strong>.</td></tr><tr><td><code>@AgeQualifyingCode</code></td><td>Element</td><td align="center">0..1</td><td><p>Age qualification for the rate:</p><p><code>10</code> Adult</p><p><strong>Mandatory for OBP</strong>.</p></td></tr><tr><td><code>AdditionalGuestAmounts</code></td><td>Element</td><td align="center">0..1</td><td><strong>For OBP:</strong> Additional charges for extra guests based on age qualification.</td></tr><tr><td><code>AdditionalGuestAmount</code></td><td>Element</td><td align="center">0..2</td><td><strong>For OBP:</strong> Contains details of extra guest charges.</td></tr><tr><td><code>@AgeQualifyingCode</code></td><td>String</td><td align="center">1</td><td><p>Age qualification for the extra guest charge:</p><p><code>10</code> Adult</p><p><code>8</code> Child</p></td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">1</td><td>Extra charge amount.</td></tr><tr><td><code>@CurrencyCode</code></td><td>String</td><td align="center">0..1</td><td>Use ISO 4217 currency codes.</td></tr></tbody></table>

## 2. **Confirmation Response**

{% tabs %}
{% tab title="Success" %}

```xml
<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>
```

{% endtab %}

{% tab title="Authentication Error" %}

```xml
<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">
			<Errors>
				<Error Type="4">Authentication failed - PMS received request with invalid username/password</Error>
    			</Errors>
		</OTA_HotelRateAmountNotifRS>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}

{% tab title="Incorrect HotelCode" %}

```xml
<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">
			<Errors>
				<Error Type="6">PMS is not authorized to access hotel with HotelCode=XXXXX</Error>
    			</Errors>
		</OTA_HotelRateAmountNotifRS>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}

{% tab title="Rates OBP Error" %}

```xml
<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">
			<Errors>
				<Error Type="3">NumberOfGuests must be equal or between 1 to 5</Error>
    			</Errors>
		</OTA_HotelRateAmountNotifRS>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="269">Element / @Attribute</th><th width="108">Type</th><th width="59" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><code>OTA_HotelRateAmountNotifRS</code></td><td>Element</td><td align="center">1</td><td>Root element for the response.</td></tr><tr><td><code>@xmlns</code></td><td>String</td><td align="center">1</td><td>Defines the XML namespace for the request. Will be set to <code>http://www.opentravel.org/OTA/2003/05</code></td></tr><tr><td><code>@EchoToken</code></td><td>String</td><td align="center">1</td><td>Unique identifier for the request, used to match requests and responses.</td></tr><tr><td><code>@TimeStamp</code></td><td>DateTime</td><td align="center">1</td><td>Time when the response was generated.</td></tr><tr><td><code>@Version</code></td><td>String</td><td align="center">1</td><td>Specifies the API version. Must be set to <code>1.0</code>.</td></tr><tr><td><code>Success</code></td><td>Element</td><td align="center">0..1</td><td>Indicates successful processing of the request.</td></tr><tr><td><code>Errors</code></td><td>Element</td><td align="center">0..1</td><td>Indicates an error occurred during the processing of the request.</td></tr><tr><td><code>Error</code></td><td>Element</td><td align="center">1..n</td><td>Single error information containing free text.</td></tr><tr><td><code>@Type</code></td><td>Integer</td><td align="center">1</td><td>Type of error. Refer to <a href="https://developer.siteminder.com/sm-apis/additional-resources/reference-tables/error-warning-types-ewt">Error Warning Types (EWT)</a>.</td></tr><tr><td><code>@Code</code></td><td>Integer</td><td align="center">0..1</td><td>Code representing the error. Refer to <a href="/pages/4gDxPCSFeyblWHTelhiH">Error Codes (ERR)</a>.</td></tr></tbody></table>

## Common Questions

<details>

<summary>What is the difference between PDP and OBP?</summary>

* PDP (Per Day Pricing): Single rate per room per night.\
  Example: $100/night for a Double Room (any occupancy)
* OBP (Occupancy Based Pricing): Rates vary by guest count.\
  Example: $80 (1 guest), $100 (2 guests), $120 (3 guests), $140 (4 guests), $160 (5 guests).

Choose the pricing model that matches how your PMS stores rates. You only need to certify one model during integration.

</details>

<details>

<summary>How often should I send rates updates?</summary>

Send delta updates in real-time as changes occur in your PMS (within 2 minutes).

Only send data that has changed - do not resend unchanged rates.

</details>

<details>

<summary>Can I send full flushes daily to ensure complete synchronization?</summary>

No. Full flushes are only for initial setup or when requested by SiteMinder support.

Delta updates (changes only) are required in production. Frequent full flushes cause system overload and must be avoided.

</details>

<details>

<summary>When rates change for a date, do I need to include all data in the message?</summary>

No. Send changes only for the specific room type and rate plan that changed - do not include other room types or rate plans.

</details>

<details>

<summary>How many dates in advance does SiteMinder support?</summary>

Up to 750 days in the future.

Properties can configure their inventory distribution window between 400-750 days based on their preferences.

</details>

<details>

<summary>Do you support Weekly, Monthly or Package Rates?</summary>

Only daily rates are supported.

* **Weekly/Monthly**: Not supported - send daily rates instead
* **Packages** (room + extras): Include all charges in your daily rate amount

</details>

<details>

<summary>How do I send Extra / Supplement / Discount rates to SiteMinder?</summary>

Send your full daily rate including all extras - SiteMinder does not support separate supplement charges.

**Your rate should include:**

* Base room rate
* Any included extras (breakfast, parking, etc.)
* Any supplements or add-ons

**Channel discounts/promotions:** Managed by channels, not sent via pmsXchange.

</details>

<details>

<summary>Do you support Seasonal Rates?</summary>

pmsXchange does not currently support Seasonal Rates. However, you may use Stop Sell restrictions to control when rate plans are available.

Create separate rate plans for each season and use Stop Sell to open/close them for the appropriate date ranges.

</details>

<details>

<summary>For OBP, is pricing per adult or per guest (adults + children)?</summary>

Per adult only. `NumberOfGuests` represents the number of adults in the room.

Use `AgeQualifyingCode="10"` with `NumberOfGuests` (1-5) to specify rates for different adult counts. Child charges are handled separately using the `AdditionalGuestAmounts` element.

</details>

{% hint style="success" icon="sparkles" %}

## Still have questions?

Use the <i class="fa-gitbook-assistant">:gitbook-assistant:</i> **Ask** button at the top of the page to chat with our AI assistant — it can help you navigate the guide, understand requirements, and troubleshoot issues.

If you need more support, visit [Integration Support](/integration-support/integration-support.md).
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.siteminder.com/pmsxchange-api/reference/rates/pms-to-sm.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
