# Pull (SM -> PMS)

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

**Reservations Pull (SM -> PMS)** is a delivery method where the Property Management Systems (PMS) actively retrieve undelivered reservations, modifications, and cancellations from SiteMinder at regular intervals. 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 PULL while others use Reservations PUSH. Once configured, all hotels connected to your PMS will retrieve 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>SiteMinder will provide a single global endpoint for all hotels for PMS to send pull requests <code>OTA_ReadRQ</code> and receive reservation responses <code>OTA_ResRetrieveRS</code>.</li><li><strong>Test Environment Endpoint:</strong> <a href="https://tpi-pmsx.preprod.siteminderlabs.com/webservices/%7BRequestorID%7D">https://tpi-pmsx.preprod.siteminderlabs.com/webservices/{RequestorID}</a></li></ul></td></tr><tr><td><strong>Authentication</strong></td><td><ul><li>SiteMinder will provide a single username/password for all hotels (PMS Level authentication).</li><li>PMS must include authentication credentials within the <strong>SOAP Security header</strong> of each request (<code>OTA_ReadRQ</code> and <code>OTA_NotifReportRQ</code>).</li></ul></td></tr><tr><td><strong>Message Structure</strong></td><td><ul><li>All messages must adhere to the SOAP message format.</li><li>OTA message must be encapsulated within the SOAP Body.</li><li>Requests must include a SOAP Security Header for authentication.</li><li>Responses will be returned in a SOAP envelope with empty SOAP Header.</li></ul></td></tr><tr><td><strong>Content-Type</strong></td><td><code>text/xml; charset=utf-8</code></td></tr><tr><td><strong>Version</strong></td><td><code>SOAP 1.1</code></td></tr><tr><td><strong>Protocol &#x26; Security</strong></td><td><ul><li>All communication must occur over <strong>HTTPS</strong> using <strong>TLS 1.2 or higher</strong>.</li><li>Non-secure (HTTP) connections are <strong>not permitted</strong>.</li><li>Communication is synchronous request/response pairs.</li><li>Each message is atomic - processed entirely or not at all.</li></ul></td></tr></tbody></table>

## Message Exchange Flow

When using the pull method, your PMS requests reservations from SiteMinder at regular intervals (typically every 2-5 minutes) using a synchronous SOAP/HTTPS exchange. SiteMinder responds with any pending reservations, modifications, and cancellations that haven't been delivered yet. This process involves two request-response cycles to ensure reliable delivery and confirmation.

1. **Pull Request (PMS to SiteMinder)**: `OTA_ReadRQ`\
   Requests undelivered reservations, modifications, and cancellations from SiteMinder.
2. **Reservations Response (SiteMinder to PMS):** `OTA_ResRetrieveRS`\
   Delivers a list of reservations (new bookings, modifications, and cancellations) in response to the pull request.
3. **Confirmation Request (PMS to SiteMinder):** `OTA_NotifReportRQ`\
   Confirms successful receipt or reports processing failure of the received reservations by the PMS.
4. **Receipt Response (SiteMinder to PMS):** `OTA_NotifReportRS`\
   Acknowledges the confirmation and completes the pull transaction cycle.

{% 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 request from your PMS to SiteMinder endpoint. It contains the username and password credentials that we provide to the PMS during integration setup.

**Key Requirements:**

* **Validation**: Our endpoint will validate these credentials on every request.
* **Scope**: One set of credentials is used for all properties in your integration.
* **Security**: Credentials are transmitted as plain text within the HTTPS encrypted channel.
* **Response**: Invalid credentials will return a SOAP fault with appropriate error code.

{% hint style="info" %}
The only acceptable value for the **Password @Type** attribute is *<http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText>.* Plain text passwords are acceptable as all communication is done over encrypted HTTP (HTTPS).
{% endhint %}

{% tabs %}
{% tab title="Pull Request" %}
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_ReadRQ
			xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
			<!-- ... other elements and attributes have been omitted for brevity ... -->
		</OTA_ReadRQ>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}

{% tab title="Reservations 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_ResRetrieveRS
			xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:45+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c">
			<Success/>
			<ReservationsList>
				<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"/>
					<!-- HOTEL RESERVATION DETAILS OMITTED -->
				</HotelReservation>
				<!-- Additional HotelReservation elements -->
			</ReservationsList>
		</OTA_ResRetrieveRS>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}

{% tab title="Confirmation Request" %}
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_NotifReportRQ
			xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:50+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677">
			<Success/>
			<NotifDetails>
				<HotelNotifReport>
					<HotelReservations>
						<HotelReservation CreateDateTime="2024-07-06T15:23:35+00:00" ResStatus="Book">
							<UniqueID Type="16" ID="isuokfr1pyc2ntest7"/>
							<ResGlobalInfo>
								<HotelReservationIDs>
									<HotelReservationID ResID_Type="14" ResID_Value="ABC-1234567890"/>
								</HotelReservationIDs>
							</ResGlobalInfo>
						</HotelReservation>
						<!-- Additional HotelReservation elements -->
					</HotelReservations>
				</HotelNotifReport>
			</NotifDetails>
		</OTA_NotifReportRQ>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}

{% tab title="Receipt 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_NotifReportRS
			xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:57+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677">
			<Success/>
		</OTA_NotifReportRS>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}
{% endtabs %}

## Multiplicity

In the SOAP Specification tables **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. Pull Request

The PMS uses `OTA_ReadRQ` to pull reservations from SiteMinder at regular intervals between 2-5 minutes. The request frequency must be no more than every 2 minutes (e.g. not every 1 minute) and no less than every 5 minutes (e.g. not every 6 minutes).

{% hint style="info" %}
**PMS Level** requests all undelivered reservations for all hotels, while **Hotel Level** requests all undelivered reservations only for the hotel specified in the request. The PMS must chose only one level for the full connectivity and avoid using both levels.
{% endhint %}

{% tabs %}
{% tab title="PMS Level" %}
Returns all undelivered reservations, modifications, and cancellations for all hotels\
associated with PMS code: `{PMSCODE}`

**Requirements:** PMS Level authentication.

```xml
<OTA_ReadRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="{PMSCODE}"/>
		</Source>
	</POS>
	<ReadRequests>
		<HotelReadRequest>
			<SelectionCriteria SelectionType="Undelivered"/>
		</HotelReadRequest>
	</ReadRequests>
</OTA_ReadRQ>
```

{% endtab %}

{% tab title="Hotel Level" %}
Returns all undelivered reservations, modifications, and cancellations for a specific\
hotel with code: `{HOTELCODE}`

**Requirements:** Either PMS Level or Hotel Level authentication.

```xml
<OTA_ReadRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="{PMSCODE}"/>
		</Source>
	</POS>
	<ReadRequests>
		<HotelReadRequest HotelCode="{HOTELCODE}">
			<SelectionCriteria SelectionType="Undelivered"/>
		</HotelReadRequest>
	</ReadRequests>
</OTA_ReadRQ>
```

{% endtab %}

{% tab title="Book Only" %}
Returns only new reservations (`ResStatus="Book"`) for a specific hotel with code: `{HOTELCODE}`, excluding modifications and cancellations.

**Requirements:** Either PMS Level or Hotel Level authentication.

```xml
<OTA_ReadRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="{PMSCODE}"/>
		</Source>
	</POS>
	<ReadRequests>
		<HotelReadRequest HotelCode="{HOTELCODE}">
			<SelectionCriteria SelectionType="Undelivered" ResStatus="Book"/>
		</HotelReadRequest>
	</ReadRequests>
</OTA_ReadRQ>
```

{% endtab %}

{% tab title="Modify Only" %}
Returns only modifications (`ResStatus="Modify"`) for a specific hotel with code: `{HOTELCODE}`, excluding new reservations and cancellations.

**Requirements:** Either PMS Level or Hotel Level authentication.

```xml
<OTA_ReadRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="{PMSCODE}"/>
		</Source>
	</POS>
	<ReadRequests>
		<HotelReadRequest HotelCode="{HOTELCODE}">
			<SelectionCriteria SelectionType="Undelivered" ResStatus="Modify"/>
		</HotelReadRequest>
	</ReadRequests>
</OTA_ReadRQ>
```

{% endtab %}

{% tab title="Cancel Only" %}
Returns only cancellations (`ResStatus="Cancel"`) for a specific hotel with code: `{HOTELCODE}`, excluding new reservations and modifications.

**Requirements:** Either PMS Level or Hotel Level authentication.

```xml
<OTA_ReadRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="{PMSCODE}"/>
		</Source>
	</POS>
	<ReadRequests>
		<HotelReadRequest HotelCode="{HOTELCODE}">
			<SelectionCriteria SelectionType="Undelivered" ResStatus="Cancel"/>
		</HotelReadRequest>
	</ReadRequests>
</OTA_ReadRQ>
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="253">Element / @Attribute</th><th width="129">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>OTA_ReadRQ</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>@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. TimeStamp must use <code>ISO 8601</code> format.</td></tr><tr><td><code>@Version</code></td><td>Decimal</td><td align="center">1</td><td>Specifies the API version. Must be set to <code>1.0</code>.</td></tr><tr><td><code>POS / Source / RequestorID</code></td><td>Element</td><td align="center">1</td><td>Identifies the system which is sending the request. Container for the PMS 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>@ID</code></td><td>String</td><td align="center">1</td><td>PMS Code assigned by SiteMinder. Remains the same throughout the messages.</td></tr><tr><td><code>ReadRequests</code></td><td>Element</td><td align="center">1</td><td></td></tr><tr><td><code>ReadRequests / HotelReadRequest</code></td><td>Element</td><td align="center">1</td><td></td></tr><tr><td><code>@HotelCode</code></td><td>String</td><td align="center">0..1</td><td>Hotel code as recognised by SiteMinder. If omitted, all reservations for the PMS will be returned.<br><strong>Note:</strong> This attribute is only optional for central property management systems. It is mandatory for on-site systems.</td></tr><tr><td><code>SelectionCriteria</code></td><td>Element</td><td align="center">1</td><td></td></tr><tr><td><code>@SelectionType</code></td><td>String</td><td align="center">1</td><td>Must be "<code>Undelivered</code>"</td></tr><tr><td><code>@ResStatus</code></td><td>Enumeration</td><td align="center">0..1</td><td><p>Specifies the booking status:</p><p><code>Book</code></p><p><code>Modify</code></p><p><code>Cancel</code></p></td></tr></tbody></table>

## 2. Reservations Response

### OTA\_ResRetrieveRS

The `OTA_ResRetrieveRS` message returns a list of HotelReservation elements in response to the pull request. Content varies as SiteMinder aggregates reservations from multiple booking channels, each with different formats and data structures.

**Key Concepts**

#### ReservationsList

* Container element returned by SiteMinder in response to pull requests
* May contain zero, one, or multiple HotelReservation elements
* Empty when no pending reservations are available

#### HotelReservation

* Represents a single booking from one channel
* Multiple reservations can be returned in one ReservationsList
* Each includes all associated rooms, guests, and payments

#### RoomStays

* Container for all room bookings within each 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"

#### Guest Assignment

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

#### Batch Processing

* Single pull request can retrieve multiple reservations
* Each HotelReservation processed independently
* All retrieved reservations must be confirmed via `OTA_NotifReportRQ`

{% tabs %}
{% tab title="Reservations Found" %}

* Contains `<Success/>` element.
* Includes `<ReservationsList>` with one or more reservations.
* Each reservation has unique SiteMinder identifiers (e.g., `ABC-1234567890`, `CBA-0987654321`), with the corresponding message IDs (e.g., `isuokfr1pyc2ntest7` and `pbp6s5j08test9n0zi`).

```xml
<OTA_ResRetrieveRS
	xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:45+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c">
	<Success/>
	<ReservationsList>
		<HotelReservation CreateDateTime="2024-07-06T15:23:35+00:00" ResStatus="Book">
			<UniqueID Type="14" ID="ABC-1234567890"/> <!-- SiteMinder Reservation ID -->
			<UniqueID Type="16" ID="isuokfr1pyc2ntest7" ID_Context="MESSAGE_UNIQUE_ID"/>
			<!-- HOTEL RESERVATION DETAILS OMITTED -->
		</HotelReservation>
		<HotelReservation CreateDateTime="2024-07-06T15:23:35+00:00" ResStatus="Book">
			<UniqueID Type="14" ID="CBA-0987654321"/> <!-- SiteMinder Reservation ID -->
			<UniqueID Type="16" ID="pbp6s5j08test9n0zi" ID_Context="MESSAGE_UNIQUE_ID"/>
			<!-- HOTEL RESERVATION DETAILS OMITTED -->
		</HotelReservation>
		<!-- Additional HotelReservation elements -->
	</ReservationsList>
</OTA_ResRetrieveRS>
```

{% endtab %}

{% tab title="No Reservations Found" %}

* Contains `<Success/>` element.
* No `<ReservationsList>` element (indicates no pending reservations).

```xml
<OTA_ResRetrieveRS
	xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:45+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c">
	<Success/>
</OTA_ResRetrieveRS>
```

{% endtab %}

{% tab title="Error" %}

* Contains `<Errors>` element instead of `<Success/>`
* Indicates business logic error (e.g., invalid hotel code, authentication failure)

```xml
<OTA_ResRetrieveRS
	xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:45+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c">
	<Errors>
		<Error Type="3" Code="392">Invalid Hotel Code</Error>
	</Errors>
</OTA_ResRetrieveRS>
```

{% 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_ResRetrieveRS</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. TimeStamp 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>Single error information containing free text.</td></tr><tr><td><code>@Type</code></td><td>String</td><td align="center">1</td><td>Type of error. Refer to <a href="https://developer.siteminder.com/siteminder-apis/additional-resources/reference-tables/error-warning-types">Error Warning Types (EWT)</a>.</td></tr><tr><td><code>@Code</code></td><td>String</td><td align="center">1</td><td>Code representing the error. Refer to <a href="https://developer.siteminder.com/siteminder-apis/additional-resources/reference-tables/error-codes">Error Codes (ERR)</a>.</td></tr></tbody></table>

### ReservationsList

```xml
<ReservationsList>
	<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"/>
		<!-- HOTEL RESERVATION DETAILS OMITTED -->
	</HotelReservation>
	<HotelReservation CreateDateTime="2024-07-06T15:23:35+00:00" ResStatus="Book">
		<UniqueID Type="14" ID="CBA-0987654321"/>
		<UniqueID Type="16" ID="pbp6s5j08test9n0zi" ID_Context="MESSAGE_UNIQUE_ID"/>
		<!-- HOTEL RESERVATION DETAILS OMITTED -->
	</HotelReservation>
	<!-- Additional HotelReservation elements -->
</ReservationsList>
```

<table><thead><tr><th width="249.447021484375">Element / @Attribute</th><th width="121.357666015625">Type</th><th width="57" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>ReservationsList</code></strong></td><td>Element</td><td align="center">0..1</td><td>Contains a list of retrieved reservations.</td></tr><tr><td><code>HotelReservation</code></td><td>Element</td><td align="center">1..n</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>Must be set when <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>@LastModifyDateTime</code></td><td>DateTime</td><td align="center">0..1</td><td>Date and time when the reservation was last modified.<br><strong>Must be set when <code>ResStatus</code> 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>@ResStatus</code></td><td>Enumeration</td><td align="center">1</td><td><p>Specifies the booking status:</p><p><code>Book</code></p><p><code>Modify</code></p><p><code>Cancel</code></p></td></tr><tr><td><code>UniqueID</code></td><td>Element</td><td align="center">1..2</td><td>Unique identifier of the reservation in SiteMinder.<br>- The <em><strong>first</strong></em> UniqueID <code>Type="14"</code>is the unique identifier for the entire reservation and through any subsequent modifications or cancellations.<br>The <em><strong>second</strong></em> UniqueID <code>Type="16"</code> with <code>ID_Context="MESSAGE_UNIQUE_ID"</code> is the unique ID for <strong>this</strong> <strong>message</strong>. This identifier must be used to confirm the message once processed.</td></tr><tr><td><code>@Type</code></td><td>Integer</td><td align="center">1</td><td><p><code>Type="14"</code>: Identifier for the reservation in SiteMinder.</p><p><code>Type="16"</code>: Identifier for the message transferring the reservation.</p></td></tr><tr><td><code>@ID</code></td><td>String</td><td align="center">1</td><td>SiteMinder reservation ID.<br>Refer to the <code>HotelReservationID</code> attribute for the booking source/channel reservation ID.</td></tr><tr><td><code>@ID_Context</code></td><td>String</td><td align="center">0..1</td><td>Present for the second UniqueID and always will be "<code>MESSAGE_UNIQUE_ID</code>"</td></tr></tbody></table>

### Source

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

```xml
<POS>
    <Source>
        <RequestorID Type="22" ID="SITEMINDER"/>
        <BookingChannel Primary="true" Type="7">
            <CompanyName Code="ABC">Booking Channel</CompanyName>
        </BookingChannel>
    </Source>
    <!-- Additional Source element -->
</POS>
```

{% endtab %}

{% tab title="Second Source" %}

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

{% 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>POS</code></strong></td><td>Element</td><td align="center">1</td><td>Contains <code>Source</code> details.</td></tr><tr><td><code>Source</code></td><td>Element</td><td align="center">1..2</td><td>Contains <code>BookingChannel</code> details.</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>@Type</code></td><td>Integer</td><td align="center">1</td><td>Must be set to <code>22</code> (ESRP).</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>BookingChannel</code></td><td>Element</td><td align="center">1</td><td>Contains booking channel information.</td></tr><tr><td><code>@Primary</code></td><td>Boolean</td><td align="center">1</td><td><p><code>true</code> for the primary booking channel in the first Source element.</p><p><code>false</code> in the second Source element, if present.</p></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>CompanyName</code></td><td>Element</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

```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**](/pmsxchange-api/additional-resources/credit-card-tokenization.md).

{% 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>

## 3. Confirmation Request

Using `OTA_NotifReportRQ` the PMS sends a confirmation message to SiteMinder for the delivery of reservations, modifications, or cancellations. If not confirmed, the information will be resent in response to the `OTA_ReadRQ` message. Confirmation of delivery does not guarantee that the reservation was successfully created in the PMS. The `OTA_NotifReportRQ` message can be used to confirm any erroneous deliveries.

The structure of the `OTA_NotifReportRQ` does not permit a mix of successfully processed and erroneous reservations in the same message. Successfully processed reservations must be confirmed in separate `OTA_NotifReportRQ` messages from those that could not be processed.

{% hint style="warning" %}
SiteMinder will automatically mark a reservation as 'Error' (fail) under the following conditions:

* **20 Delivery Attempts:** The reservation has been requested (`OTA_ReadRQ`) at least 20 times without receiving a valid `OTA_NotifReportRQ`.
* **14-Day Timeout:** No delivery attempts have been made for 14 days.
* **1-Hour Timeout:** At least one delivery attempt has been made, and it has been 1 hour since the first attempt.

**Important:** This mechanism is a fail-safe feature; we expect to receive either a 'Success' or 'Error' `OTA_NotifReportRQ`. It should not be relied upon for handling reservations that cannot be processed.
{% endhint %}

{% tabs %}
{% tab title="Confirm Reservation" %}

* The presence of the `<Success/>` element indicates that the reservation was created in the PMS.
* The UniqueID Type 16 element informs SiteMinder which reservation message is being confirmed.
* 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>
		<wsse:Security soap: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_NotifReportRQ
			xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:50+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677">
			<Success/>
			<NotifDetails>
				<HotelNotifReport>
					<HotelReservations>
						<HotelReservation CreateDateTime="2025-08-20T09:28:47+02:00" ResStatus="Book">
							<UniqueID Type="16" ID="qlmumfgwx85nlkgmtb"/>
							<ResGlobalInfo>
								<HotelReservationIDs>
									<HotelReservationID ResID_Type="14" ResID_Value="ABC-1234567890"/>
								</HotelReservationIDs>
							</ResGlobalInfo>
						</HotelReservation>
					</HotelReservations>
				</HotelNotifReport>
			</NotifDetails>
		</OTA_NotifReportRQ>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}

{% tab title="Confirm Modification" %}

* The presence of the `<Success/>` element indicates that the modification was processed in the PMS.
* The UniqueID Type 16 element informs SiteMinder which modification message is being confirmed.
* The `HotelReservationID` holds the ID of the reservation modified in the PMS.

```xml
<SOAP-ENV:Envelope
	xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<SOAP-ENV:Header>
		<wsse:Security soap: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_NotifReportRQ
			xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:50+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677">
			<Success/>
			<NotifDetails>
				<HotelNotifReport>
					<HotelReservations>
						<HotelReservation LastModifyDateTime="2025-08-20T09:44:47+02:00" ResStatus="Modify">
							<UniqueID Type="16" ID="bxlumfgwx85nlkgmtc"/>
							<ResGlobalInfo>
								<HotelReservationIDs>
									<HotelReservationID ResID_Type="14" ResID_Value="ABC-1234567890"/>
								</HotelReservationIDs>
							</ResGlobalInfo>
						</HotelReservation>
					</HotelReservations>
				</HotelNotifReport>
			</NotifDetails>
		</OTA_NotifReportRQ>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}

{% tab title="Confirm Cancellation" %}

* The presence of the `<Success/>` element indicates that the cancellation was processed in the PMS.
* The UniqueID Type 16 element informs SiteMinder which cancellation message is being confirmed.
* The `HotelReservationID` holds the ID of the reservation cancelled in the PMS.

```xml
<SOAP-ENV:Envelope
	xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<SOAP-ENV:Header>
		<wsse:Security soap: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_NotifReportRQ
			xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:50+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677">
			<Success/>
			<NotifDetails>
				<HotelNotifReport>
					<HotelReservations>
						<HotelReservation LastModifyDateTime="2025-08-20T11:44:47+02:00" ResStatus="Cancel">
							<UniqueID Type="16" ID="bxlumfgwx85nlkgmtc"/>
							<ResGlobalInfo>
								<HotelReservationIDs>
									<HotelReservationID ResID_Type="14" ResID_Value="ABC-1234567890"/>
								</HotelReservationIDs>
							</ResGlobalInfo>
						</HotelReservation>
					</HotelReservations>
				</HotelNotifReport>
			</NotifDetails>
		</OTA_NotifReportRQ>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Confirm Multiple Reservations" %}

* The presence of the `<Success/>` element indicates that the reservations were created in the PMS.
* The UniqueID Type 16 element informs SiteMinder which reservation message is being confirmed.
* The `HotelReservationID` holds the ID of the newly created reservation in the PMS.

{% hint style="warning" %}
It is not necessary for all reservations retrieved in a single ReadRQ to be confirmed in one `OTA_NotifReportRQ` message. If it’s more convenient for the PMS to send one `OTA_NotifReportRQ` for each reservation, that approach is perfectly acceptable.
{% endhint %}

```xml
<SOAP-ENV:Envelope
	xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<SOAP-ENV:Header>
		<wsse:Security soap: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_NotifReportRQ
			xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:50+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677">
			<Success/>
			<NotifDetails>
				<HotelNotifReport>
					<HotelReservations>
						<HotelReservation CreateDateTime="2025-11-30T14:37:11-03:00" ResStatus="Book">
							<UniqueID Type="16" ID="qlmumfgwx85nlkgmtb"/>
							<ResGlobalInfo>
								<HotelReservationIDs>
									<HotelReservationID ResID_Type="14" ResID_Value="ABC-1234567890"/>
								</HotelReservationIDs>
							</ResGlobalInfo>
						</HotelReservation>
						<HotelReservation CreateDateTime="2025-11-30T14:37:17-03:00" ResStatus="Book">
							<UniqueID Type="16" ID="2frbvhw0e6ho89mkkq"/>
							<ResGlobalInfo>
								<HotelReservationIDs>
									<HotelReservationID ResID_Type="14" ResID_Value="CBA-0987654321"/>
								</HotelReservationIDs>
							</ResGlobalInfo>
						</HotelReservation>
					</HotelReservations>
				</HotelNotifReport>
			</NotifDetails>
		</OTA_NotifReportRQ>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}

{% tab title="Confirm with Errors" %}

* The presence of the `<Error/>` element indicates that the reservation was **not created** in the PMS.
* The UniqueID Type 16 element informs SiteMinder which reservation is being confirmed.
* **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>
		<wsse:Security soap: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_NotifReportRQ
			xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:50+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677">
			<Errors>
				<Error Type="3" Code="402">Invalid room type</Error>
			</Errors>
			<NotifDetails>
				<HotelNotifReport>
					<HotelReservations>
						<HotelReservation CreateDateTime="2025-08-20T09:28:00+02:00" ResStatus="Book">
							<UniqueID Type="16" ID="txlugfiwx85nlkgmtb"/>
						</HotelReservation>
					</HotelReservations>
				</HotelNotifReport>
			</NotifDetails>
		</OTA_NotifReportRQ>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="253">Element / @Attribute</th><th width="129">Type</th><th width="58" align="center">M</th><th>Description</th></tr></thead><tbody><tr><td><strong><code>OTA_NotifReportRQ</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>@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. TimeStamp must use <code>ISO 8601</code> format.</td></tr><tr><td><code>@Version</code></td><td>Decimal</td><td align="center">1</td><td>Specifies the API version. Must be set to <code>1.0</code>.</td></tr><tr><td><code>Success</code></td><td>Element</td><td align="center">0..1</td><td>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 if the reservation, modification or cancellation failed to process</td></tr><tr><td><code>Error</code></td><td>Element</td><td align="center">1..n</td><td>Should be at least one node if there is an Errors node.</td></tr><tr><td><code>@Type</code></td><td>Integer</td><td align="center">1</td><td>Type of error. Refer to <a href="https://developer.siteminder.com/siteminder-apis/additional-resources/reference-tables/error-warning-types">Error Warning Types (EWT)</a>.</td></tr><tr><td><code>@Code</code></td><td>Integer</td><td align="center">0..1</td><td>Code representing the error. Refer to <a href="https://developer.siteminder.com/siteminder-apis/additional-resources/reference-tables/error-codes">Error Codes (ERR)</a>.</td></tr><tr><td><code>NotifDetails / HotelNotifReport</code></td><td>Element</td><td align="center">1</td><td></td></tr><tr><td><code>HotelReservations / HotelReservation</code></td><td>Element</td><td align="center">1..n</td><td>One for each reservation being confirmed.</td></tr><tr><td><code>@CreateDateTime</code></td><td>dateTime</td><td align="center">0..1</td><td>The time the reservation was created in the PMS.<br><strong>Mandatory if <code>ResStatus</code> is <code>Book</code>.</strong></td></tr><tr><td><code>@LastModifyDateTime</code></td><td>dateTime</td><td align="center">0..1</td><td>The time the reservation was updated in the PMS.<br><strong>Mandatory if <code>ResStatus</code> is <code>Modify</code> or <code>Cancel</code>.</strong></td></tr><tr><td><code>@ResStatus</code></td><td>String</td><td align="center">0..1</td><td><p>Specifies the booking status:</p><p><code>Book</code></p><p><code>Modify</code></p><p><code>Cancel</code></p></td></tr><tr><td><code>UniqueID</code></td><td>Element</td><td align="center">1</td><td>The identifier of the reservation message as known to SiteMinder.</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>String</td><td align="center">1</td><td>UniqueID of Type 16 from the OTA_ResRetrieveRS</td></tr><tr><td><code>ResGlobalInfo</code></td><td>Element</td><td align="center">0..1</td><td><strong>Mandatory</strong> if the reservation is part of a successful delivery batch.</td></tr><tr><td><code>HotelReservationIDs / HotelReservationID</code></td><td>Element</td><td align="center">1</td><td>PMS reservation identifier.</td></tr><tr><td><code>@ResID_Type</code></td><td>Integer</td><td align="center">1</td><td>Always <code>14</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>

## 4. **Receipt Response**

The `OTA_NotifReportRS` message is sent to the PMS as a response to the `OTA_NotifReportRQ` message, confirming that SiteMinder successfully processed the request.

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

```xml
<SOAP-ENV:Envelope
	xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<SOAP-ENV:Header/>
	<SOAP-ENV:Body>
		<OTA_NotifReportRS
			xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:57+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677">
			<Success/>
		</OTA_NotifReportRS>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}

{% tab title="Error Response" %}

```xml
<SOAP-ENV:Envelope
	xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<SOAP-ENV:Header/>
	<SOAP-ENV:Body>
		<OTA_NotifReportRS
			xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:57+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677">
			<Errors>
				<Error Type="3" Code="385">Could not find Notifications to confirm with notification id='3123456'</Error>
			</Errors>
		</OTA_NotifReportRS>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

{% endtab %}
{% endtabs %}

## 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/><SOAP-ENV:Body><OTA_ResRetrieveRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:45+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c"><Success/><ReservationsList><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/10/2012</Text></DetailDescription></AdditionalDetail><AdditionalDetail Type="5" Code="ECB"><DetailDescription><Text>Continental breakfast included</Text></DetailDescription></AdditionalDetail></AdditionalDetails></RoomType></RoomTypes><RatePlans><RatePlan RatePlanCode="RAC1" EffectiveDate="2013-03-12" ExpireDate="2013-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="2013-03-14" ExpireDate="2013-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="2013-03-12" ExpireDate="2013-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="2013-03-14" ExpireDate="2013-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="2013-03-12" End="2013-03-15"/><Total AmountAfterTax="568.25" CurrencyCode="USD"/><BasicPropertyInfo HotelCode="HOTELCODE"/><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="2013-03-14" Start="2013-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="2013-03-15" Start="2013-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="2013-03-15" Start="2013-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="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></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="1234567890"/></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="2017-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="10107"/></ResGlobalInfo></HotelReservation></ReservationsList></OTA_ResRetrieveRS></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/><SOAP-ENV:Body><OTA_ResRetrieveRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2024-07-06T15:27:45+00:00" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c"><Success/><ReservationsList><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><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_ResRetrieveRS></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/pull.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.
