# Changelog

### 2026

{% updates format="full" %}
{% update date="2026-01-01" tags="beta,added,rates" %}

## <sup>Rates: SM -> PMS</sup>

Receive real-time rate updates from SiteMinder to keep your PMS synchronized. More details in [Rates: SM -> PMS](https://siteminder-apis-beta-upgrade.gitbook.io/siteminder-apis-new/DOKB3juwFiYhvklwuL1W/pms-rms-pmsxchange/api-reference/rates/sm-to-pms).
{% endupdate %}

{% update date="2026-02-22" tags="beta,added,restrictions" %}

## <sup>Restrictions: SM -> PMS</sup>

Receive real-time restriction updates from SiteMinder to keep your PMS synchronized. More details in [Rates: SM -> PMS](https://siteminder-apis-beta-upgrade.gitbook.io/siteminder-apis-new/DOKB3juwFiYhvklwuL1W/pms-rms-pmsxchange/api-reference/rates/sm-to-pms).
{% endupdate %}

{% update date="2026-02-22" tags="beta,added,configuration" %}

## <sup>Room and Rates: PMS -> SM</sup>

Share room type and rate plan configurations from your PMS with the SiteMinder Platform. More details in [Rates: SM -> PMS](https://siteminder-apis-beta-upgrade.gitbook.io/siteminder-apis-new/DOKB3juwFiYhvklwuL1W/pms-rms-pmsxchange/api-reference/rates/sm-to-pms).
{% endupdate %}

{% update date="2026-02-22" tags="beta,added,reservations" %}

## <sup>Reservation Upload</sup>

Added additional reservation type scenarios to help facilitate improved reservation handling in the greater SiteMinder ecosystem. For more details see [POS/Source](https://developer.siteminder.com/siteminder-apis/pms-rms/introduction/pmsxchange/api-reference/reservations-upload#pos-source) and [HotelReservationIDs](https://developer.siteminder.com/siteminder-apis/pms-rms/introduction/pmsxchange/api-reference/reservations-upload#hotelreservationids) sections.

Sync PMS reservations back to SiteMinder Platform. More details in [Reservation Upload](https://siteminder-apis-beta-upgrade.gitbook.io/siteminder-apis-new/DOKB3juwFiYhvklwuL1W/pms-rms-pmsxchange/api-reference/reservations/upload-pms-to-sm).
{% endupdate %}
{% endupdates %}

### 2025

{% updates format="full" %}
{% update date="2025-01-01" tags="added,reservations" %}

## <sup>Guest Communication Flags</sup>

Added support for 'ShareAllOptOutInd' and 'ShareAllMarketInd' Reservation Customer flags for PMSX. More details in [Reservation Customer](https://siteminder-apis-beta-upgrade.gitbook.io/siteminder-apis-new/DOKB3juwFiYhvklwuL1W/pms-rms-pmsxchange/api-reference/reservations/push-sm-to-pms#customer-company-travelagent).
{% endupdate %}

{% update date="2026-02-22" tags="added,rates" %}

## <sup>Occupancy Based Pricing</sup>

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 include rates for various occupancy levels, providing detailed pricing based on the number of guests. More details in [Rates](https://siteminder-apis-beta-upgrade.gitbook.io/siteminder-apis-new/DOKB3juwFiYhvklwuL1W/pms-rms-pmsxchange/api-reference/rates/pms-to-sm).

{% code overflow="wrap" expandable="true" %}

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

{% endcode %}
{% endupdate %}
{% endupdates %}

### 2024

{% updates format="full" %}
{% update date="2024-01-01" tags="added,configuration" %}

## <sup>Rooms and Rates: SM -> PMS</sup>

This API enables a Property Management System (PMS) to request a list of Room Rates and mapping codes from SiteMinder for a specific hotel. Supports`JSON`. More details in [Rooms and Rates](https://siteminder-apis-beta-upgrade.gitbook.io/siteminder-apis-new/DOKB3juwFiYhvklwuL1W/pms-rms-pmsxchange/api-reference/rooms-and-rates/sm-to-pms).
{% endupdate %}

{% update date="2026-02-22" tags="added,payment" %}

## <sup>Non-Card Based Transactions</sup>

Updates the [Payment Transaction Record](https://siteminder-apis-beta-upgrade.gitbook.io/siteminder-apis-new/DOKB3juwFiYhvklwuL1W/pms-rms-pmsxchange/api-reference/payment-transaction-record) to support new payment methods that are non-card based (Ex: AliPay). `PaymentType="46"` for online payment.
{% endupdate %}

{% update date="2026-02-22" tags="added,reservations" %}

## <sup>Reservation Import</sup>

Bulk import active reservations from SiteMinder Platform to your PMS during initial integration setup. More details in [Reservation Import](https://siteminder-apis-beta-upgrade.gitbook.io/siteminder-apis-new/DOKB3juwFiYhvklwuL1W/pms-rms-pmsxchange/api-reference/reservations/import).
{% endupdate %}
{% endupdates %}

### 2022

{% updates format="full" %}
{% update date="2022-12-01" tags="added,payment" %}

## <sup>Payment Transaction Record</sup>

A one-way API that allows a PMS to retrieve reservation payment transaction data. These payment transactions are payments taken against a reservation via SiteMinder's Pay product. More details in [Payment Transaction Record](https://siteminder-apis-beta-upgrade.gitbook.io/siteminder-apis-new/DOKB3juwFiYhvklwuL1W/pms-rms-pmsxchange/api-reference/payment-transaction-record).
{% endupdate %}

{% update date="2026-06-07" tags="added,reservations" %}

## <sup>Local Card (LC)</sup>

SiteMinder has added support for the Payment Card Type - Local Card (LC). This card is primarily used in the South Korean market and reservations from HotelsCombined. `CardCode="LC"`.
{% endupdate %}
{% endupdates %}

### 2021

{% updates format="full" %}
{% update date="2021-10-20" tags="added,reservations" %}

## <sup>Profile / Customer / Document</sup>

The OTA\_ResRetrieveRS supports Customer / Document attributes to provide detailed document information for the guest (e.g. driver's license, passport, visa).

{% code overflow="wrap" expandable="true" %}

```xml
<Customer>
	<Document DocID="P123456" DocType="18" Gender="unknown" BirthDate="1920-02-29" BirthCountry="US" BirthPlace="Sydney" DocHolderNationality="AU" DocIssueAuthority="ImmigionNNNNNNNN" DocIssueCountry="AU" DocIssueLocation="Sydney" DocIssueStateProvince="QLD" EffectiveDate="2020-01-01" ExpireDate="2025-01-01">
		<DocumentHolderName>James Herbert</DocumentHolderName>
	</Document>
	...
</Customer>
```

{% endcode %}
{% endupdate %}
{% endupdates %}

### 2019

{% updates format="full" %}
{% update date="2019-09-16" tags="added,reservations" %}

## <sup>Strong Customer Authentication (SCA)</sup>

3DS data can now be delivered in reservations alongside payment card data. SCA functionality is opt-in.

{% code overflow="wrap" expandable="true" %}

```xml
<Guarantee>
    <GuaranteesAccepted>
        <GuaranteeAccepted>
            <PaymentCard CardType="1" CardCode="MC" CardNumber="4321432143214321" ExpireDate="1234">
                <CardHolderName>John Smith</CardHolderName>
                <ThreeDomainSecurity>
                    <Results ThreeDSVersion="1.0.2" XID="z9UKb06xLziZMOXBEmWSVA1kwG0=" CAVV="MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=" ECI="05" />
                </ThreeDomainSecurity>
            </PaymentCard>
        </GuaranteeAccepted>
    </GuaranteesAccepted>
</Guarantee>
```

{% endcode %}
{% endupdate %}
{% endupdates %}

### 2015

{% updates format="full" %}
{% update date="2015-10-16" tags="added,restrictions" %}

## <sup>Setting Maximum Stay</sup>

Setting maximum stay is achieved by including the LengthsOfStay element.

{% code overflow="wrap" expandable="true" %}

```xml
<AvailStatusMessages HotelCode="HOTEL">
	<AvailStatusMessage>
		<StatusApplicationControl Start="2025-03-01" End="2025-03-14" InvTypeCode="SUP" RatePlanCode="GLD"/>
		<LengthsOfStay>
			<LengthOfStay MinMaxMessageType="SetMinLOS" Time="2"/>
			<!-- Min Length of Stay -->
			<LengthOfStay MinMaxMessageType="SetMaxLOS" Time="5"/>
			<!-- Max Length of Stay -->
		</LengthsOfStay>
		<RestrictionStatus Status="Close"/>
		<!-- Stop Sell -->
	</AvailStatusMessage>
</AvailStatusMessages>
```

{% endcode %}
{% endupdate %}

{% update date="2015-08-26" tags="added,reservations" %}

## <sup>ResGlobalInfo / BasicPropertyInfo / HotelCode</sup>

Booking.com Cancellations are being sent without a RoomStay present. As a result, RoomStay / BasicPropertyInfo / @HotelCode is not present on Booking.com reservation cancellation messages. To remedy this, the @HotelCode is being added to ResGlobal / BasicPropertyInfo / @HotelCode, in addition to the current location RoomStay / BasicPropertyInfo / BasicPropertyInfo.

NB: If you currently use RoomStay / BasicPropertyInfo / @HotelCode and require the use of ResGlobal / BasicPropertyInfo / @HotelCode, you'll need to get in contact with <partner.integrations@siteminder.com> to get the change activated.
{% endupdate %}

{% update date="2015-06-17" tags="added,reservations" %}

## <sup>ResGuest / PrimaryIndicator</sup>

When true indicates this is the primary guest.

{% code overflow="wrap" expandable="true" %}

```xml
<ResGuest ResGuestRPH="1" ArrivalTime="10:30:00" Age="8" PrimaryIndicator="true">
```

{% endcode %}
{% endupdate %}

{% update date="2015-03-02" tags="added,reservations" %}

## <sup>Guarantee / MaskedCardNumber</sup>

May be used to send a concealed or partial credit card number (e.g. "xxxxxxxxxxxx4444" or "4444").

{% code overflow="wrap" expandable="true" %}

```xml
<GuaranteeAccepted>
	<PaymentCard CardCode="VI" CardType="1" MaskedCardNumber="4444" ExpireDate="1114">
		<CardHolderName>Jhon Ford</CardHolderName>
	</PaymentCard>
</GuaranteeAccepted>
```

{% endcode %}
{% endupdate %}

{% update date="2015-01-28" tags="added,reservations" %}

## <sup>Support Percent for DepositPayments</sup>

This is the percentage of the Total charge for the deposit. If the the Total.amountAfterTax is provided, it will be a percentage of this value. If only the amountBeforeTax is provided it will be the percentage of this value. At least @Amount or @Percent will be populated.

{% code overflow="wrap" expandable="true" %}

```xml
<DepositPayments>
    <GuaranteePayment>
        <AmountPercent Amount="30.00" CurrencyCode="USD" Percent="20.00"/>
        <Description>
            <Text>20% Deposit</Text>
        </Description>
    </GuaranteePayment>
</DepositPayments>		
```

{% endcode %}
{% endupdate %}
{% endupdates %}

### 2014

{% updates format="full" %}
{% update date="2014-10-22" tags="added,rates" %}

## <sup>Setting Rates</sup>

Rates should be sent through in the BaseByGuestAmt element. Either @AmountAfterTax or @AmountBeforeTax must be included and must contain the rate as a positive decimal value.

{% code title="Update with AmountAfterTax" overflow="wrap" expandable="true" %}

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

{% endcode %}

{% code title="Update with AmountBeforeTax" overflow="wrap" expandable="true" %}

```xml
<RateAmountMessages HotelCode="HOTEL">
		<RateAmountMessage>
			<StatusApplicationControl InvTypeCode="SUP" RatePlanCode="BAR"/>
			<Rates>
				<Rate CurrencyCode="AUD" Start="2025-03-01" End="2025-03-14">
					<BaseByGuestAmts>
						<BaseByGuestAmt AmountBeforeTax="123.00"/> <!-- Base Rate -->
					</BaseByGuestAmts>
				</Rate>
			</Rates>
		</RateAmountMessage>
	</RateAmountMessages>
```

{% endcode %}
{% endupdate %}

{% update date="2014-10-09" tags="added,reservations" %}

## <sup>Multiple Rate Plans Reservation</sup>

Reservation with one room type booked, but multiple rate plans/codes contained.

{% code overflow="wrap" expandable="true" %}

```xml
<RoomStays>
	<RoomStay>
		<RoomRates>
			<RoomRate RoomTypeCode="DR" RatePlanCode="RAC" NumberOfUnits="1">
				<Rates>
					<Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2013-03-12" ExpireDate="2013-03-14">
						<Total AmountAfterTax="50.00" CurrencyCode="USD"/>
					</Rate>
				</Rates>
			</RoomRate>
			<RoomRate RoomTypeCode="DR" RatePlanCode="RACX" NumberOfUnits="1">
				<Rates>
					<Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2013-03-14" ExpireDate="2013-03-15">
						<Total AmountAfterTax="40.00" CurrencyCode="USD"/>
					</Rate>
				</Rates>
			</RoomRate>
		</RoomRates>
		<GuestCounts>
			<GuestCount AgeQualifyingCode="10" Count="1"/>
		</GuestCounts>
		<TimeSpan Start="2013-03-12" End="2013-03-15"/>
		<Total AmountAfterTax="90.00" CurrencyCode="USD"/>
		<BasicPropertyInfo HotelCode="10107"/>
	</RoomStay>
</RoomStays>
```

{% endcode %}
{% endupdate %}

{% update date="2014-07-09" tags="added,reservations" %}

## <sup>ResGuest / Age</sup>

If the guest is a child, the following addition may be sent:

{% code overflow="wrap" expandable="true" %}

```xml
<ResGuest ResGuestRPH="1" ArrivalTime="10:30:00" Age="8">
```

{% endcode %}
{% endupdate %}

{% update date="2014-05-27" tags="added,restrictions" %}

## <sup>Service Inventory Code</sup>

The identifier code for the service as given by the source booking channel will be provided here: @ServiceInventoryCode.

{% code overflow="wrap" expandable="true" %}

```xml
<Services>
	<Service ServiceInventoryCode="EXTRA_BED" Inclusive="true" ServiceRPH="1" Quantity="2" ID="12345" ID_Context="CHANNEL" Type="18">
		<Price>
			<Base AmountBeforeTax="10.00" AmountAfterTax="11.00" CurrencyCode="USD">
				<Taxes Amount="1.00">
					<Tax Code="19" Percent="10" Amount="1.00">
						<TaxDescription>
							<Text>GST 10 percent</Text>
						</TaxDescription>
					</Tax>
				</Taxes>
			</Base>
			<Total AmountBeforeTax="100.00" AmountAfterTax="110.00" CurrencyCode="USD">
				<Taxes Amount="10.00">
					<Tax Code="19" Percent="10" Amount="10.00">
						<TaxDescription>
							<Text>GST 10 percent</Text>
						</TaxDescription>
					</Tax>
				</Taxes>
			</Total>
			<RateDescription>
				<Text>Extra person charge $10.00 for cot</Text>
			</RateDescription>
		</Price>
		<ServiceDetails>
			<TimeSpan End="2013-03-15" Start="2013-03-11"/>
		</ServiceDetails>
	</Service>
</Services>
```

{% endcode %}
{% endupdate %}

{% update date="2014-05-15" tags="added,reservations" %}

## <sup>Services / Price / Base</sup>

Added the amount per unit for extra extra charge as provided by the hotel.

{% code overflow="wrap" expandable="true" %}

```xml
<Services>
	<Service ServiceInventoryCode="EXTRA_BED" Inclusive="true" ServiceRPH="1" Quantity="2" ID="12345" ID_Context="CHANNEL" Type="18">
		<Price>
			<Base AmountBeforeTax="10.00" AmountAfterTax="11.00" CurrencyCode="USD">
				<Taxes Amount="1.00">
					<Tax Code="19" Percent="10" Amount="1.00">
						<TaxDescription>
							<Text>GST 10 percent</Text>
						</TaxDescription>
					</Tax>
				</Taxes>
			</Base>
			<Total AmountBeforeTax="100.00" AmountAfterTax="110.00" CurrencyCode="USD">
				<Taxes Amount="10.00">
					<Tax Code="19" Percent="10" Amount="10.00">
						<TaxDescription>
							<Text>GST 10 percent</Text>
						</TaxDescription>
					</Tax>
				</Taxes>
			</Total>
			<RateDescription>
				<Text>Extra person charge $10.00 for cot</Text>
			</RateDescription>
		</Price>
		<ServiceDetails>
			<TimeSpan End="2013-03-15" Start="2013-03-11"/>
		</ServiceDetails>
	</Service>
</Services>
```

{% endcode %}
{% endupdate %}

{% update date="2014-03-30" tags="modified,reservations" %}

## <sup>CustLoyalty replaces Memberships</sup>

The Memberships node in HotelReservation / ResGlobalInfo is removed and is replaced by CustLoyalty node under Profiles / ProfileInfo / Profile / Customer.

{% code overflow="wrap" expandable="true" %}

```xml
<Profiles>
	<ProfileInfo>
		<UniqueID Type="16" ID="12345" ID_Context="CHANNEL"/>
		<Profile ProfileType="1">
			<Customer>
				<CustLoyalty MembershipID="1234567890" ProgramID="FrequentFlyer" ExpiryDate="2017-03-31"/>
			</Customer>
		</Profile>
	</ProfileInfo>
</Profiles>
```

{% endcode %}
{% endupdate %}
{% endupdates %}

### 2013

{% updates format="full" %}
{% update date="2014-06-10" tags="added,reservations" %}

## <sup>Secondary Point Of Sale Company Code</sup>

Attribute 'Code' added to the CompanyName node for **secondary** channels. This will be relayed as provided from the source booking engine.

{% code overflow="wrap" expandable="true" %}

```xml
<POS>
    <Source>
        <RequestorID Type="22" ID="SITEMINDER"/>
        <BookingChannel Primary="true" Type="7">
            <CompanyName Code="ABC">Booking Channel</CompanyName>
        </BookingChannel>
    </Source>
    <Source>
        <BookingChannel Primary="false" Type="7">
            <CompanyName Code="ABCD">Booking Channel Affilate</CompanyName>
        </BookingChannel>
    </Source>
</POS>
```

{% endcode %}
{% endupdate %}

{% update date="2014-06-10" tags="added,reservations" %}

## <sup>Market Code for RoomStay</sup>

Attribute MarketCode to be added to the RoomStay node. This will be relayed as provided by the source booking engine.

{% code overflow="wrap" expandable="true" %}

```xml
<RoomStay MarketCode="Corporate">
</RoomStay>
```

{% endcode %}
{% endupdate %}

{% update date="2014-06-10" tags="added,reservations" %}

## <sup>Comments for ResGlobalInfo</sup>

Comments node to be added to the ResGlobalInfo node. This will be relayed as provided by the source booking engine.

{% code overflow="wrap" expandable="true" %}

```xml
<ResGlobalInfo>
	<Comments>
		<Comment>
			<Text>will be arriving after 6 pm</Text>
		</Comment>
	</Comments>
</ResGlobalInfo>
```

{% endcode %}
{% endupdate %}
{% endupdates %}


---

# 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/additional-resources/changelog.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.
