# Push (SM -> PMS)

## What is Reservations Push (SM -> PMS)?

**Reservation Push (SM -> PMS)** is a delivery method where SiteMinder actively sends reservations, modifications, and cancellations directly to the Property Management Systems (PMS)'s web service endpoint in real-time. This integration ensures that PMSs receive up-to-date booking information from various channels, maintaining consistency and reducing the risk of overbooking.

{% hint style="warning" %}
**Delivery Method Configuration**: The reservation delivery method (PUSH or PULL) is configured at the PMS level and applies to all properties using your integration. It is not possible to have some properties using Reservations PUSH while others use Reservations PULL. Once configured, all hotels connected to your PMS will receive reservations using the same method.
{% 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>PMS will provide a single global endpoint for all hotels for SiteMinder to push <code>OTA_HotelResNotifRQ</code> messages and receive <code>OTA_HotelResNotifRS</code> responses indicating success or failure.</li><li>The endpoint must use a registered domain name.</li><li>Direct IP addresses are not supported and cannot be used as endpoints.</li></ul></td></tr><tr><td><strong>Authentication</strong></td><td><ul><li>PMS will provide a single username/password for all hotels (PMS Level authentication).</li><li>SiteMinder will include authentication credentials within the <strong>SOAP Security header</strong> of each <code>OTA_HotelResNotifRQ</code>.</li><li>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., <code>!</code> <code>@</code> <code>#</code> <code>?</code> <code>]</code>).</li><li>Do not use <code>&#x3C;</code> <code>></code> <code>&#x26;</code> <code>"</code> <code>'</code> as they can cause issues with the Web Service.</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 must 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><li>SiteMinder sends requests over <strong>port 443</strong>.</li></ul></td></tr><tr><td><strong>IP Whitelisting</strong></td><td><p><strong>Pre-Production IP addresses:</strong><br></p><p><code>52.13.134.140</code></p><p><code>34.213.128.113</code></p><p><code>35.164.250.223</code><br><br><strong>Production IP addresses will be provided during go-live.</strong></p></td></tr></tbody></table>

## Message Exchange Flow

When SiteMinder receives bookings from channels, it delivers them to your PMS using a synchronous SOAP/HTTPS exchange. Each reservation triggers a separate request-response cycle.

1. **Reservation Message (SiteMinder to PMS):** `OTA_HotelResNotifRQ`\
   Delivers a single reservation message (new booking, modification, or cancellation).
2. **Confirmation Response (PMS to SiteMinder):** `OTA_HotelResNotifRS`\
   Confirms successful receipt or reports processing failure.

{% hint style="warning" %}
The PMS must send `OTA_HotelAvailNotifRQ` to SiteMinder with the **updated availability** after the reservations, modifications, and cancellations are processed on the PMS system. Refer to the [Availability and Restrictions](/pmsxchange-api/reference/availability.md).
{% endhint %}

## Security Header

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

**Key Requirements:**

* **Validation**: Your endpoint must 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 should 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="Reservation Message" %}
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 SOAP-ENV:mustUnderstand="1"
			xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
			<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_HotelResNotifRQ
			xmlns="http://www.opentravel.org/ota/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" PrimaryLangID="en-us" ResStatus="Commit" Target="Production" TimeStamp="2024-07-06T15:27:41+00:00" Version="2.001">
			<HotelReservation CreateDateTime="2024-07-06T15:23:35+00:00" ResStatus="Book">
				<UniqueID Type="14" ID="ABC-1234567890"/>
				<UniqueID Type="16" ID="isuokfr1pyc2ntest7" ID_Context="MESSAGE_UNIQUE_ID"/>
					<!-- ... other elements and attributes have been omitted for brevity ... -->
			</HotelReservation>
		</OTA_HotelResNotifRQ>
	</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_HotelResNotifRS
			xmlns="http://www.opentravel.org/ota/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" Version="1" TimeStamp="2024-07-06T15:27:47+00:00">
			<Success/>
			<HotelReservations>
				<HotelReservation>
					<ResGlobalInfo>
						<HotelReservationIDs>
							<HotelReservationID ResID_Source="PMS" ResID_Type="40" ResID_Value="ABC-1234567890"/>
						</HotelReservationIDs>
					</ResGlobalInfo>
				</HotelReservation>
			</HotelReservations>
		</OTA_HotelResNotifRS>
	</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. Reservation Message

### **OTA\_HotelResNotifRQ**

The `OTA_HotelResNotifRQ` message carries reservation data from SiteMinder to your PMS. Each message contains exactly one reservation (new booking, modification, or cancellation).

The message consists of a list of HotelReservation elements. The content may vary since SiteMinder delivers reservations from multiple upstream sources (booking channels), many of which have significantly different reservation formats and data structures.

**Key Concepts**

**HotelReservation**

* Represents a single booking from one channel
* Always contains exactly one reservation per message
* Includes all associated rooms, guests, and payments

**RoomStays**

* Container for all room bookings in the reservation
* Each room type booked creates a separate RoomStay
* Example: 2 Double Rooms + 1 Suite = 3 RoomStay elements

**Split Stays**

* When a guest changes room type during their stay
* Creates multiple RoomStays with different date ranges
* Example: Double Room (Jan 1-3) + Suite (Jan 3-5) = 2 RoomStays

**Guest Assignment**

* ResGuests can be linked to specific RoomStays via ResGuestRPH
* Some channels provide no guest details (ResGuests may be empty)
* Primary guest indicated by PrimaryIndicator="true"

**Pricing Levels**\
Pricing data is structured across multiple levels. Different OTAs provide different levels of pricing details. SiteMinder passes through what the OTA provides to a PMS system. Always read all levels not just RoomStay Total alone.&#x20;

* Daily rates can be found at `RoomRates.RoomRate.Rates.Rate/BaseRoomRates.RoomRate.Rates.Rate/Base` - room charge per night, excluding extras
* When `Rate/Total` exceeds `Rate/Base`, extra charge is included in the daily rate. Service details for this extra are not guaranteed. OTA may embed charges in the total without providing a corresponding `Services` element&#x20;
* The RoomStay Total at `RoomStays.RoomStay.Total` covers all daily rates and any room-stay-level extras
* The ReservationTotal at `ResGlobalInfo.Total` is the authoritative total for the entire reservation. It includes all room stays + any services or extras applied at the reservation level. Always use this as the final amount for the reservation.

```xml
<OTA_HotelResNotifRQ
	xmlns="http://www.opentravel.org/ota/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" PrimaryLangID="en-us" ResStatus="Commit" Target="Production" TimeStamp="2025-03-09T21:32:52+02:00" Version="2.001">
	<HotelReservations>
		<!-- ... other elements and attributes have been omitted for brevity ... -->
	</HotelReservations>
</OTA_HotelResNotifRQ>
```

<table><thead><tr><th width="253">Element / @Attribute</th><th width="133">Type</th><th width="51" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>OTA_HotelResNotifRQ</code></strong></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>@ResStatus</code></td><td>String</td><td align="center">1</td><td>Always <code>Commit</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. Preferred format: UUID <code>8-4-4-4-12</code>.</td></tr><tr><td><code>@TimeStamp</code></td><td>DateTime</td><td align="center">1</td><td>Time when the request was generated. <code>TimeStamp</code> must use <code>ISO 8601</code> format.</td></tr><tr><td><code>@PrimaryLangID</code></td><td>String</td><td align="center">1</td><td>Always <code>en-us</code></td></tr><tr><td><code>@Target</code></td><td>String</td><td align="center">1</td><td>Always <code>Production</code></td></tr><tr><td><code>@Version</code></td><td>Decimal</td><td align="center">1</td><td>Specifies the API version. Current Version <code>2.001</code></td></tr></tbody></table>

### Hotel Reservation

```xml
<HotelReservations>
    <HotelReservation CreateDateTime="2025-05-12t00:45:23+00:00" ResStatus="Book">
        <POS>
            <Source>
                <RequestorID Type="22" ID="SITEMINDER"/>
                <BookingChannel Primary="True" Type="7">
                    <CompanyName Code="ABC">Booking Channel Name</CompanyName>
                </BookingChannel>
            </Source>
            <Source>
                <BookingChannel Primary="False" Type="7">
                    <CompanyName>Booking Channel Affilate</CompanyName>
                </BookingChannel>
            </Source>
        </POS>
        <UniqueID Type="14" ID="ABC-1234567890"/> <!-- SiteMinder Reservation ID -->
        <UniqueID Type="16" ID="isuokfr1pyc2ntest7" ID_Context="MESSAGE_UNIQUE_ID"/>
	<!-- ... other elements and attributes have been omitted for brevity ... -->
    </HotelReservation>
</HotelReservations>
```

<table><thead><tr><th width="253">Element / @Attribute</th><th width="133">Type</th><th width="51" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>HotelReservations</code></strong></td><td>Element</td><td align="center">1</td><td>Contains the reservation details.</td></tr><tr><td><code>HotelReservation</code></td><td>Element</td><td align="center">1</td><td>Contains the specific reservation information.</td></tr><tr><td><code>@CreateDateTime</code></td><td>DateTime</td><td align="center">1</td><td>Date and time when the reservation was first made.<br><strong>Mandatory if <code>ResStatus</code> is <code>Book</code>.</strong><br><code>CreateDateTime</code> must follow the <code>ISO 8601</code> Date and Time format.</td></tr><tr><td><code>@ResStatus</code></td><td>String</td><td align="center">1</td><td><p>Status is:</p><p><code>Book</code></p><p><code>Modify</code></p><p><code>Cancel</code></p></td></tr><tr><td><code>@LastModifyDateTime</code></td><td>DateTime</td><td align="center">0..1</td><td>This indicates the last date and time when the reservation was last modified.<br><strong>Mandatory if ResStatus is <code>Modify</code> or <code>Cancel</code>.</strong><br><code>LastModifyDateTime</code> must follow the <code>ISO 8601</code> Date and Time format.</td></tr><tr><td><code>UniqueID</code></td><td>Element</td><td align="center">1..2</td><td><p>The reservation reference in SiteMinder.</p><p>The <em><strong>first</strong></em> UniqueID element will contain the unique identifier for the entire reservation. This identifier will identify the reservation through any subsequent modifications or cancellations.</p><p>The <em><strong>second</strong></em> UniqueID element with <code>ID_Context="MESSAGE_UNIQUE_ID"</code> is the unique id for this <em><strong>message</strong></em>. This identifier should be used to confirm the message once processed</p></td></tr><tr><td><code>@Type</code></td><td>Integer</td><td align="center">1</td><td>Value <code>14</code> is the unique ID for the reservation in SiteMinder.<br>Value <code>16</code> is the unique id for the message transferring the reservation.</td></tr><tr><td><code>@ID</code></td><td>String</td><td align="center">1</td><td>Identifier of the reservation according to SiteMinder.</td></tr><tr><td><code>POS</code></td><td>Element</td><td align="center">1</td><td>Contains source details.</td></tr><tr><td><code>Source</code></td><td>Element</td><td align="center">1..2</td><td>Contains BookingChannel details.<br>A second POS / Source node can be present to define a secondary channel source.</td></tr><tr><td><code>RequestorID</code></td><td>Element</td><td align="center">1</td><td>Only present in the first <code>Source</code> element. Identifies the system sending the reservation.</td></tr><tr><td><code>@ID</code></td><td>String</td><td align="center">1</td><td>Always <code>SITEMINDER</code></td></tr><tr><td><code>@Type</code></td><td>Integer</td><td align="center">1</td><td>Fixed at <code>22</code> (ESRP)</td></tr><tr><td><code>BookingChannel</code></td><td>Element</td><td align="center">1</td><td>Contains booking channel information.</td></tr><tr><td><code>@Type</code></td><td>Integer</td><td align="center">1</td><td>Always <code>7</code> for 'Internet'.</td></tr><tr><td><code>@Primary</code></td><td>Boolean</td><td align="center">1</td><td>Indicates the primary booking source.</td></tr><tr><td><code>CompanyName</code></td><td>String</td><td align="center">1</td><td><p>Name of the Booking Channel.</p><p><strong>NOTE:</strong> This name is subject to change/variation by the Booking Channel. Use the <code>Code</code> attribute below to identify the booking channels.</p></td></tr><tr><td><code>@Code</code></td><td>String</td><td align="center">0..1</td><td>Code of the booking channel.<br>See the <a href="/pages/MxQNXnNDdCYhYvgiZBu6">Booking Agent Codes Table</a> for reference.</td></tr></tbody></table>

### RoomStays

```xml
<RoomStays>
    <RoomStay MarketCode="Corporate" PromotionCode="STAYANDSAVE" SourceOfBusiness="Radio">
        <RoomTypes>
            <RoomType RoomType="Double Room" RoomTypeCode="DR" NonSmoking="true" Configuration="2 Beds and 1 cot">
                <!-- Additional RoomType elements -->
            </RoomType>
        </RoomTypes>
        <RatePlans>
                <!-- Additional RatePlan elements -->
            </RatePlan>
        </RatePlans>
        <RoomRates>
            <RoomRate RoomTypeCode="DR" RatePlanCode="RAC1" NumberOfUnits="1">
                <!-- Additional RoomRate elements -->
            </RoomRate>
        </RoomRates>
            <!-- Additional RoomStay elements -->
    </RoomStay>
</RoomStays>
```

<table><thead><tr><th width="252">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>RoomStays</code></strong></td><td>Element</td><td align="center">1</td><td>Contains details of all room stays.</td></tr><tr><td><code>RoomStay</code></td><td>Element</td><td align="center">1..n</td><td>One instance of <code>RoomStay</code> per room type booked.</td></tr><tr><td><code>@PromotionCode</code></td><td>String</td><td align="center">0..1</td><td>If configured, this is the promotion code indicating, for instance, a specific marketing campaign (not the rate code).</td></tr><tr><td><code>@MarketCode</code></td><td>String</td><td align="center">0..1</td><td>A code to match a market segment for the booking.</td></tr><tr><td><code>@SourceOfBusiness</code></td><td>String</td><td align="center">0..1</td><td>Specifies where the business came from e.g. radio, newspaper ad, etc.</td></tr></tbody></table>

### RoomTypes

```xml
<RoomTypes>
    <RoomType RoomType="Double Room" RoomTypeCode="DR" NonSmoking="true" Configuration="2 Beds and 1 cot">
        <RoomDescription>
            <Text>Double room</Text>
        </RoomDescription>
        <AdditionalDetails>
            <AdditionalDetail Type="4" Code="PIA">
                <DetailDescription>
                    <Text>Room paid in advance with credit card</Text>
                </DetailDescription>
            </AdditionalDetail>
            <AdditionalDetail Type="5" Code="ECB">
                <DetailDescription>
                    <Text>Continental breakfast included</Text>
                </DetailDescription>
            </AdditionalDetail>
        </AdditionalDetails>
    </RoomType>
</RoomTypes>
```

<table><thead><tr><th width="255">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>RoomTypes</code></strong></td><td>Element</td><td align="center">0..1</td><td>Provides more information about the room type for this room stay.</td></tr><tr><td><code>RoomType</code></td><td>Element</td><td align="center">0..1</td><td>Contains specific information about the room type.</td></tr><tr><td><code>@RoomTypeCode</code></td><td>String</td><td align="center">0..1</td><td>Code of the room booked.</td></tr><tr><td><code>@NonSmoking</code></td><td>Boolean</td><td align="center">0..1</td><td>Provided by the source channel.</td></tr><tr><td><code>@Configuration</code></td><td>String</td><td align="center">0..1</td><td>Information about the bedding configuration.</td></tr><tr><td><code>RoomDescription</code></td><td>Element</td><td align="center">0..1</td><td>Description of the room.</td></tr><tr><td><code>@Text</code></td><td>String</td><td align="center">0..1</td><td>Name of the room.</td></tr><tr><td><code>AdditionalDetails</code></td><td>Element</td><td align="center">0..1</td><td>Additional room information provided by the source channel.</td></tr><tr><td><code>AdditionalDetail</code></td><td>Element</td><td align="center">0..n</td><td></td></tr><tr><td><code>@Type</code></td><td>Integer</td><td align="center">1</td><td><p>Refer to the <a href="https://developer.siteminder.com/siteminder-apis/additional-resources/reference-tables/opentravel-codes-list#additional-detail-type-adt">Additional Detail Type (ADT)</a>.<br>Common usages are:</p><p><code>43</code> - Meal plan information<br><code>15</code> - Promotion information</p></td></tr><tr><td><code>@Code</code></td><td>String</td><td align="center">0..1</td><td>Reference code provided by the source channel.</td></tr><tr><td><code>DetailDescription</code></td><td>Element</td><td align="center">0..1</td><td>Contains the description <code>Text</code>.</td></tr><tr><td><code>@Text</code></td><td>String</td><td align="center">1</td><td>Details provided by the source channel.</td></tr></tbody></table>

### RatePlans

```xml
<RatePlans>
    <RatePlan RatePlanCode="RAC1" EffectiveDate="2025-03-12" ExpireDate="2025-03-14" RatePlanName="RACK Rate1">
        <RatePlanDescription>
            <Text>Long Stay Discount</Text>
        </RatePlanDescription>
        <AdditionalDetails>
            <AdditionalDetail Type="15" Code="EB1">
                <DetailDescription>
                    <Text>Stay n Save promotion grants 10% discount</Text>
                </DetailDescription>
            </AdditionalDetail>
            <AdditionalDetail Type="43">
                <DetailDescription>
                    <Text>Continental breakfast included</Text>
                </DetailDescription>
            </AdditionalDetail>
        </AdditionalDetails>
    </RatePlan>
</RatePlans>
```

<table><thead><tr><th width="284">Element / @Attribute</th><th width="112">Type</th><th width="61" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>RatePlans</code></strong></td><td>Element</td><td align="center">0..1</td><td>Provides more information about the rate plan for this room stay.</td></tr><tr><td><code>RatePlan</code></td><td>Element</td><td align="center">0..n</td><td>Contains details about the specific rate plan.</td></tr><tr><td><code>@RatePlanCode</code></td><td>String</td><td align="center">0..1</td><td>Code of the rate booked.</td></tr><tr><td><code>@RatePlanName</code></td><td>String</td><td align="center">0..1</td><td>Name of the rate plan.</td></tr><tr><td><code>@EffectiveDate</code></td><td></td><td align="center">1</td><td>The effective date of the <code>RatePlan</code>.</td></tr><tr><td><code>@ExpireDate</code></td><td>Date</td><td align="center">1</td><td>The expire date for a <code>RatePlan</code>, this should be considered an exclusive date, the date for which the current rate plan information is no longer valid.</td></tr><tr><td><code>RatePlanDescription</code></td><td>Element</td><td align="center">0..1</td><td>Contains the description <code>Text</code>.</td></tr><tr><td><code>@Text</code></td><td>String</td><td align="center">0..1</td><td>Details provided about the rate plan.</td></tr><tr><td><code>AdditionalDetails</code></td><td>Element</td><td align="center">0..1</td><td>Additional rate plan information provided by the source channel.</td></tr><tr><td><code>AdditionalDetail</code></td><td>Element</td><td align="center">0..n</td><td></td></tr><tr><td><code>@Type</code></td><td>Integer</td><td align="center">1</td><td><p>Refer to the <a href="https://developer.siteminder.com/siteminder-apis/additional-resources/reference-tables/opentravel-codes-list#additional-detail-type-adt">Additional Detail Type (ADT)</a>.<br>Common usages are:</p><p><code>43</code> - Meal plan information<br><code>15</code> - Promotion information</p></td></tr><tr><td><code>@Code</code></td><td>String</td><td align="center">0..1</td><td>Reference code provided by the source channel.</td></tr><tr><td><code>DetailDescription</code></td><td>Element</td><td align="center">0..1</td><td>Contains the description <code>Text</code>.</td></tr><tr><td><code>@Text</code></td><td>String</td><td align="center">1</td><td>Details provided by the source channel.</td></tr></tbody></table>

### RoomRates

{% tabs %}
{% tab title="Room Rates" %}

<pre class="language-xml"><code class="lang-xml"><strong>&#x3C;RoomRates>
</strong>    &#x3C;RoomRate RoomTypeCode="DR" RatePlanCode="RAC1" NumberOfUnits="1">
        &#x3C;Rates>
            &#x3C;Rate UnitMultiplier="2" RateTimeUnit="Day" EffectiveDate="2025-03-12" ExpireDate="2025-03-14">
                &#x3C;Base AmountBeforeTax="100.00" AmountAfterTax="110.00" CurrencyCode="USD">
                    &#x3C;Taxes Amount="10.00">
                        &#x3C;Tax Code="19" Percent="10" Amount="10.00">
                            &#x3C;TaxDescription>
                                &#x3C;Text>GST 10 percent&#x3C;/Text>
                            &#x3C;/TaxDescription>
                        &#x3C;/Tax>
                    &#x3C;/Taxes>
                &#x3C;/Base>
                &#x3C;Total AmountBeforeTax="102.50" AmountAfterTax="112.75" CurrencyCode="USD">
                    &#x3C;Taxes Amount="10.25">
                        &#x3C;Tax Code="19" Percent="10" Amount="10.25">
                            &#x3C;TaxDescription>
                                &#x3C;Text>GST 10 percent&#x3C;/Text>
                            &#x3C;/TaxDescription>
                        &#x3C;/Tax>
                    &#x3C;/Taxes>
                &#x3C;/Total>
            &#x3C;/Rate>
            &#x3C;!-- Additional Rate -->
        &#x3C;/Rates>
        &#x3C;ServiceRPHs>
            &#x3C;ServiceRPH RPH="1"/>
            &#x3C;!-- Additional ServiceRPH -->
        &#x3C;/ServiceRPHs>
    &#x3C;/RoomRate>
    &#x3C;!-- Additional RoomRate -->
&#x3C;/RoomRates>
</code></pre>

{% endtab %}

{% tab title="Same Rate per Night" %}

```xml
<RoomRates>
   <RoomRate RoomTypeCode="TPL" RatePlanCode="BAR" NumberOfUnits="1">
      <Rates>
         <Rate UnitMultiplier="2" RateTimeUnit="Day" EffectiveDate="2025-10-05" ExpireDate="2025-10-07">
	    <Base AmountBeforeTax="153.00" AmountAfterTax="170.00" CurrencyCode="EUR"/>
	    <Total AmountBeforeTax="153.00" AmountAfterTax="170.00" CurrencyCode="EUR"/>
	 </Rate>
      </Rates>
   </RoomRate>
</RoomRates>
<TimeSpan Start="2025-10-05" End="2025-10-07"/>
<Total AmountBeforeTax="306.00" AmountAfterTax="340.00" CurrencyCode="EUR">
```

{% endtab %}

{% tab title="Same Rate per Night + Extras" %}
This example shows daily rates when the same rate applies to both dates (2025-10-05 and 2025-10-06) and there are additional charges.

```xml
<RoomRates>
   <RoomRate RoomTypeCode="TPL" RatePlanCode="BAR" NumberOfUnits="1">
      <Rates>
         <Rate UnitMultiplier="2" RateTimeUnit="Day" EffectiveDate="2025-10-05" ExpireDate="2025-10-07">
	    <Base AmountBeforeTax="153.00" AmountAfterTax="170.00" CurrencyCode="EUR"/>
	    <Total AmountBeforeTax="170.00" AmountAfterTax="188.00" CurrencyCode="EUR"/>
	 </Rate>
      </Rates>
   </RoomRate>
</RoomRates>
<TimeSpan Start="2025-10-05" End="2025-10-07"/>
<Total AmountBeforeTax="340.00" AmountAfterTax="376.00" CurrencyCode="EUR">
```

{% endtab %}

{% tab title="Different Rate per Night" %}

```xml
<RoomRates>
   <RoomRate RoomTypeCode="TPL" RatePlanCode="BAR" NumberOfUnits="1">
      <Rates>
         <Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2025-10-05" ExpireDate="2025-10-06">
	    <Base AmountBeforeTax="153.00" AmountAfterTax="170.00" CurrencyCode="EUR"/>
	    <!-- ... other elements and attributes have been omitted for brevity ... -->
	 </Rate>
	 <Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2025-10-06" ExpireDate="2025-10-07">
            <Base AmountBeforeTax="180.00" AmountAfterTax="200.00" CurrencyCode="EUR"/>
	    <!-- ... other elements and attributes have been omitted for brevity ... -->
	 </Rate>
	 <Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2025-10-07" ExpireDate="2025-10-08">
            <Base AmountBeforeTax="225.00" AmountAfterTax="250.00" CurrencyCode="EUR"/>
	    <!-- ... other elements and attributes have been omitted for brevity ... -->
	 </Rate>
      </Rates>
   </RoomRate>
</RoomRates>
<TimeSpan Start="2025-10-05" End="2025-10-08"/>  
<Total AmountBeforeTax="558.00" AmountAfterTax="620.00" CurrencyCode="EUR">
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="253">Element / @Attribute</th><th width="128">Type</th><th width="62" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>RoomRates</code></strong></td><td>Element</td><td align="center">1</td><td>A <code>RoomStay</code> can include multiple <code>RoomRate</code>, each containing several rates. This occurs when a single room is booked, but different rate plans apply across the duration of the stay.</td></tr><tr><td><code>RoomRate</code></td><td>Element</td><td align="center">1..n</td><td>One RoomRate per RoomStay. Multiple rates are listed under the RoomRate.</td></tr><tr><td><code>@RoomTypeCode</code></td><td>String</td><td align="center">1</td><td>Code of the room booked.</td></tr><tr><td><code>@RatePlanCode</code></td><td>String</td><td align="center">1</td><td>Code of the rate plan booked.</td></tr><tr><td><code>@NumberOfUnits</code></td><td>Integer</td><td align="center">1</td><td>Always <code>1</code>. Each room will be listed in it's own RoomStay element.</td></tr><tr><td><code>Rates</code></td><td>Element</td><td align="center">0..1</td><td>Rate will contain a timespan for which a rate will apply for a room type. Multiple instances of Rate will be sent if rate changes apply.</td></tr><tr><td><code>Rate</code></td><td>Element</td><td align="center">1..n</td><td>Contains the daily rate information which matches the entire date range specified in the <code>RoomStay/TimeSpan</code> element.</td></tr><tr><td><code>@UnitMultiplier</code></td><td>Integer</td><td align="center">1</td><td>Equal to the number of days between <code>EffectiveDate</code> and <code>ExpireDate</code>. Multiply with the <code>UnitMultiplier</code> to get the total cost for the date span.</td></tr><tr><td><code>@RateTimeUnit</code></td><td>String</td><td align="center">1</td><td>Always <code>Day</code>.</td></tr><tr><td><code>@EffectiveDate</code></td><td>Date</td><td align="center">1</td><td>Starting date of the rate. This date is inclusive.</td></tr><tr><td><code>@ExpireDate</code></td><td>Date</td><td align="center">1</td><td>First day after the applicable period. This date is exclusive.</td></tr><tr><td><code>Base</code></td><td>Element</td><td align="center">0..1</td><td>Base/Gross <strong>per-day</strong> amount charged for the room.</td></tr><tr><td><code>@AmountBeforeTax</code></td><td>Decimal</td><td align="center">0..1</td><td>The unit amount before tax.</td></tr><tr><td><code>@AmountAfterTax</code></td><td>Decimal</td><td align="center">0..1</td><td>The unit amount after tax.</td></tr><tr><td><code>@CurrencyCode</code></td><td>String</td><td align="center">0..1</td><td>Use <code>ISO 4217</code> currency codes.</td></tr><tr><td><code>Taxes</code></td><td>Element</td><td align="center">0..1</td><td>Contains details of the taxes applied.</td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">0..1</td><td>The unit tax amount.</td></tr><tr><td><code>Tax</code></td><td>Element</td><td align="center">0..n</td><td>Contains specific tax information.</td></tr><tr><td><code>@Code</code></td><td>String</td><td align="center">1</td><td>Indicates the specific tax or fee that is being transferred. Refer to <a href="/pages/25577kjBcjKCgYHcsgBY">Fee Tax Type (FTT)</a>.</td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">0..1</td><td>Tax amount applied.</td></tr><tr><td><code>@Percentage</code></td><td>Decimal</td><td align="center">0..1</td><td>Tax percentage.</td></tr><tr><td><code>TaxDescription</code></td><td>Element</td><td align="center">0..1</td><td>Contains the tax description <code>Text</code>.</td></tr><tr><td><code>@Text</code></td><td>String</td><td align="center">1</td><td>Text description of the tax.</td></tr><tr><td><code>Total</code></td><td>Element</td><td align="center">0..1</td><td><p>Base Rate + any additional occupants and fees/extras.<br>If empty, assume the Base amount equals the Total amount.<br></p><p><strong>NOTE:</strong> It is possible that some OTAs do not provide any form of Rate information and as such a RoomRate / Rate / Total cannot be provided in such cases. Currently Hotelbeds (HBD) is a known channel that does not always provide Rate information.</p><p><strong>NOTE</strong>: Any extras that are to be included in the RoomRate total will be linked through the ServiceRPH node.</p></td></tr><tr><td><code>@AmountBeforeTax</code></td><td>Decimal</td><td align="center">0..1</td><td>The total amount before tax.</td></tr><tr><td><code>@AmountAfterTax</code></td><td>Decimal</td><td align="center">0..1</td><td>The total amount after tax.</td></tr><tr><td><code>@CurrencyCode</code></td><td>String</td><td align="center">1</td><td>Use <code>ISO 4217</code> currency codes.</td></tr><tr><td><code>Taxes</code></td><td>Element</td><td align="center">0..1</td><td>Contains details of the total taxes applied.</td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">0..1</td><td>The total tax amount.</td></tr><tr><td><code>Tax</code></td><td>Element</td><td align="center">0..n</td><td>Contains specific tax information.</td></tr><tr><td><code>@Code</code></td><td>String</td><td align="center">0..1</td><td>Indicates the specific tax or fee that is being transferred. Refer to <a href="/pages/25577kjBcjKCgYHcsgBY">Fee Tax Type (FTT)</a>.</td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">0..1</td><td>Tax amount applied.</td></tr><tr><td><code>@Percentage</code></td><td></td><td align="center">0..1</td><td>Tax percentage.</td></tr><tr><td><code>TaxDescription</code></td><td></td><td align="center">0..1</td><td>Text description of the tax.</td></tr><tr><td><code>@Text</code></td><td>String</td><td align="center">1</td><td></td></tr><tr><td><code>ServiceRPHs</code></td><td>Element</td><td align="center">0..1</td><td>Container for the <code>ServiceRPH</code> elements.</td></tr><tr><td><code>ServiceRPH</code></td><td>Element</td><td align="center">0..n</td><td>Links a service to the Service information at the <code>RoomRate</code> level.</td></tr><tr><td><code>@RPH</code></td><td>Integer</td><td align="center">1..n</td><td>Links a <code>Service</code> to the Service information provided at the HotelReservation level (if applicable) to this <code>RoomRate</code>.</td></tr></tbody></table>

### GuestCounts

```xml
<GuestCounts>
	<GuestCount AgeQualifyingCode="10" Count="2"/>
	<GuestCount AgeQualifyingCode="8" Count="1"/>
	<GuestCount AgeQualifyingCode="7" Count="1"/>
</GuestCounts>
```

<table><thead><tr><th width="250">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>GuestCounts</code></strong></td><td>Element</td><td align="center">1</td><td>Total guest counts for adult, child, and infant. Adult count must always be sent.</td></tr><tr><td><code>GuestCount</code></td><td>Element</td><td align="center">1..3</td><td><p>Represents the count for a specific age group.</p><p><br></p></td></tr><tr><td><code>@AgeQualifyingCode</code></td><td>Integer</td><td align="center">1</td><td><p><code>10</code> - Adult (mandatory)</p><p><code>8</code> - Child (optional)</p><p><code>7</code> - Infant (optional)</p></td></tr><tr><td><code>@Count</code></td><td>Integer</td><td align="center">1</td><td>Number of guests for this age group.</td></tr></tbody></table>

### TimeSpan

```xml
<TimeSpan Start="2025-10-05" End="2025-10-08"/>
```

<table><thead><tr><th width="250">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>TimeSpan</code></strong></td><td>Element</td><td align="center">1</td><td>Contains the timespan for the <code>RoomStay</code>.</td></tr><tr><td><code>@Start</code></td><td>Date</td><td align="center">1</td><td>Check-in date.</td></tr><tr><td><code>@End</code></td><td>Date</td><td align="center">1</td><td>Check-out date. Must be after Start.</td></tr></tbody></table>

### RoomStay Total

{% hint style="info" %}
This total covers the room stay only. It does not include services or extras applied at the reservation level. See [Reservation Total](https://developer.siteminder.com/pmsxchange-api/reference/reservations/push#reservationtotal) for the complete reservation amount.
{% endhint %}

```xml
<Total CurrencyCode="USD" AmountBeforeTax="500.00" AmountAfterTax="615.00">
    <Taxes Amount="115.00">
        <Tax Amount="50.00" Code="10">
            <TaxDescription>
                <Text>Occupancy Tax</Text>
            </TaxDescription>
        </Tax>
        <Tax Amount="65.00" Code="13">
            <TaxDescription>
                <Text>Sales Tax</Text>
            </TaxDescription>
        </Tax>
    </Taxes>
</Total>
```

<table><thead><tr><th width="251">Element / @Attribute</th><th width="134">Type</th><th width="61" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>Total</code></strong></td><td>Element</td><td align="center">0..1</td><td>The total amount of the <code>RoomStay</code>.<br></td></tr><tr><td><code>@AmountBeforeTax</code></td><td>Decimal</td><td align="center">0..1</td><td>The total amount before tax.</td></tr><tr><td><code>@AmountAfterTax</code></td><td>Decimal</td><td align="center">0..1</td><td>The total amount after tax.</td></tr><tr><td><code>@CurrencyCode</code></td><td>String</td><td align="center">0..1</td><td>Use <code>ISO 4217</code> currency codes.</td></tr><tr><td><code>Taxes</code></td><td>Element</td><td align="center">0..1</td><td>Contains details of the taxes applied.</td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">0..1</td><td>The total tax amount.</td></tr><tr><td><code>Tax</code></td><td>Element</td><td align="center">0..n</td><td>Contains specific tax information.</td></tr><tr><td><code>@Code</code></td><td>String</td><td align="center">1</td><td>Indicates the specific tax or fee that is being transferred. Refer to <a href="/pages/25577kjBcjKCgYHcsgBY">Fee Tax Type (FTT)</a>.</td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">0..1</td><td>Amount of the tax/fee transferred.</td></tr><tr><td><code>@Percentage</code></td><td>Decimal</td><td align="center">0..1</td><td>Tax percentage.</td></tr><tr><td><code>TaxDescription</code></td><td>Element</td><td align="center">0..1</td><td>Contains the tax description <code>Text</code>.</td></tr><tr><td><code>@Text</code></td><td>String</td><td align="center">1</td><td>Text description of the tax</td></tr></tbody></table>

### BasicPropertyInfo

```xml
<BasicPropertyInfo HotelCode="HOTELCODE" HotelName="The Hotel Name"/>
```

<table><thead><tr><th width="253">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>BasicPropertyInfo</code></strong></td><td>Element</td><td align="center">0..1</td><td>Contains basic identification details for the hotel associated with the reservation.<br><code>BasicPropertyInfo</code> will always be sent as either part of the <a href="https://github.com/siteminder-au/gitbook/blob/master/sm-published-apis/.gitbook/includes/broken-reference/README.md">RoomStay</a> or <a href="https://github.com/siteminder-au/gitbook/blob/master/sm-published-apis/.gitbook/includes/broken-reference/README.md">ResGlobalInfo</a>, depending on your setup in SiteMinder. We recommend receiving the <code>BasicPropertyInfo</code> as part of the <code>ResGlobalInfo</code> due to how Booking.com cancellation messages are sent.</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>@HotelName</code></td><td>String</td><td align="center">0..1</td><td>Name of the hotel.</td></tr></tbody></table>

### ServiceRPHs

```xml
<ServiceRPHs>
	<ServiceRPH RPH="1"/>
	<!-- Additional ServiceRPH elements -->
</ServiceRPHs>
```

<table><thead><tr><th width="256">Element / @Attribute</th><th width="112">Type</th><th width="62" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>ServiceRPHs</code></strong></td><td>Element</td><td align="center">0..1</td><td>Container for the <code>ServiceRPH</code> elements.</td></tr><tr><td><code>ServiceRPH</code></td><td>Element</td><td align="center">1..n</td><td>Service at the <code>RoomStay</code> level.</td></tr><tr><td><code>@RPH</code></td><td>Integer</td><td align="center">1</td><td>Links a <code>Service</code> to the Service information provided at the HotelReservation level (if applicable).</td></tr></tbody></table>

### ResGuestRPHs

```xml
<ResGuestRPHs>
	<ResGuestRPH RPH="1"/>
	<!-- Additional ResGuestRPH elements -->
</ResGuestRPHs>
```

<table><thead><tr><th width="254">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>ResGuestRPHs</code></strong></td><td>Element</td><td align="center">0..1</td><td>Container for the <code>ResGuestRPH</code> elements.</td></tr><tr><td><code>ResGuestRPH</code></td><td>Element</td><td align="center">1..n</td><td>Container for the <code>RPH</code> attribute.</td></tr><tr><td><code>@RPH</code></td><td>Integer</td><td align="center">1</td><td>Links the <code>RoomStay</code> to <code>ResGuest</code>. Find the links in <a href="https://github.com/siteminder-au/gitbook/blob/master/sm-published-apis/.gitbook/includes/broken-reference/README.md">ResGuests</a>.</td></tr></tbody></table>

### Comments

```xml
<Comments>
	<Comment>
		<Text>See the room stay comments here</Text>
	</Comment>
</Comments>
```

<table><thead><tr><th width="253">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>Comments</code></strong></td><td>Element</td><td align="center">0..1</td><td>Contains comment for the <code>RoomStay</code>.</td></tr><tr><td><code>Comment</code></td><td>Element</td><td align="center">1..n</td><td>Holds the actual comment.</td></tr><tr><td><code>Text</code></td><td>Element</td><td align="center">1</td><td><p>The content of the comment.</p><p><strong>PCI sensitive data is prohibited.</strong></p></td></tr></tbody></table>

### Services

Extras and services in reservation XML can be identified through multiple attributes. Use this multi-layered approach to ensure reliable mapping:

**1. Use the ID attribute**: Map extras using the `@ID` attribute when present. This is the channel's unique identifier for the specific extra or service.

**2. Use ServiceInventoryCode**: If `@ID` is not provided, use the `@ServiceInventoryCode` attribute, which is always present. Reference the Service and Extra Charge table for commonly used codes, or request the complete code list from the hotelier for their specific connected channels.

**3. Keyword Detection**: Implement keyword detection logic that scans `<RateDescription><Text>` for common terms like "Parking," "Breakfast," "Spa," etc. This ensures that extras sent under different codes (`EXTRA`, `MEAL`, `OTHER`) by various channels are still correctly matched in your PMS, even when codes vary between booking sources.

```xml
<Services>
    <Service ServiceInventoryCode="EXTRA_BED" Inclusive="true" ServiceRPH="1" Quantity="1" ID="12346" ID_Context="CHANNEL" Type="18">
        <Price>
            <Base AmountBeforeTax="2.50" AmountAfterTax="2.75" CurrencyCode="EUR">
                <Taxes Amount="0.25">
                    <Tax Code="19" Percent="10" Amount="0.25">
                        <TaxDescription>
                            <Text>GST 10 percent</Text>
                        </TaxDescription>
                    </Tax>
                </Taxes>
            </Base>
            <Total AmountBeforeTax="5.00" AmountAfterTax="5.50" CurrencyCode="EUR">
                <Taxes Amount="0.50">
                    <Tax Code="19" Percent="10" Amount="0.50">
                        <TaxDescription>
                            <Text>GST 10 percent</Text>
                        </TaxDescription>
                    </Tax>
                </Taxes>
            </Total>
            <RateDescription>
                <Text>Extra person charge EUR 2.50 per day for cot</Text>
            </RateDescription>
        </Price>
        <ServiceDetails>
            <TimeSpan Start="2025-03-12" End="2025-03-14"/>
        </ServiceDetails>
    </Service>
    <!-- Additional Service elements -->
</Services>
```

<table><thead><tr><th width="262">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>Services</code></strong></td><td>Element</td><td align="center">0..1</td><td>Contains service details provided to guests.</td></tr><tr><td><code>Service</code></td><td>Element</td><td align="center">1..n</td><td>Represents a non-room product provided to guests.</td></tr><tr><td><code>@ServiceInventoryCode</code></td><td>String</td><td align="center">1</td><td>Identifier code for the service. Refer to <a href="/pages/CiYdiVL1WUiiuWGcKNmx">Service and Extra Charge</a>. Channels/OTA's will use this list as a guide to code the extras/services or can use their own codes as well. Please request the property or the channel for the full list of extras/services and the codes configured in each channel.</td></tr><tr><td><code>@ID</code></td><td>String</td><td align="center">0..1</td><td>Reference ID for the extra/service provided by the source booking channel.</td></tr><tr><td><code>@ServiceRPH</code></td><td>Integer</td><td align="center">0..1</td><td>Links the <code>Service</code> to a <code>RoomStay</code> or <code>RatePlan</code>. <code>ServiceRPH</code> absence indicates a HotelReservation-level charge.</td></tr><tr><td><code>@Inclusive</code></td><td>Boolean</td><td align="center">1</td><td>Must be set to <code>TRUE</code>, as SiteConnect reports totals as inclusive of charges and extras.</td></tr><tr><td><code>@Quantity</code></td><td>Integer</td><td align="center">1</td><td>Number of units included in the charge. This value does not affect the total amount.</td></tr><tr><td><code>@ID_Context</code></td><td>String</td><td align="center">0..1</td><td>Always <code>CHANNEL</code></td></tr><tr><td><code>@Type</code></td><td>Integer</td><td align="center">1</td><td>Always <code>18</code></td></tr><tr><td><code>Price</code></td><td>Element</td><td align="center">1</td><td>Container for pricing details of the service.</td></tr><tr><td><code>Base</code></td><td>Element</td><td align="center">0..1</td><td>Base amount <strong>per unit</strong> charged for the service.</td></tr><tr><td><code>@CurrencyCode</code></td><td>String</td><td align="center">0..1</td><td>Use <code>ISO 4217</code> currency codes.</td></tr><tr><td><code>@AmountAfterTax</code></td><td>Decimal</td><td align="center">0..1</td><td>At least one of <code>AmountAfterTax</code> or <code>AmountBeforeTax</code> must be set.</td></tr><tr><td><code>@AmountBeforeTax</code></td><td>Decimal</td><td align="center">0..1</td><td>At least one of <code>AmountAfterTax</code> or <code>AmountBeforeTax</code> must be set.</td></tr><tr><td><code>Taxes</code></td><td>Element</td><td align="center">0..1</td><td>Contains details of the taxes applied.</td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">0..1</td><td>Total taxes amount.</td></tr><tr><td><code>Tax</code></td><td>Element</td><td align="center">1</td><td>Contains specific tax information.</td></tr><tr><td><code>@Code</code></td><td></td><td align="center">1</td><td>Indicates the specific tax or fee that is being transferred. Refer to <a href="/pages/25577kjBcjKCgYHcsgBY">Fee Tax Type (FTT)</a>.</td></tr><tr><td><code>@Percentage</code></td><td>Decimal</td><td align="center">0..1</td><td>Percentage rate of the applied tax.</td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">0..1</td><td>Tax amount applied.</td></tr><tr><td><code>TaxDescription</code></td><td>Element</td><td align="center">0..1</td><td>Container for a detailed description of the tax.</td></tr><tr><td><code>Text</code></td><td>Element</td><td align="center">1</td><td>Text description of the tax.</td></tr><tr><td><code>Total</code></td><td>Element</td><td align="center">1</td><td>Container for the total amount of the service.</td></tr><tr><td><code>@CurrencyCode</code></td><td></td><td align="center">0..1</td><td>Use <code>ISO 4217</code> currency codes.</td></tr><tr><td><code>@AmountAfterTax</code></td><td>Decimal</td><td align="center">0..1</td><td>At least one of <code>AmountAfterTax</code> or <code>AmountBeforeTax</code> must be set.</td></tr><tr><td><code>@AmountBeforeTax</code></td><td>Decimal</td><td align="center">0..1</td><td>At least one of <code>AmountAfterTax</code> or <code>AmountBeforeTax</code> must be set.</td></tr><tr><td><code>Taxes</code></td><td>Element</td><td align="center">0..1</td><td>Contains details of the taxes applied.</td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">0..1</td><td>Total taxes amount.</td></tr><tr><td><code>Tax</code></td><td>Element</td><td align="center">1</td><td>Contains specific tax information.</td></tr><tr><td><code>@Code</code></td><td></td><td align="center">1</td><td>Indicates the specific tax or fee that is being transferred. Refer to <a href="/pages/25577kjBcjKCgYHcsgBY">Fee Tax Type (FTT)</a>.</td></tr><tr><td><code>@Percentage</code></td><td>Decimal</td><td align="center">0..1</td><td>Percentage rate of the applied tax.</td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">0..1</td><td>Tax amount applied.</td></tr><tr><td><code>TaxDescription</code></td><td>Element</td><td align="center">0..1</td><td>Container for a detailed description of the tax.</td></tr><tr><td><code>Text</code></td><td>Element</td><td align="center">1</td><td>Text description of the tax.</td></tr><tr><td><code>RateDescription</code></td><td>Element</td><td align="center">0..1</td><td>Container for a description of the rate applied to the service.</td></tr><tr><td><code>Text</code></td><td>Element</td><td align="center">1</td><td>A text description of the service/extra.</td></tr><tr><td><code>ServiceDetails</code></td><td>Element</td><td align="center">0..1</td><td>Container for additional service details.</td></tr><tr><td><code>TimeSpan</code></td><td>Element</td><td align="center">0..1</td><td>Contains the time span for which the service is provided.</td></tr><tr><td><code>@Start</code></td><td>Date</td><td align="center">0..1</td><td>Start date of service.</td></tr><tr><td><code>@End</code></td><td>Date</td><td align="center">0..1</td><td>Last date of service.</td></tr></tbody></table>

### ResGuests

```xml
<ResGuests>
    <ResGuest ResGuestRPH="1" ArrivalTime="10:30:00" Age="8" PrimaryIndicator="true">
        <Profiles>
            <ProfileInfo>
                <UniqueID Type="16" ID="12345" ID_Context="CHANNEL"/>
                <Profile ProfileType="1">
                    <Customer>
                        <PersonName>
                            <NamePrefix>Mr</NamePrefix>
                            <GivenName>James</GivenName>
                            <MiddleName>Herbert</MiddleName>
                            <Surname>Bond</Surname>
                        </PersonName>
                        <Telephone PhoneNumber="555-1234"/>
                        <Telephone PhoneNumber="555-4321" PhoneUseType="4"/>
                        <Telephone PhoneNumber="0411444000" PhoneTechType="5"/>
                        <Telephone PhoneNumber="213451515" PhoneTechType="3"/>
                        <Email>james.bond@mi5.co.uk</Email>
                        <Address>
                            <AddressLine>Claretta House</AddressLine>
                            <AddressLine>Tower Bridge Close</AddressLine>
                            <CityName>London</CityName>
                            <PostalCode>EC1 2PG</PostalCode>
                            <StateProv>Middlesex</StateProv>
                            <CountryName>United Kingdom</CountryName>
                        </Address>
                        <CustLoyalty MembershipID="1234567890" ProgramID="FrequentFlyer" ExpiryDate="2017-03-31"/>
                    </Customer>
                </Profile>
            </ProfileInfo>
        </Profiles>
        <Comments>
            <Comment Name="ArrivalDetails">
                <Text>Arriving by coach</Text>
            </Comment>
            <Comment Name="DepartureDetails">
                <Text>Departure flight QF123</Text>
            </Comment>
        </Comments>
    </ResGuest>
    <!-- Additional ResGuest elements -->
</ResGuests>
```

<table><thead><tr><th width="260">Element / @Attribute</th><th width="112">Type</th><th width="60" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>ResGuests</code></strong></td><td>Element</td><td align="center">1</td><td>Contains the guests for the reservation.</td></tr><tr><td><code>ResGuest</code></td><td>Element</td><td align="center">1..n</td><td>Contains the specific guest details.</td></tr><tr><td><code>@ResGuestRPH</code></td><td>Integer</td><td align="center">0..1</td><td>Links the <code>ResGuest</code> to <code>RoomStay</code>. Find the links in <a href="https://github.com/siteminder-au/gitbook/blob/master/sm-published-apis/.gitbook/includes/broken-reference/README.md">ResGuestRPHs</a>.</td></tr><tr><td><code>@PrimaryIndicator</code></td><td>Boolean</td><td align="center">0..1</td><td><p>Indicates the primary guest on a reservation:<br><code>1</code> - primary guest</p><p><code>0</code> - secondary guests</p></td></tr><tr><td><code>@Age</code></td><td>Integer</td><td align="center">0..1</td><td>The age of the guest</td></tr><tr><td><code>@ArrivalTime</code></td><td>Time</td><td align="center">0..1</td><td>Arrival time of the guest.</td></tr><tr><td><code>Profiles</code></td><td>Element</td><td align="center">1</td><td>Contains the guest profile information.</td></tr><tr><td><code>ProfileInfo</code></td><td>Element</td><td align="center">1</td><td>Contains the profile information for the guest.</td></tr><tr><td><code>UniqueID</code></td><td>Element</td><td align="center">0..n</td><td>Contains profile ids provided by the source channel.</td></tr><tr><td><code>@Type</code></td><td>Integer</td><td align="center">1</td><td>Always <code>16</code></td></tr><tr><td><code>@ID</code></td><td></td><td align="center">1</td><td>The reference identifier for the profile as provided by the source channel.</td></tr><tr><td><code>@ID_Context</code></td><td>String</td><td align="center">1</td><td><code>CHANNEL</code> - To specify that this is a channel reference id/</td></tr><tr><td><code>Profile</code></td><td>Element</td><td align="center">1</td><td>Contains detailed customer profile information.</td></tr><tr><td><code>@ProfileType</code></td><td>Integer</td><td align="center">1</td><td>Must be set to <code>1</code> (Customer).</td></tr><tr><td><code>Customer</code></td><td>Element</td><td align="center">1</td><td>Contains detailed guest information.</td></tr><tr><td><code>PersonName</code></td><td>Element</td><td align="center">1</td><td>Contains the name information for the guest.</td></tr><tr><td><code>@NamePrefix</code></td><td>String</td><td align="center">0..1</td><td>Title of the guest:<br>Mr. Mrs. Ms. Miss Dr.</td></tr><tr><td><code>@GivenName</code></td><td>String</td><td align="center">1</td><td>First name of the guest.</td></tr><tr><td><code>@MiddleName</code></td><td>String</td><td align="center">0..1</td><td>Middle name of the guest.</td></tr><tr><td><code>@Surname</code></td><td>String</td><td align="center">1</td><td>Last name of the guest.</td></tr><tr><td><code>Telephone</code></td><td>Element</td><td align="center">0..4</td><td>Contains telephone information related to the guest.</td></tr><tr><td><code>@PhoneNumber</code></td><td>String</td><td align="center">1</td><td>Contains the actual number (maximum 32 characters).</td></tr><tr><td><code>@PhoneUseType</code></td><td>Integer</td><td align="center">0..1</td><td>The type of phone use for example daytime, nighttime, work. If this field is blank this is the primary phone, otherwise PhoneUseType="4" denotes a secondary or nighttime phone</td></tr><tr><td><code>@PhoneTechType</code></td><td>Integer</td><td align="center">0..1</td><td><p>The type of phone technology. If not provided it should be assumed as a landline:</p><p><code>5</code> - Mobile<br><code>3</code> - Fax</p></td></tr><tr><td><code>Email</code></td><td>Element</td><td align="center">0..1</td><td>Contact email address.</td></tr><tr><td><code>Address</code></td><td>Element</td><td align="center">0..1</td><td>Address information of the guest.</td></tr><tr><td><code>@AddressLine</code></td><td>String</td><td align="center">0..n</td><td>Address lines for the guest.</td></tr><tr><td><code>@CityName</code></td><td>String</td><td align="center">0..1</td><td>City of residence.</td></tr><tr><td><code>@PostalCode</code></td><td>String</td><td align="center">0..1</td><td>Postal code.</td></tr><tr><td><code>@StateProv</code></td><td>String</td><td align="center">0..1</td><td>State or province name.</td></tr><tr><td><code>@CountryName</code></td><td>String</td><td align="center">0..1</td><td>Contains country information (maximum 64 characters). This is a free-text field, so a variety of formats may be received—for example: <em>Australia</em>, <em>AUS</em>, <em>AU</em>, etc.</td></tr><tr><td><code>CustLoyalty</code></td><td>Element</td><td align="center">0..1</td><td>Contains loyalty information for the customer.</td></tr><tr><td><code>@ProgramID</code></td><td>String</td><td align="center">0..1</td><td>The code or name of the membership program ('Hertz', 'AAdvantage', etc.).</td></tr><tr><td><code>@MembershipID</code></td><td>String</td><td align="center">0..1</td><td>Account identification number for this particular member in this particular program.</td></tr><tr><td><code>@ExpiryDate</code></td><td>Date</td><td align="center">0..1</td><td>Expiry date for this particular membership record in this particular program.</td></tr><tr><td><code>Document</code></td><td>Element</td><td align="center">0..1</td><td>Detailed document information for the guest.</td></tr><tr><td><code>@BirthCountry</code></td><td>String</td><td align="center">0..1</td><td>Birth country of the document holder. Use <code>ISO 3166</code> A-2 country codes.</td></tr><tr><td><code>@BirthDate</code></td><td>Date</td><td align="center">0..1</td><td>Indicates the date of birth as indicated in the document. Use <code>ISO 8601</code> date format.</td></tr><tr><td><code>@BirthPlace</code></td><td>String</td><td align="center">0..1</td><td>Specifies the birth place of the document holder (e.g., city, state, county, province).</td></tr><tr><td><code>@DocHolderNationality</code></td><td>String</td><td align="center">0..1</td><td>Country of nationality of the document holder. Use <code>ISO 3166</code> A-2 country codes.</td></tr><tr><td><code>@DocID</code></td><td>String</td><td align="center">1</td><td>Unique number assigned by authorities to the document.</td></tr><tr><td><code>@DocIssueAuthority</code></td><td>String</td><td align="center">0..1</td><td>Indicates the group or association that granted the document.</td></tr><tr><td><code>@DocIssueCountry</code></td><td>String</td><td align="center">0..1</td><td>Country where the document was issued. Use <code>ISO 3166</code> A-2 country codes.</td></tr><tr><td><code>@DocIssueLocation</code></td><td>String</td><td align="center">0..1</td><td>Indicates the location where the document was issued.</td></tr><tr><td><code>@DocIssueStateProv</code></td><td>String</td><td align="center">0..1</td><td>State or Province where the document was issued.</td></tr><tr><td><code>@DocType</code></td><td>String</td><td align="center">1</td><td>Indicates the type of document. Refer to <a href="/pages/mZ5VhSA8q98aQtJqawjh">Document Type Code (DOC)</a>.</td></tr><tr><td><code>@EffectiveDate</code></td><td>Date</td><td align="center">0..1</td><td>Indicates the starting date.</td></tr><tr><td><code>@ExpireDate</code></td><td>Date</td><td align="center">0..1</td><td>Indicates the ending date.</td></tr><tr><td><code>@Gender</code></td><td>String</td><td align="center">0..1</td><td><p>Identifies the gender:</p><p><code>Female</code></p><p><code>Male</code></p><p><code>Unknown</code></p></td></tr><tr><td><code>DocumentHolderName</code></td><td>Element</td><td align="center">0..1</td><td>The name of the document holder in unformatted text (Mr. Sam Jones). If no <code>DocumentHolderName</code> is included, the guest name fields will be assumed as the holder name.</td></tr><tr><td><code>Comments</code></td><td>Element</td><td align="center">0..1</td><td>Container for extra information about the guest.</td></tr><tr><td><code>Comment</code></td><td>Element</td><td align="center">0..2</td><td>Holds the actual comment.</td></tr><tr><td><code>@Name</code></td><td>String</td><td align="center">0..1</td><td><p>Identifier for the comment. Current supported names are:</p><p><code>ArrivalDetails</code><strong>:</strong> Details about the guest's mode of arrival.<br><code>DepartureDetails</code><strong>:</strong> Details about the guest's mode of departure.</p></td></tr><tr><td><code>Text</code></td><td>Element</td><td align="center">1</td><td><p>The content of the comment.</p><p><strong>PCI sensitive data is prohibited.</strong></p></td></tr></tbody></table>

### ResGlobalInfo

```xml
<ResGlobalInfo>
	<HotelReservationIDs>
		<HotelReservationID ResID_Type="14" ResID_Value="1234567890"/> <!-- OTA Reservation ID -->
		<HotelReservationID ResID_Type="26" ResID_Value="987654321"/> <!-- Itinerary ID -->
		<HotelReservationID ResID_Type="34" ResID_Value="74a63a92-d988-46b8-8476-3319285af8ac"/> <!-- Payment Context ID -->
	</HotelReservationIDs>
	<!-- ... other elements and attributes have been omitted for brevity ... -->
</ResGlobalInfo>
```

<table><thead><tr><th width="254">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>ResGlobalInfo</code></strong></td><td>Element</td><td align="center">1</td><td>Contains global information about the reservation.</td></tr><tr><td><code>HotelReservationIDs</code></td><td>Element</td><td align="center">0..1</td><td>Contains the <code>HotelReservationID</code>.</td></tr><tr><td><code>HotelReservationID</code></td><td>Element</td><td align="center">0..3</td><td>Reference number/string or PNR as supplied by the booking channel.<br>If this reservation is linked under an itinerary, the itinerary ID will be supplied as a second <code>HotelReservationID</code>.</td></tr><tr><td><code>@ResID_Type</code></td><td>String</td><td align="center">1</td><td><p>Will be one of the following values:</p><p><code>14</code> - OTA code for 'Travel Agent PNR'.</p><p><code>26</code> - OTA code for 'Associated itinerary reservation'.</p><p><code>34</code> - OTA code for “Master Reference”.</p></td></tr><tr><td><code>@ResID_Value</code></td><td>String</td><td align="center">1</td><td><p>For <code>@ResID_Type 14</code> this is the actual reference number/string supplied by the booking channel (maximum 64 characters).</p><p>For <code>@ResID_Type 26</code> will be the itinerary identifier for one or more bookings in an itinerary as provided by the source booking channel.</p><p><br>For <code>@ResID_Type 34</code> this is the reference number/string used as identifier for payment transaction. Refer to <a href="/pages/Zy5xk8cPknCwaamkKKyl">Payment Transaction Record</a>.</p><p><br><code>ResID_Value</code> could potentially contain special characters such as <code>/</code>.</p></td></tr></tbody></table>

### ResComments

```xml
<Comments>
	<Comment>
		<Text>See the reservation comments here</Text>
	</Comment>
	<!-- Additional Comment elements -->
</Comments>
```

<table><thead><tr><th width="234">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>Comments</code></strong></td><td>Element</td><td align="center">0..1</td><td>Contains comment for the reservation.</td></tr><tr><td><code>Comment</code></td><td>Element</td><td align="center">1..n</td><td>Holds the actual comment.</td></tr><tr><td><code>Text</code></td><td>String</td><td align="center">1</td><td><p>Content of the comment.</p><p><strong>PCI sensitive data is prohibited.</strong></p></td></tr></tbody></table>

### ReservationTotal

{% hint style="info" %}
It includes all room stay totals plus any services or extras applied at the reservation level that are not reflected in individual room stay totals. Always use ResGlobalInfo.Total as the final reservation amount. Do not rely solely on RoomStay.Total.
{% endhint %}

```xml
<Total CurrencyCode="EUR" AmountBeforeTax="558.00" AmountAfterTax="620.00">
	<Taxes Amount="62.00">
		<Tax Code="35" Amount="62.00" Percent="10" CurrencyCode="EUR"/>
	</Taxes>
</Total>
```

<table><thead><tr><th width="254">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>Total</code></strong></td><td>Element</td><td align="center">0..1</td><td>Total amount for the reservation. This includes all <code>RoomStays</code> and any additional fees or charges that apply.</td></tr><tr><td><code>@CurrencyCode</code></td><td>String</td><td align="center">1</td><td>Use <code>ISO 4217</code> currency codes.</td></tr><tr><td><code>@AmountBeforeTax</code></td><td>Decimal</td><td align="center">0..1</td><td>At least one of <code>AmountAfterTax</code> or <code>AmountBeforeTax</code> must be set.</td></tr><tr><td><code>@AmountAfterTax</code></td><td>Decimal</td><td align="center">0..1</td><td>At least one of <code>AmountAfterTax</code> or <code>AmountBeforeTax</code> must be set.</td></tr><tr><td><code>Taxes</code></td><td>Element</td><td align="center">0..1</td><td>Contains details of the taxes applied.</td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">0..1</td><td>Total tax amount.</td></tr><tr><td><code>Tax</code></td><td>Element</td><td align="center">1</td><td>Contains specific tax information.</td></tr><tr><td><code>@Code</code></td><td>String</td><td align="center">0..1</td><td>Indicates the specific tax or fee that is being transferred. Refer to <a href="/pages/25577kjBcjKCgYHcsgBY">Fee Tax Type (FTT)</a>.</td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">0..1</td><td>Tax amount applied.</td></tr><tr><td><code>@Percent</code></td><td></td><td align="center">0..1</td><td>Tax percentage applied.</td></tr><tr><td><code>@CurrencyCode</code></td><td>String</td><td align="center">0..1</td><td>Use <code>ISO 4217</code> currency codes.</td></tr></tbody></table>

### Memberships

```xml
<Memberships>
    <Membership ProgramCode="AAdvantage" AccountID="AA14567890"/>
</Memberships>
```

<table><thead><tr><th width="234">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>Memberships</code></strong></td><td>Element</td><td align="center">0..1</td><td>A list of Memberships. Memberships provides a list of reward programs. This data is taken from <code>ResGuest / CustLoyalty</code>.</td></tr><tr><td><code>Membership</code></td><td>Element</td><td align="center">0..n</td><td></td></tr><tr><td><code>ProgramCode</code></td><td>String</td><td align="center">0..1</td><td>The code or name of the membership program ('Hertz', 'AAdvantage', etc.). Equivalent to <code>ProgramID</code>.</td></tr><tr><td><code>AccountID</code></td><td>String</td><td align="center">0..1</td><td>The account identification number for this particular member in this particular program. Equivalent to <code>MembershipID</code>.</td></tr></tbody></table>

### Fees

```xml
<Fees>
    <Fee TaxInclusive="true" Type="Inclusive" Code="27" Amount="5.00">
        <Taxes Amount="0.45"/>
        <Description Name="Commission">
            <Text>Commission - $5 flat fee</Text>
        </Description>
    </Fee>
</Fees>
```

<table><thead><tr><th width="234">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>Fees</code></strong></td><td>Element</td><td align="center">0..1</td><td>Container for added fees/commission.</td></tr><tr><td><code>Fee</code></td><td>Element</td><td align="center">1..n</td><td>The actual fees/commission.</td></tr><tr><td><code>@TaxInclusive</code></td><td>String</td><td align="center">1</td><td><p>Content of the comment.</p><p>PCI sensitive data is prohibited.</p></td></tr><tr><td><code>@Type</code></td><td>Integer</td><td align="center">1</td><td>Always <code>Inclusive</code></td></tr><tr><td><code>@Code</code></td><td>Integer</td><td align="center">1</td><td>See <a href="https://siteminder.atlassian.net/wiki/pages/viewpage.action?pageId=1602940">OTA Fee Tax Type (FTT)</a> code table.</td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">0..1</td><td>Commission amount.</td></tr><tr><td><code>Taxes</code></td><td>Element</td><td align="center">0..1</td><td>Taxes amount.</td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">0..1</td><td>Actual tax amount.</td></tr><tr><td><code>Description</code></td><td>Element</td><td align="center">0..1</td><td>Container of the comission <code>Text</code>.</td></tr><tr><td><code>@Name</code></td><td>String</td><td align="center">0..1</td><td><code>Commission</code> against the total of the reservation.</td></tr><tr><td><code>Text</code></td><td>Element</td><td align="center">0..1</td><td>A description of the fee.</td></tr></tbody></table>

### Guarantee

If the PMS is not PCI compliant, it will **not** receive credit card information directly. However, you can choose to work with a proxy service provider for [**credit card tokenization**](https://developer.siteminder.com/siteminder-apis/pms-rms/introduction/pmsxchange/api-reference/reservations/credit-card-tokenization).

{% tabs %}
{% tab title="Credit Card" %}

```xml
<Guarantee>
    <GuaranteesAccepted>
        <GuaranteeAccepted>
            <PaymentCard CardCode="VI" CardType="1" CardNumber="4444444444444444" ExpireDate="1114">
                <CardHolderName>John Smith</CardHolderName>
            </PaymentCard>
        </GuaranteeAccepted>
    </GuaranteesAccepted>
    <Comments>
        <Comment Name="PaymentReferenceId">
            <Text>123124151616</Text>
        </Comment>
    </Comments>
    <GuaranteeDescription>
        <Text>Payment accepted up front</Text>
    </GuaranteeDescription>
</Guarantee>
```

{% endtab %}

{% tab title="ThreeDomainSecurity" %}

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

{% endtab %}

{% tab title="Payment Gateway" %}

```xml
<Guarantee>
    <GuaranteesAccepted>
        <GuaranteeAccepted/>
    </GuaranteesAccepted>
    <Comments>
        <Comment Name="PaymentGatewayName">
            <Text>Paypal</Text>
        </Comment>
        <Comment Name="PaymentGatewayAuthCode">
            <Text>123143253467</Text>
        </Comment>
        <Comment Name="PaymentReferenceId">
            <Text>123124151616</Text>
        </Comment>
    </Comments>
    <GuaranteeDescription>
        <Text>Payment accepted up front</Text>
    </GuaranteeDescription>
</Guarantee>
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="274">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>Guarantee</code></strong></td><td>Element</td><td align="center">0..1</td><td>Guarantee provided with the reservation. Used if no deposit is paid for the reservation.</td></tr><tr><td><code>GuaranteesAccepted</code></td><td>Element</td><td align="center">1</td><td>Contains the details of accepted guarantees.</td></tr><tr><td><code>GuaranteeAccepted</code></td><td>Element</td><td align="center">1</td><td>Specific details of the accepted guarantee.</td></tr><tr><td><code>PaymentCard</code></td><td>Element</td><td align="center">1</td><td>Details of the payment card used for the guarantee.</td></tr><tr><td><code>@CardType</code></td><td>String</td><td align="center">0..1</td><td>Must be set to <code>1</code> (Credit Card) or <code>2</code> (Debit Card).</td></tr><tr><td><code>@CardCode</code></td><td>String</td><td align="center">1</td><td>2-character code of the credit card issuer. Refer to <a href="/pages/Iqs1qAbBKAcBqhyyZHQt">Payment Card Provider Codes</a>.</td></tr><tr><td><code>@CardNumber</code></td><td>String</td><td align="center">0..1</td><td>Actual credit card number.</td></tr><tr><td><code>@ExpireDate</code></td><td>String</td><td align="center">0..1</td><td>Expiry date of the credit card (format <code>MMyy</code>).</td></tr><tr><td><code>@MaskedCardNumber</code></td><td>String</td><td align="center">0..1</td><td>May be used to send a concealed or partial credit card number (e.g. "xxxxxxxxxxxx4444" or "4444").</td></tr><tr><td><code>CardHolderName</code></td><td>Element</td><td align="center">0..1</td><td>Name of the cardholder.</td></tr><tr><td><code>ThreeDomainSecurity</code></td><td>Element</td><td align="center">0..1</td><td>Contains <code>3DS</code> (Three Domain Security) transaction details.</td></tr><tr><td><code>Results</code></td><td>Element</td><td align="center">1</td><td>Transaction results.<br><em><strong>IMPORTANT NOTE:</strong></em> <em><code>SCA / 3DS</code> details will only be provided if received from an <code>SCA / 3DS</code> compatible booking agent.</em></td></tr><tr><td><code>@ThreeDSVersion</code></td><td>String</td><td align="center">1</td><td><code>3DS</code> version used for authentication.</td></tr><tr><td><code>@XID</code></td><td>String</td><td align="center">0..1</td><td><p>Transaction identifier resulting from authentication processing.</p><p>When <code>ThreeDSVersion</code> = 1.x.x the transaction identifier MUST be provided in the <code>@XID</code> attribute.</p></td></tr><tr><td><code>@DSTransactionID</code></td><td>String</td><td align="center">0..1</td><td><p>Unique transaction identifier assigned by the Directory Server (DS) to identify a single transaction.</p><p>When <code>ThreeDSVersion</code> = 2.x.x the transaction identifier MUST be provided in the <code>@DSTransactionID</code> attribute.</p></td></tr><tr><td><code>@CAVV</code></td><td>String</td><td align="center">0..1</td><td>Cardholder Authentication Verification Value (CAVV); Authentication Verification Value (AVV); Universal Cardholder Authentication Field (UCAF)</td></tr><tr><td><code>@ECI</code></td><td>String</td><td align="center">1</td><td>Refer to <a href="https://developer.siteminder.com/sm-apis/additional-resources/reference-tables/strong-customer-authentication-codes#electronic-commerce-indicator">Electronic Commerce Indicator</a>.</td></tr><tr><td><code>@PAResStatus</code></td><td>String</td><td align="center">0..1</td><td>Refer to <a href="https://developer.siteminder.com/sm-apis/additional-resources/reference-tables/strong-customer-authentication-codes#transactions-status-result-identifier">Transactions Status Result Identifier</a>.</td></tr><tr><td><code>@SignatureVerification</code></td><td>String</td><td align="center">0..1</td><td>Refer to <a href="https://developer.siteminder.com/sm-apis/additional-resources/reference-tables/strong-customer-authentication-codes#transaction-signature-status">Transaction Signature Status</a>.</td></tr><tr><td><code>@Enrolled</code></td><td>String</td><td align="center">0..1</td><td>Refer to <a href="https://developer.siteminder.com/sm-apis/additional-resources/reference-tables/strong-customer-authentication-codes#status-of-authentication">Status of Authentication</a>.</td></tr><tr><td><code>Comments</code></td><td>Element</td><td align="center">0..1</td><td>The actual information related to the payment.</td></tr><tr><td><code>Comment</code></td><td>Element</td><td align="center">1..3</td><td>Holds the actual comment.</td></tr><tr><td><code>@Name</code></td><td>String</td><td align="center">1</td><td><p>Current supported names:</p><p><code>PaymentGatewayName</code>: The name of the payment gateway<br><code>PaymentGatewayAuthCode</code>: The authorization code of the payment gateway<br><code>PaymentReferenceId</code>: If a reference was provided for any payment</p></td></tr><tr><td><code>Text</code></td><td>Element</td><td align="center">1</td><td><p>Information related to the payment.</p><p><strong>PCI sensitive data is prohibited.</strong></p></td></tr><tr><td><code>GuaranteeDescription</code></td><td>Element</td><td align="center">0..1</td><td>Information about the form of guarantee.</td></tr><tr><td><code>Text</code></td><td>Element</td><td align="center">1</td><td><p>Information related to the guarantee.</p><p><strong>PCI sensitive data is prohibited.</strong></p></td></tr></tbody></table>

### DepositPayments

{% tabs %}
{% tab title="Deposit Only" %}

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

{% endtab %}

{% tab title="Credit Card + Deposit" %}

```xml
<Guarantee>
    <GuaranteesAccepted>
        <GuaranteeAccepted>
            <PaymentCard CardCode="VI" CardType="1" CardNumber="4444444444444444" ExpireDate="1114">
                <CardHolderName>Bruce Wayne</CardHolderName>
            </PaymentCard>
        </GuaranteeAccepted>
    </GuaranteesAccepted>
</Guarantee>
<DepositPayments>
    <GuaranteePayment>
        <AmountPercent Amount="30.00" CurrencyCode="USD" Percent="20.00"/>
        <Description>
            <Text>20% Deposit</Text>
        </Description>
    </GuaranteePayment>
</DepositPayments>
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="270">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>DepositPayments</code></strong></td><td>Element</td><td align="center">0..1</td><td>Deposit provided with the reservation.</td></tr><tr><td><code>GuaranteePayment</code></td><td>Element</td><td align="center">1</td><td>Contains details of the payment guarantee for the reservation.</td></tr><tr><td><code>AmountPercent</code></td><td>Element</td><td align="center">1</td><td>Represents the percentage of the total charge allocated for the deposit, rounded to two decimal places.<br>If <code>Total/AmountAfterTax</code> is provided, the percentage will be based on that value. Otherwise, if only <code>Total/AmountBeforeTax</code> is provided, the percentage will be calculated based on that value.</td></tr><tr><td><code>@Amount</code></td><td>Decimal</td><td align="center">0..1</td><td>A monetary amount taken for the deposit.</td></tr><tr><td><code>@CurrencyCode</code></td><td>String</td><td align="center">0..1</td><td>Use <code>ISO 4217</code> currency codes.</td></tr><tr><td><code>@Percent</code></td><td>Integer</td><td align="center">0..1</td><td>The percentage used to calculate the amount.</td></tr><tr><td><code>@TaxInclusive</code></td><td></td><td align="center">0..1</td><td>Indicates if tax is included in <code>@Amount</code></td></tr><tr><td><code>Description</code></td><td>Element</td><td align="center">0..1</td><td>Contained of the deposit description <code>Text</code>.</td></tr><tr><td><code>Text</code></td><td>Element</td><td align="center">1</td><td>Text description.</td></tr></tbody></table>

### Customer / Corporate / TravelAgent

{% tabs %}
{% tab title="Customer" %}
**Customer:** The individual who made the booking and serves as the primary contact for the reservation. This may or may not be the same person as the guest staying in the room.

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

```xml
<Profiles>
    <ProfileInfo>
        <UniqueID Type="16" ID="12345" ID_Context="CHANNEL"/>
        <Profile ProfileType="1" ShareAllMarketInd="true">
            <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>
                <PersonName>
                    <NamePrefix>Mr</NamePrefix>
                    <GivenName>James</GivenName>
                    <MiddleName>Herbert</MiddleName>
                    <Surname>Bond</Surname>
                </PersonName>
                <Telephone PhoneNumber="555-1234"/>
                <Telephone PhoneNumber="555-4321" PhoneUseType="4"/>
                <Telephone PhoneNumber="0411444000" PhoneTechType="5"/>
                <Telephone PhoneNumber="213451515" PhoneTechType="3"/>
                <Email>james.bond@mi5.co.uk</Email>
                <Address>
                    <AddressLine>Claretta House</AddressLine>
                    <AddressLine>Tower Bridge Close</AddressLine>
                    <CityName>London</CityName>
                    <PostalCode>EC1 2PG</PostalCode>
                    <StateProv>Middlesex</StateProv>
                    <CountryName>United Kingdom</CountryName>
                    <CompanyName>MI6</CompanyName>
                </Address>
                <CustLoyalty MembershipID="1234567890" ProgramID="FrequentFlyer" ExpiryDate="2017-03-31"/>
            </Customer>
        </Profile>
    </ProfileInfo>
    <!-- Additional ProfileInfo elements -->
</Profiles>    
```

{% endcode %}
{% endtab %}

{% tab title="Corporate" %}
**Corporate:** The company or organisation associated with the booking, typically where a negotiated corporate rate applies or the reservation is billed to a company account.

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

```xml
<Profiles>
    <ProfileInfo>
        <Profile ProfileType="1">
            <!-- ... other elements and attributes have been omitted for brevity ... -->
        </Profile>
    </ProfileInfo>
    <!-- Additional ProfileInfo element -->                    
    <ProfileInfo>
        <UniqueID Type="16" ID="4444" ID_Context="IATA"/>
        <Profile ProfileType="3">
            <Customer>
                <PersonName>
                    <NamePrefix>Joe</NamePrefix>
                    <Surname>Smith</Surname>
                </PersonName>
                <Telephone PhoneNumber="555-1234"/>
                <Address>
                <CompanyName>American Express</CompanyName>
                </Address>
        </Customer>
    </Profile>
</ProfileInfo>
</Profiles>
```

{% endcode %}
{% endtab %}

{% tab title="Travel Agent" %}
**Travel Agent:** The agency or intermediary that sourced the booking on behalf of the customer, typically identified by an IATA or ARC number for commission reconciliation purposes.

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

```xml
<Profiles>
    <ProfileInfo>
        <Profile ProfileType="1">
            <!-- ... other elements and attributes have been omitted for brevity ... -->
        </Profile>
    </ProfileInfo>
    <!-- Additional ProfileInfo element -->                    
    <ProfileInfo>
        <UniqueID Type="16" ID="STA" ID_Context="CHANNEL"/>
        <UniqueID Type="16" ID="12312414" ID_Context="IATA"/>
        <Profile ProfileType="4">
            <Customer>
                <PersonName>
                    <NamePrefix>Mis</NamePrefix>
                    <Surname>Moneypenny</Surname>
                </PersonName>
                <Telephone PhoneNumber="555-1234"/>
                <Address>
                <CompanyName>STA Travel</CompanyName>
                </Address>
        </Customer>
    </Profile>
</ProfileInfo>
</Profiles>
```

{% endcode %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="260">Element / @Attribute</th><th width="112">Type</th><th width="60" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>Profiles</code></strong></td><td>Element</td><td align="center">1</td><td>Contains the profile information.</td></tr><tr><td><code>ProfileInfo</code></td><td>Element</td><td align="center">1..3</td><td>Contains the profiles.</td></tr><tr><td><code>UniqueID</code></td><td>Element</td><td align="center">0..n</td><td>Contains profile ids provided by the source channel. Available for <code>ProfileType 3</code> (Corporate) and <code>ProfileType 4</code> (Travel Agent)</td></tr><tr><td><code>@Type</code></td><td>Integer</td><td align="center">1</td><td>Always <code>16</code></td></tr><tr><td><code>@ID</code></td><td></td><td align="center">1</td><td>The reference identifier for the profile as provided by the source channel</td></tr><tr><td><code>@ID_Context</code></td><td>String</td><td align="center">1</td><td><code>CHANNEL</code> To specify that this is a channel reference id<br><code>IATA</code> To specify that this is an IATA identifier for a travel agent</td></tr><tr><td><code>Profile</code></td><td>Element</td><td align="center">1</td><td>Contains detailed customer profile information.</td></tr><tr><td><code>@ProfileType</code></td><td>Integer</td><td align="center">1</td><td><p>Defines the type of profile:</p><p><code>1</code> - Customer <strong>(mandatory)</strong><br><code>2</code> - GDS (optional)</p><p><code>3</code> - Corporate (optional)</p><p><code>4</code> - Travel Agent (optional)<br><code>5</code> - Wholesaler (optional)<br><code>21</code> - Arranger (optional)</p></td></tr><tr><td><code>@ShareAllMarketInd</code></td><td>Boolean</td><td align="center">0..1</td><td>Customer has 'opted in' to receive marking information (EU Customers).</td></tr><tr><td><code>@ShareAllOptOutInd</code></td><td>Boolean</td><td align="center">0..1</td><td>Customer has 'opted out' of receiving marking information (Non EU).</td></tr><tr><td><code>Customer</code></td><td>Element</td><td align="center">1</td><td>Contains detailed guest information.</td></tr><tr><td><code>PersonName</code></td><td>Element</td><td align="center">1</td><td>Contains the name information for the guest.</td></tr><tr><td><code>NamePrefix</code></td><td>Element</td><td align="center">0..1</td><td>Title of the guest.</td></tr><tr><td><code>GivenName</code></td><td>Element</td><td align="center">1</td><td>First name of the guest.</td></tr><tr><td><code>MiddleName</code></td><td>Element</td><td align="center">0..1</td><td>Middle name of the guest.</td></tr><tr><td><code>Surname</code></td><td>Element</td><td align="center">1</td><td>Last name of the guest.</td></tr><tr><td><code>Telephone</code></td><td>Element</td><td align="center">0..4</td><td>Contains telephone information related to the guest.</td></tr><tr><td><code>@PhoneNumber</code></td><td>String</td><td align="center">1</td><td>Contains the actual number (maximum 32 characters).</td></tr><tr><td><code>@PhoneUseType</code></td><td>Integer</td><td align="center">0..1</td><td>The type of phone use for example daytime, nighttime, work. If this field is blank this is the primary phone, otherwise PhoneUseType="4" denotes a secondary or nighttime phone.</td></tr><tr><td><code>@PhoneTechType</code></td><td>Integer</td><td align="center">0..1</td><td><p>The type of phone technology. If not provided it should be assumed as a landline</p><p><code>5</code> - Mobile<br><code>3</code> - Fax</p></td></tr><tr><td><code>Email</code></td><td>Element</td><td align="center">0..1</td><td>Contact email address.</td></tr><tr><td><code>Address</code></td><td>Element</td><td align="center">0..1</td><td>Address information of the guest.</td></tr><tr><td><code>AddressLine</code></td><td>Element</td><td align="center">0..n</td><td>Address lines for the guest.</td></tr><tr><td><code>CityName</code></td><td>Element</td><td align="center">0..1</td><td>City of residence.</td></tr><tr><td><code>PostalCode</code></td><td>Element</td><td align="center">0..1</td><td>Postal code.</td></tr><tr><td><code>StateProv</code></td><td>Element</td><td align="center">0..1</td><td>State or province name.</td></tr><tr><td><code>CountryName</code></td><td>Element</td><td align="center">0..1</td><td>Contains country information (maximum 64 characters). This is a free-text field, so a variety of formats may be received—for example: <em>Australia</em>, <em>AUS</em>, <em>AU</em>, etc.</td></tr><tr><td><code>CompanyName</code></td><td>Element</td><td align="center">1</td><td>Name of the company. Used for <code>ProfileType 3</code> (Corporate) and <code>ProfileType 4</code> (Travel Agent) only. While can be received in <code>ProfileType 1</code> , it is not standard practice.</td></tr><tr><td><code>CustLoyalty</code></td><td>Element</td><td align="center">0..1</td><td>Contains loyalty information for the customer.</td></tr><tr><td><code>@ProgramID</code></td><td>String</td><td align="center">0..1</td><td>Defined membership program name or ID applicable to the program.</td></tr><tr><td><code>@MembershipID</code></td><td>String</td><td align="center">0..1</td><td>Account identification number for this particular member in this particular program.</td></tr><tr><td><code>@ExpiryDate</code></td><td>Date</td><td align="center">0..1</td><td>Expiry date for this particular membership record in this particular program.</td></tr><tr><td><code>Document</code></td><td>Element</td><td align="center">0..1</td><td>Detailed document information for the guest.</td></tr><tr><td><code>@BirthCountry</code></td><td>String</td><td align="center">0..1</td><td>Birth country of the document holder. Use <code>ISO 3166</code> A-2 country codes.</td></tr><tr><td><code>@BirthDate</code></td><td>Date</td><td align="center">0..1</td><td>Indicates the date of birth as indicated in the document. Use <code>ISO 8601</code> date format.</td></tr><tr><td><code>@BirthPlace</code></td><td>String</td><td align="center">0..1</td><td>Specifies the birth place of the document holder (e.g., city, state, county, province).</td></tr><tr><td><code>@DocHolderNationality</code></td><td>String</td><td align="center">0..1</td><td>Country of nationality of the document holder. Use <code>ISO 3166</code> A-2 country codes.</td></tr><tr><td><code>@DocID</code></td><td>String</td><td align="center">1</td><td>Unique number assigned by authorities to the document.</td></tr><tr><td><code>@DocIssueAuthority</code></td><td>String</td><td align="center">0..1</td><td>Indicates the group or association that granted the document.</td></tr><tr><td><code>@DocIssueCountry</code></td><td>String</td><td align="center">0..1</td><td>Country where the document was issued. Use <code>ISO 3166</code> A-2 country codes.</td></tr><tr><td><code>@DocIssueLocation</code></td><td>String</td><td align="center">0..1</td><td>Indicates the location where the document was issued.</td></tr><tr><td><code>@DocIssueStateProv</code></td><td>String</td><td align="center">0..1</td><td>State or Province where the document was issued.</td></tr><tr><td><code>@DocType</code></td><td>String</td><td align="center">1</td><td>Indicates the type of document. Refer to <a href="/pages/mZ5VhSA8q98aQtJqawjh">Document Type Code (DOC)</a>.</td></tr><tr><td><code>@EffectiveDate</code></td><td>Date</td><td align="center">0..1</td><td>Indicates the starting date.</td></tr><tr><td><code>@ExpireDate</code></td><td>Date</td><td align="center">0..1</td><td>Indicates the ending date.</td></tr><tr><td><code>@Gender</code></td><td>String</td><td align="center">0..1</td><td><p>Identifies the gender:</p><p><code>Female</code></p><p><code>Male</code></p><p><code>Unknown</code></p></td></tr><tr><td><code>DocumentHolderName</code></td><td>Element</td><td align="center">0..1</td><td>The name of the document holder in unformatted text (Mr. Sam Jones). If no <code>DocumentHolderName</code> is included, the guest name fields will be assumed as the holder name.</td></tr></tbody></table>

### BasicPropertyInfo

```xml
<BasicPropertyInfo HotelCode="HOTELCODE" HotelName="The Hotel Name"/>
```

<table><thead><tr><th width="253">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>BasicPropertyInfo</code></strong></td><td>Element</td><td align="center">0..1</td><td>Contains basic identification details for the hotel associated with the reservation.<br><code>BasicPropertyInfo</code> will always be sent as either part of the <a href="https://github.com/siteminder-au/gitbook/blob/master/sm-published-apis/.gitbook/includes/broken-reference/README.md">RoomStay</a> or <a href="https://github.com/siteminder-au/gitbook/blob/master/sm-published-apis/.gitbook/includes/broken-reference/README.md">ResGlobalInfo</a>, depending on your setup in SiteMinder. We recommend receiving the <code>BasicPropertyInfo</code> as part of the <code>ResGlobalInfo</code> due to how Booking.com cancellation messages are sent.</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>@HotelName</code></td><td>String</td><td align="center">0..1</td><td>Name of the hotel.</td></tr></tbody></table>

***

## 2. Confirmation Response

The `OTA_HotelResNotifRS` message is sent from the PMS in response to the `OTA_HotelResNotifRQ` request. It confirms whether the reservation was successfully received and stored by the PMS, or reports any errors that prevented processing.

This response is critical for SiteMinder's delivery confirmation. Based on your response, SiteMinder will either mark the reservation as delivered (success) or continue retry attempts (failure or timeout).

**Timing Requirements**

* The response **must be returned within 60 seconds** of receiving the request.
* Responses taking longer than 60 seconds are treated as failures and trigger retries.
* The response must be valid SOAP/XML - HTML error pages or plain text will be treated as failures

If no valid response is received, **SiteMinder will retry** the request according to this schedule:

* **First 10 attempts**: Once every minute.
* **From the 11th attempt onward**: Retries occur every 5 minutes.
* **Retry duration**: This continues until a successful response is received or the request **times out**.

**Response Behaviour Impact**

Your response type determines SiteMinder's behaviour. Only return an error response for permanent failures (e.g. invalid credentials, HotelCode not found). For temporary issues (e.g. service unavailable, bad gateway, service under maintenance), let the request timeout to allow retry.

<table data-header-hidden><thead><tr><th width="267.66015625"></th><th></th></tr></thead><tbody><tr><td><strong>Success Response (<code>&#x3C;Success/></code>)</strong></td><td><ul><li>Delivery confirmed, no retries.</li><li>Reservation marked as successfully delivered.</li></ul></td></tr><tr><td><strong>Error Response (<code>&#x3C;Errors></code>)</strong></td><td><ul><li>Delivery confirmed but reservation rejected</li><li>No retries - this is a final decision</li><li>Reservation marked as failed</li><li>Property receives error notification</li><li>Manual intervention required to reprocess</li></ul></td></tr><tr><td><strong>No/Invalid Response (timeout, HTTP error, invalid XML)</strong></td><td><ul><li>Triggers automatic retry mechanism.</li><li>Follows retry schedule (1 min × 10, then 5 min intervals).</li><li>Reservation remains in pending until successful or time out.</li></ul></td></tr></tbody></table>

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

* The presence of the `<Success/>` element indicates that the reservation was created in the PMS.
* The `HotelReservationID` holds the ID of the newly created reservation in the PMS.

```xml
<SOAP-ENV:Envelope
	xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<SOAP-ENV:Header/>
	<SOAP-ENV:Body>
		<OTA_HotelResNotifRS
			xmlns="http://www.opentravel.org/ota/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" Version="1.0" TimeStamp="2024-07-06T15:27:47+00:00">
			<Success/>
			<HotelReservations>
				<HotelReservation>
					<ResGlobalInfo>
						<HotelReservationIDs>
							<HotelReservationID ResID_Source="PMS" ResID_Type="40" ResID_Value="ABC-1234567890"/>
						</HotelReservationIDs>
					</ResGlobalInfo>
				</HotelReservation>
			</HotelReservations>
		</OTA_HotelResNotifRS>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}

{% tab title="Error Response" %}

* The presence of the `<Error/>` element indicates that the reservation was **not created** in the PMS.
* **No** **`HotelReservationID`** is present if the PMS was unable to save the reservation.

```xml
<SOAP-ENV:Envelope
	xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<SOAP-ENV:Header/>
	<SOAP-ENV:Body>
		<OTA_HotelResNotifRS
			xmlns="http://www.opentravel.org/ota/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" Version="1.0" TimeStamp="2024-07-06T15:27:47+00:00">
			<Errors>
				<Error ShortText="Property not found with HotelCode: ABC"/>
			</Errors>
		</OTA_HotelResNotifRS>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="253">Element / @Attribute</th><th width="112">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>OTA_HotelResNotifRS</code></strong></td><td>Element</td><td align="center">1</td><td>Root element.</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. Preferred format: UUID <code>8-4-4-4-12</code>.</td></tr><tr><td><code>@TimeStamp</code></td><td>DateTime</td><td align="center">1</td><td>Time when the response was generated. <code>TimeStamp</code> must use <code>ISO 8601</code> format.</td></tr><tr><td><code>@Version</code></td><td>String</td><td align="center">1</td><td>Specifies the API version.<br>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>Either <code>Success</code> or <code>Error</code> element present.</td></tr><tr><td><code>Errors</code></td><td>Element</td><td align="center">0..1</td><td>Contains a list of errors.</td></tr><tr><td><code>Error</code></td><td>Element</td><td align="center">1</td><td>Should be at least one node if there is an <code>Errors</code> node.</td></tr><tr><td><code>@ShortText</code></td><td>String</td><td align="center">1</td><td>An abbreviated, human-readable version of the error message that still provides enough context to understand the issue.</td></tr><tr><td><code>HotelReservations</code></td><td>Element</td><td align="center">1</td><td>Root Element.<br>Mandatory if <code>Success</code> is sent.</td></tr><tr><td><code>HotelReservation</code></td><td>Element</td><td align="center">1</td><td>Contains the specific reservation information.</td></tr><tr><td><code>ResGlobalInfo</code></td><td>Element</td><td align="center">1</td><td><strong>Mandatory</strong> if the reservation is part of a successful delivery batch.</td></tr><tr><td><code>HotelReservationIDs</code></td><td>Element</td><td align="center">1</td><td>Contains PMS reservation identifier.</td></tr><tr><td><code>HotelReservationID</code></td><td>Element</td><td align="center">1</td><td>PMS reservation identifier.</td></tr><tr><td><code>@ResID_Source</code></td><td>String</td><td align="center">1</td><td>Always <code>PMS</code></td></tr><tr><td><code>@ResID_Type</code></td><td>Integer</td><td align="center">1</td><td>Always <code>40</code></td></tr><tr><td><code>@ResID_Value</code></td><td>String</td><td align="center">1</td><td>The identifier of the reservation created by the PMS. This is the reservation ID in the PMS.</td></tr></tbody></table>

## Reservation XML Samples

<details>

<summary>Maximum Content XML</summary>

{% code overflow="wrap" %}

```xml
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><wsse:Security SOAP-ENV:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><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_HotelResNotifRQ xmlns="http://www.opentravel.org/ota/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" PrimaryLangID="en-us" ResStatus="Commit" Target="Production" TimeStamp="2024-07-06T15:27:41+00:00" Version="2.001"><HotelReservation CreateDateTime="2024-07-06T15:23:35+00:00" ResStatus="Book"><POS><Source><RequestorID Type="22" ID="SITEMINDER"/><BookingChannel Primary="true" Type="7"><CompanyName Code="EXP">Expedia</CompanyName></BookingChannel></Source><Source><BookingChannel Primary="false" Type="7"><CompanyName Code="EXPA">Expedia Affilate Account</CompanyName></BookingChannel></Source></POS><UniqueID Type="14" ID="ABC-1234567890"/><UniqueID Type="16" ID="isuokfr1pyc2ntest7" ID_Context="MESSAGE_UNIQUE_ID"/><RoomStays><RoomStay MarketCode="Corporate" PromotionCode="STAYANDSAVE" SourceOfBusiness="Radio"><RoomTypes><RoomType RoomType="Double Room" RoomTypeCode="DR" NonSmoking="true" Configuration="2 Beds and 1 cot"><RoomDescription><Text>Double room</Text></RoomDescription><AdditionalDetails><AdditionalDetail Type="4" Code="PIA"><DetailDescription><Text>Room paid in advance with credit card</Text></DetailDescription></AdditionalDetail><AdditionalDetail Type="7"><DetailDescription><Text>Cancellation deadline 10/03/26</Text></DetailDescription></AdditionalDetail><AdditionalDetail Type="5" Code="ECB"><DetailDescription><Text>Continental breakfast included</Text></DetailDescription></AdditionalDetail></AdditionalDetails></RoomType></RoomTypes><RatePlans><RatePlan RatePlanCode="RAC1" EffectiveDate="2026-03-12" ExpireDate="2026-03-14" RatePlanName="RACK Rate1"><RatePlanDescription><Text>Long Stay Discount</Text></RatePlanDescription><AdditionalDetails><AdditionalDetail Type="15" Code="EB1"><DetailDescription><Text>Stay n Save promotion grants 10% discount</Text></DetailDescription></AdditionalDetail><AdditionalDetail Type="43"><DetailDescription><Text>Continental breakfast included</Text></DetailDescription></AdditionalDetail><AdditionalDetail Type="5" Code="ECB"><DetailDescription><Text>Expedia Collect</Text></DetailDescription></AdditionalDetail></AdditionalDetails></RatePlan><RatePlan RatePlanCode="RAC2" EffectiveDate="2026-03-14" ExpireDate="2026-03-15" RatePlanName="RACK Rate2"><RatePlanDescription><Text>Discounted Daily Rate</Text></RatePlanDescription><AdditionalDetails><AdditionalDetail Type="15" Code="EB1"><DetailDescription><Text>Single Night Discount Promo</Text></DetailDescription></AdditionalDetail><AdditionalDetail Type="43"><DetailDescription><Text>Continental breakfast included</Text></DetailDescription></AdditionalDetail><AdditionalDetail Type="5" Code="ECB"><DetailDescription><Text>Expedia Collect</Text></DetailDescription></AdditionalDetail></AdditionalDetails></RatePlan></RatePlans><RoomRates><RoomRate RoomTypeCode="DR" RatePlanCode="RAC1" NumberOfUnits="1"><Rates><Rate UnitMultiplier="2" RateTimeUnit="Day" EffectiveDate="2026-03-12" ExpireDate="2026-03-14"><Base AmountBeforeTax="200.00" AmountAfterTax="220.00" CurrencyCode="USD"><Taxes Amount="20.00"><Tax Code="19" Percent="10" Amount="20.00"><TaxDescription><Text>GST 10 percent</Text></TaxDescription></Tax></Taxes></Base><Total AmountBeforeTax="202.50" AmountAfterTax="222.75" CurrencyCode="USD"><Taxes Amount="20.25"><Tax Code="19" Percent="10" Amount="20.25"><TaxDescription><Text>GST 10 percent</Text></TaxDescription></Tax></Taxes></Total></Rate></Rates><ServiceRPHs><ServiceRPH RPH="1"/></ServiceRPHs></RoomRate><RoomRate RoomTypeCode="DR" RatePlanCode="RAC2" NumberOfUnits="1"><Rates><Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2026-03-14" ExpireDate="2026-03-15"><Base 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></Base><Total AmountBeforeTax="102.50" AmountAfterTax="112.75" CurrencyCode="USD"><Taxes Amount="10.25"><Tax Code="19" Percent="10" Amount="10.25"><TaxDescription><Text>GST 10 percent</Text></TaxDescription></Tax></Taxes></Total></Rate></Rates><ServiceRPHs><ServiceRPH RPH="2"/></ServiceRPHs></RoomRate></RoomRates><ServiceRPHs><ServiceRPH RPH="3"/></ServiceRPHs><GuestCounts><GuestCount AgeQualifyingCode="10" Count="1"/><GuestCount AgeQualifyingCode="8" Count="1"/><GuestCount AgeQualifyingCode="7" Count="1"/></GuestCounts><TimeSpan Start="2026-03-12" End="2026-03-15"/><Total AmountAfterTax="568.25" CurrencyCode="USD"/><BasicPropertyInfo HotelCode="10107"/><ResGuestRPHs><ResGuestRPH RPH="1"/></ResGuestRPHs><Comments><Comment><Text>non-smoking Room requested, king bed</Text></Comment></Comments></RoomStay></RoomStays><Services><Service ServiceInventoryCode="EXTRA_BED" Inclusive="true" ServiceRPH="1" Quantity="1" ID="12345" ID_Context="CHANNEL" Type="18"><Price><Base AmountBeforeTax="2.50" AmountAfterTax="2.75" CurrencyCode="USD"><Taxes Amount="0.25"><Tax Code="19" Percent="10" Amount="0.25"><TaxDescription><Text>GST 10 percent</Text></TaxDescription></Tax></Taxes></Base><Total AmountBeforeTax="5.00" AmountAfterTax="5.50" CurrencyCode="USD"><Taxes Amount="0.50"><Tax Code="19" Percent="10" Amount="0.50"><TaxDescription><Text>GST 10 percent</Text></TaxDescription></Tax></Taxes></Total><RateDescription><Text>Extra person charge $2.50 (ex GST) per day for cot</Text></RateDescription></Price><ServiceDetails><TimeSpan End="2026-03-14" Start="2026-03-12"/></ServiceDetails></Service><Service ServiceInventoryCode="EXTRA_BED" Inclusive="true" ServiceRPH="2" Quantity="1" ID="12346" ID_Context="CHANNEL" Type="18"><Price><Base AmountBeforeTax="2.50" AmountAfterTax="2.75" CurrencyCode="USD"><Taxes Amount="0.25"><Tax Code="19" Percent="10" Amount="0.25"><TaxDescription><Text>GST 10 percent</Text></TaxDescription></Tax></Taxes></Base><Total AmountBeforeTax="2.50" AmountAfterTax="2.75" CurrencyCode="USD"><Taxes Amount="0.25"><Tax Code="19" Percent="10" Amount="0.25"><TaxDescription><Text>GST 10 percent</Text></TaxDescription></Tax></Taxes></Total><RateDescription><Text>Extra person charge $2.50 (ex GST) per day for cot</Text></RateDescription></Price><ServiceDetails><TimeSpan End="2026-03-15" Start="2026-03-14"/></ServiceDetails></Service><Service ServiceInventoryCode="OTHER" Inclusive="true" ServiceRPH="3" Quantity="2" ID="12347" ID_Context="CHANNEL" Type="18"><Price><Base AmountBeforeTax="4.55" AmountAfterTax="5.00" CurrencyCode="USD"><Taxes Amount="0.45"><Tax Code="19" Percent="10" Amount="0.45"><TaxDescription><Text>GST 10 percent</Text></TaxDescription></Tax></Taxes></Base><Total AmountBeforeTax="9.09" AmountAfterTax="10.00" CurrencyCode="USD"><Taxes Amount="0.91"><Tax Code="19" Percent="10" Amount="0.91"><TaxDescription><Text>GST 10 percent</Text></TaxDescription></Tax></Taxes></Total><RateDescription><Text>Extra bathrobe $5.00 (incl GST) per person</Text></RateDescription></Price></Service><Service ServiceInventoryCode="EXTRA" Inclusive="true" Quantity="1" ID="12348" ID_Context="CHANNEL" Type="18"><Price><Base AmountBeforeTax="4.55" AmountAfterTax="5.00" CurrencyCode="USD"><Taxes Amount="0.45"><Tax Code="19" Percent="10" Amount="0.45"><TaxDescription><Text>GST 10 percent</Text></TaxDescription></Tax></Taxes></Base><Total AmountBeforeTax="13.65" AmountAfterTax="15.00" CurrencyCode="USD"><Taxes Amount="1.35"><Tax Code="19" Percent="10" Amount="1.35"><TaxDescription><Text>GST 10 percent</Text></TaxDescription></Tax></Taxes></Total><RateDescription><Text>Car Park - Undercover Parking (Clearance 2.2 meter or 7.2 feet) $5.00 (incl GST) per day</Text></RateDescription></Price><ServiceDetails><TimeSpan End="2026-03-15" Start="2026-03-12"/></ServiceDetails></Service></Services><ResGuests><ResGuest ResGuestRPH="1" ArrivalTime="10:30:00" Age="8" PrimaryIndicator="true"><Profiles><ProfileInfo><UniqueID Type="16" ID="12345" ID_Context="CHANNEL"/><Profile ProfileType="1"><Customer><PersonName><NamePrefix>Mr</NamePrefix><GivenName>James</GivenName><MiddleName>Herbert</MiddleName><Surname>Bond</Surname></PersonName><Telephone PhoneNumber="555-1234"/><Telephone PhoneNumber="555-4321" PhoneUseType="4"/><Telephone PhoneNumber="0411444000" PhoneTechType="5"/><Telephone PhoneNumber="213451515" PhoneTechType="3"/><Email>james.bond@mi5.co.uk</Email><Address><AddressLine>Claretta House</AddressLine><AddressLine>Tower Bridge Close</AddressLine><CityName>London</CityName><PostalCode>EC1 2PG</PostalCode><StateProv>Middlesex</StateProv><CountryName>United Kingdom</CountryName></Address><CustLoyalty MembershipID="1234567890" ProgramID="FrequentFlyer" ExpiryDate="2027-03-31"/></Customer></Profile></ProfileInfo></Profiles><Comments><Comment Name="ArrivalDetails"><Text>Arriving by coach</Text></Comment><Comment Name="DepartureDetails"><Text>Departure flight QF123</Text></Comment></Comments></ResGuest></ResGuests><ResGlobalInfo><Guarantee><GuaranteesAccepted><GuaranteeAccepted><PaymentCard CardCode="VI" CardType="1" CardNumber="4444444444444444" ExpireDate="1114"><CardHolderName>John Smith</CardHolderName></PaymentCard></GuaranteeAccepted></GuaranteesAccepted><Comments><Comment Name="PaymentReferenceId"><Text>123124151616</Text></Comment></Comments><GuaranteeDescription><Text>Payment accepted up front</Text></GuaranteeDescription></Guarantee><DepositPayments><GuaranteePayment><AmountPercent Amount="291.63" Percent="50" CurrencyCode="USD"/><Description><Text>50% Deposit</Text></Description></GuaranteePayment></DepositPayments><Fees><Fee TaxInclusive="true" Type="Inclusive" Code="27" Amount="5.00"><Taxes Amount="0.45"/><Description Name="Commission"><Text>Commission - $5 flat fee</Text></Description></Fee></Fees><Total AmountAfterTax="583.25" CurrencyCode="USD"><Taxes Amount="53.01"><Tax Code="19" Percent="10" Amount="53.01"><TaxDescription><Text>GST 10 percent</Text></TaxDescription></Tax></Taxes></Total><HotelReservationIDs><HotelReservationID ResID_Type="14" ResID_Value="RES_3243525"/></HotelReservationIDs><Profiles><ProfileInfo><UniqueID Type="16" ID="12345" ID_Context="CHANNEL"/><Profile ProfileType="1"><Customer><PersonName><NamePrefix>Mr</NamePrefix><GivenName>James</GivenName><MiddleName>Herbert</MiddleName><Surname>Bond</Surname></PersonName><Telephone PhoneNumber="555-1234"/><Telephone PhoneNumber="555-4321" PhoneUseType="4"/><Telephone PhoneNumber="0411444000" PhoneTechType="5"/><Telephone PhoneNumber="213451515" PhoneTechType="3"/><Email>james.bond@mi5.co.uk</Email><Address><AddressLine>Claretta House</AddressLine><AddressLine>Tower Bridge Close</AddressLine><CityName>London</CityName><PostalCode>EC1 2PG</PostalCode><StateProv>Middlesex</StateProv><CountryName>United Kingdom</CountryName><CompanyName>MI6</CompanyName></Address><CustLoyalty MembershipID="1234567890" ProgramID="FrequentFlyer" ExpiryDate="2027-03-31"/></Customer></Profile></ProfileInfo><ProfileInfo><UniqueID Type="16" ID="4444" ID_Context="IATA"/><Profile ProfileType="3"><Customer><PersonName><NamePrefix>Joe</NamePrefix><Surname>Smith</Surname></PersonName><Telephone PhoneNumber="555-1234"/><Address><CompanyName>American Express</CompanyName></Address></Customer></Profile></ProfileInfo><ProfileInfo><UniqueID Type="16" ID="STA" ID_Context="CHANNEL"/><UniqueID Type="16" ID="12312414" ID_Context="IATA"/><Profile ProfileType="4"><Customer><PersonName><NamePrefix>Mis</NamePrefix><Surname>Moneypenny</Surname></PersonName><Telephone PhoneNumber="555-1234"/><Address><CompanyName>STA Travel</CompanyName></Address></Customer></Profile></ProfileInfo></Profiles><Comments><Comment><Text>will be arriving after 6 pm</Text></Comment></Comments><BasicPropertyInfo HotelCode="HOTELCODE"/></ResGlobalInfo></HotelReservation></HotelReservation></OTA_HotelResNotifRQ></SOAP-ENV:Body></SOAP-ENV:Envelope>
```

{% endcode %}

</details>

<details>

<summary>Minimum Content XML</summary>

{% code overflow="wrap" %}

```xml
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><wsse:Security SOAP-ENV:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><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_HotelResNotifRQ xmlns="http://www.opentravel.org/ota/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" PrimaryLangID="en-us" ResStatus="Commit" Target="Production" TimeStamp="2024-07-06T15:27:41+00:00" Version="2.001"><HotelReservation CreateDateTime="2024-07-06T15:23:35+00:00" ResStatus="Book"><POS><Source><RequestorID Type="22" ID="SITEMINDER"/><BookingChannel Primary="true" Type="7"><CompanyName Code="EXP">Expedia</CompanyName></BookingChannel></Source></POS><UniqueID Type="14" ID="ABC-1234567890"/><UniqueID Type="16" ID="isuokfr1pyc2ntest7" ID_Context="MESSAGE_UNIQUE_ID"/><RoomStays><RoomStay><RoomTypes><RoomType RoomTypeCode="DR"/></RoomTypes><RatePlans><RatePlan RatePlanCode="RAC" EffectiveDate="2027-03-12" ExpireDate="2027-03-15"/></RatePlans><RoomRates><RoomRate RoomTypeCode="DR" RatePlanCode="RAC" NumberOfUnits="1"><Rates><Rate UnitMultiplier="3" RateTimeUnit="Day" EffectiveDate="2027-03-12" ExpireDate="2027-03-15"/></Rates></RoomRate></RoomRates><GuestCounts><GuestCount AgeQualifyingCode="10" Count="1"/></GuestCounts><TimeSpan Start="2027-03-12" End="2027-03-15"/><BasicPropertyInfo HotelCode="HOTELCODE"/></RoomStay></RoomStays><ResGuests><ResGuest><Profiles><ProfileInfo><Profile ProfileType="1"><Customer><PersonName><GivenName>James</GivenName><Surname>Bond</Surname></PersonName></Customer></Profile></ProfileInfo></Profiles></ResGuest></ResGuests><ResGlobalInfo><HotelReservationIDs><HotelReservationID ResID_Type="14" ResID_Value="1234567890"/></HotelReservationIDs><BasicPropertyInfo HotelCode="HOTELCODE"/></ResGlobalInfo></HotelReservation></OTA_HotelResNotifRQ></SOAP-ENV:Body></SOAP-ENV:Envelope>
```

{% endcode %}

</details>

## Common Questions

<details>

<summary>What happens if reservations fail to be delivered to my PMS?</summary>

SiteMinder times out the reservation after repeated failures.

The hotel receives an email advising them to contact their PMS provider. Always send delivery confirmation to prevent timeouts and ensure reservations are tracked.

</details>

<details>

<summary>Do I always receive both Before and After Tax amounts?</summary>

No. You receive whichever amounts the channel provides.

Some channels send both `AmountBeforeTax` and `AmountAfterTax`, others send only one. Your PMS must handle both scenarios.

</details>

<details>

<summary>Why don't the daily rates in reservations match the rates I sent?</summary>

There are three common scenarios:

**1. Channel Discounts or Promotions** The guest used a channel discount, so the final booked amount differs from your pushed rate.

**2. No Daily Rates Provided** Some channels only send the total stay cost. SiteMinder calculates daily rates by averaging the RoomStay Total across the number of nights.

**3. Missing Rates for Specific Dates** Channels may omit daily rates for certain dates (e.g., free night promotions). SiteMinder averages the RoomStay Total to determine daily rates.

</details>

<details>

<summary>Why is the reservation missing data that the property says was sent?</summary>

SiteMinder forwards all data received from booking channels without modification.

Missing data means the channel didn't provide it. The property must verify with the channel directly.

**Exception:** Credit card/document IDs may be disabled for PCI/PII compliance - contact Partner Integrations to enable.

</details>

<details>

<summary>What are the differences between Guests and Customers?</summary>

**Customer**: The contact person or individual who made the booking. Found in `ResGlobalInfo/Profile` with `Type="1"`.

**Guests**: The individuals who will check in and stay in the room. Found in `ResGuests/Profile`.

If the Customer is also staying in the room, they appear in both sections.

</details>

<details>

<summary>Why is <code>&#x3C;ResGuestRPHs></code> sometimes missing?</summary>

It's optional for single-guest reservations.

`<ResGuestRPHs>` links guests to room stays in multi-room/multi-guest bookings. For single-guest reservations, the association is implicit, so channels may omit this element.

</details>

<details>

<summary>Can I send multiple PMS reference IDs for reservations with multiple RoomStays?</summary>

No. Each UniqueID can only have one `ResID_Value` in SiteMinder.

If your PMS splits multi-RoomStay reservations into separate bookings, you cannot send multiple PMS reference IDs back in one reservation confirmation.

Channels rarely send multiple `RoomStays` with broken date ranges in one reservation. They typically create separate reservations, each with its own `UniqueID`, so each gets its own distinct `ResID_Value`.

</details>

<details>

<summary>Why do all extras get classified as "EXTRA"?</summary>

SiteMinder can only classify extras if the channel classifies them when sending the reservation.

Most channels (including Direct Booking test accounts) do not categorize extras according to the OTA standard, so they all appear as "EXTRA" by default.

Your PMS should handle extras with generic "EXTRA" classification as the most common scenario.

</details>

<details>

<summary>How do I identify which extras are booked for which room?</summary>

Match ServiceRPH values to link extras to rooms.

**Example:**

* `RoomStay/ServiceRPH@RPH="1"` → links to `Services/Service@ServiceRPH="1"`
* This associates that service with that specific RoomStay

</details>

<details>

<summary>Do you forward channel commissions?</summary>

Only if the channel provides commission details.

When commission information is available, SiteMinder includes it in the `Fees` section:

* Fixed commission amount in `Fee@Amount`
* Commission percentage in `Fee/Description`

Most channels do not provide commission data.

</details>

<details>

<summary>Do you support full credit card numbers?</summary>

Yes, when the channel provides them.

SiteMinder forwards full credit card numbers if provided by the channel. However, if a channel only provides partial information (typically 3-4 digits), you'll receive the partial card number in `PaymentCard@MaskedCardNumber`.

Hotels can obtain full card details from the channel's extranet or booking confirmation email if needed.

</details>

<details>

<summary>Can I receive the CVC/CVV code?</summary>

No. PCI regulations prohibit sending card number and CVC together.

Hotels can find CVC in:

* SiteMinder reservation confirmation emails (if enabled)
* Channel extranet

</details>

<details>

<summary>Do you support Virtual Credit Cards (VCC)?</summary>

Yes. Virtual credit cards are delivered as standard credit cards in the `PaymentCard` element.

There are no VCC-specific attributes - they use the same structure as regular credit cards (`CardNumber`, `CardCode`, `ExpireDate`, `CardHolderName`).

Your PMS processes VCCs the same way as standard credit cards.

</details>

<details>

<summary>Why am I not receiving credit card details or guest document IDs?</summary>

PCI/PII compliance restrictions prevent automatic delivery of sensitive data.

Contact Partner Integrations team to enable this data if your PMS is PCI compliant.

</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/reservations/push.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.
