For the complete documentation index, see llms.txt. This page is also available as Markdown.

Upload (PMS -> SM)

Sync PMS reservations back to SiteMinder Platform.

API: pmsXchange · Operation: Reservations Upload · Direction: PMS → SM · Method: Push

What is Reservations Upload (PMS -> SM)?

Reservations Upload (PMS -> SM) is a delivery method where the Property Management System (PMS) actively pushes reservations, modifications, and cancellations to the SiteMinder Ecosystem. This includes all PMS reservations—walk-ins, historic OTA bookings, and direct bookings—which are sent to SiteMinder's web service endpoint in real-time.

Integration Requirements

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

Web Service Endpoint

Authentication

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

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

Message Structure

  • All messages must adhere to the SOAP message format.

  • OTA message must be encapsulated within the SOAP Body.

  • Requests must include a SOAP Security Header for authentication.

  • Responses must be returned in a SOAP envelope with empty SOAP Header.

Content-Type

text/xml; charset=utf-8

Version

SOAP 1.1

Protocol & Security

  • All communication must occur over HTTPS using TLS 1.2 or higher.

  • Non-secure (HTTP) connections are not permitted.

  • Communication is synchronous request/response pairs.

  • Each message is atomic - processed entirely or not at all.

  • SiteMinder sends requests over port 443.

Message Exchange Flow

When reservations are created, modified, or canceled outside of SiteMinder's distribution network, your PMS delivers them to the SiteMinder Platform using a synchronous SOAP/HTTPS exchange. This ensures SiteMinder maintains a complete view of property inventory across all booking sources.

  1. Reservation Message (PMS to SiteMinder): OTA_HotelResNotifRQ Delivers a single reservation message (new booking, modification, or cancellation).

  2. Confirmation Response (SiteMinder to PMS): OTA_HotelResNotifRS Confirms successful receipt or reports processing failure.

Security Header

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

Key Requirements:

  • Validation: Our endpoint will validate these credentials on every request.

  • Scope: One set of credentials is used for all properties in your integration.

  • Security: Credentials are transmitted as plain text within the HTTPS encrypted channel.

  • Response: Invalid credentials will return a SOAP fault with appropriate error code.

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

Requests must include a SOAP Security Header for authentication.

Responses must be returned in a SOAP envelope with an empty SOAP Header.

Multiplicity

In the SOAP Specification tables below M refers to the number of instances or occurrences of an element or attribute that are allowed or required in a given context. It defines how many times a particular component (element or attribute) can appear within a specific structure.

M
Definition

1

The element or attribute must be present exactly once.

0..1

The element or attribute is optional; it can be present zero or one time.

0..n

The element or attribute can be present zero or more times, with no upper limit (where n represents an infinite number of occurrences).

1..n

The element or attribute must be present at least once and can be present any number of times, with no upper limit.

n..m

Specific range, the element or attribute must be present at least n times and no more than m times (where n and m are specific numbers).

1. Reservation Message

OTA_HotelResNotifRQ

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

The message consists of a list of HotelReservation elements. The content may vary since the PMS can delivers reservations from multiple upstream sources (walk-in reservations, direct booking channels, etc.), many of which have significantly different reservation formats and data structures.

Reservation Types

PMS Reservation: A reservation created directly at the hotel property. For example when a guest arrives without a prior booking, or a customer phones to make a booking. These originate in the PMS and represent the simplest reservation flow with no external channels involved.

Internet : A reservation from a booking platform or website that connects directly to the PMS, bypassing SiteMinder's distribution network. Examples include the hotel's own booking engine, direct OTA connections, or property-specific reservation tools.

Other Booking Channel Types: A reservation that flows through an intermediary distribution system before reaching the PMS. The booking originates from a travel agent, GDS (like Amadeus/Sabre), or wholesale platform, passes through a central reservation system, then arrives at the property.

SiteMinder Modification/Cancellation: An update to an existing reservation originally delivered to the PMS through SiteMinder's channel manager. These messages track changes or cancellations to bookings that SiteMinder previously distributed, ensuring systems stay in sync.

HotelReservation

  • Represents a single booking from one channel.

  • Always contains exactly one reservation per message.

  • Includes all associated rooms, guests, and payments.

Element / @Attribute
Type
M
Description

OTA_HotelResNotifRQ

Element

1

Root element for the request.

@xmlns

String

1

Defines the XML namespace for the request. Will be set to http://www.opentravel.org/OTA/2003/05

@EchoToken

String

1

Unique identifier for the request, used to match requests and responses. Preferred format: UUID 8-4-4-4-12.

@TimeStamp

DateTime

1

Time when the request was generated. TimeStamp must use ISO 8601 format.

@Version

Decimal

1

Specifies the API version. Current Version 1.0

HotelReservations

A confirmed booking that has been accepted. The guest has not yet arrived at the property. Any modification of this booking will be sent with this ResStatus.

A tentative booking placed on a waiting list when the requested room/dates are not immediately available. Will be confirmed if availability opens up.

A previously confirmed reservation that has been terminated by either the guest or hotel before the arrival date.

A confirmed reservation where the guest failed to arrive on the scheduled check-in date without prior cancellation notice.

An active reservation where the guest has checked in and is currently staying at the property.

A completed reservation where the guest has departed from the property and settled their account.

Element / @Attribute
Type
M
Description

HotelReservations

Element

1

Contains the reservation details.

HotelReservation

Element

1

Contains the specific reservation information.

@ResStatus

Enumeration

1

Status is:

Reserved

Waitlisted

Cancelled

No-show

In-house

Checked-Out

@CreateDateTime

DateTime

1

Date and time when the reservation was first made.

CreateDateTime must follow the ISO 8601 Date and Time format.

@LastModifyDateTime

DateTime

0..1

This indicates the last date and time when the reservation was last modified. Mandatory if a message relating to this reservation has already been uploaded. If the same LastModifyDateTime is sent in multiple reservation events, only the first will be processed and the rest ignored since it is considered as the same reservation version. LastModifyDateTime must follow the ISO 8601 Date and Time format.

@CreatorID

String

0..1

The creator ID could be a software system identifier or an identifier of an employee responsible for the creation.

@LastModifierID

String

0..1

Identifies the last software system or person to modify a record.

@WalkInIndicator

Boolean

0..1

Used to identify if the reservation is a walk-in reservation. This attribute is mandatory if a reservation has been generated in the PMS.

POS / Source

Contains a single Source element with RequestorID Type="10" and BookingChannel Type="4" . The CompanyName@Code attribute should identify your PMS. The WalkInIndicator attribute must be present on the HotelReservation element for PMS reservations. If the reservation is a 'walk-in' reservation then the WalkInIndicator attribute must be 'true'

Contains a single Source element with RequestorID Type="10" and BookingChannel Type="7" (Internet). The CompanyName@Code must identify the specific booking channel code using our Booking Agent Codes.

Contains two Source elements: - Primary identifying the central system with Primary="true" and the appropriate BookingChannel@Type for the system that is handling the reservations. For the full list of Booking Channel Types see Booking Channel Types Code List - Secondary with BookingChannel Primary="false" and typically Type="7", identifying the original booking source. The CompanyName@Code must identify the specific booking channel code using our Booking Agent Codes.

Contains a single Source element with RequestorID Type="10" and BookingChannel Type="4". The CompanyName and @Code should identify your PMS. The HotelReservation element's ResStatus attribute indicates the action (Cancelled, Modified, etc.).

Element / @Attribute
Type
M
Description

POS

Element

1

Point of Sale (POS) identifies the party or connection channel making the request.

Source

Element

1..10

This holds the details about the requestor. It may be repeated to also accommodate the delivery systems. Provides information on the source of a request.

RequestorID

Element

1

This identifies the system which is sending the reservation. This element must appear in the first Source element.

@Type

Integer

1

10 for PMS

@ID

String

1

PMS Code assigned by SiteMinder. Remains the same throughout the messages.

BookingChannel

Element

0..1

Contains booking channel information.

@Type

Integer

1

The type of booking channel:

4 - Identifier Property management system (PMS).

5 - Identifier for Central reservation system (CRS).

7 - Identifier for Internet.

@Primary

Boolean

0..1

true for the primary booking channel in the first Source element.

false in the second Source element.

CompanyName

Element

1

Identifies the company that is associated with the booking channel.

@Code

String

0..1

Identifies a company by the company code. The Code must identify the specific booking channel code using our Booking Agent Codes.

UniqueID

Element / @Attribute
Type
M
Description

UniqueID

Element

1

Used to provide PMS and/or CRS identifiers. An identifier used to uniquely reference an object in a system (e.g. an airline reservation reference, customer profile reference, booking confirmation number, or a reference to a previous availability quote).

@ID

String

1

A unique identifying value assigned by the creating system. The ID attribute may be used to reference a primary-key value within a database or in a particular implementation.

RoomStays

Element / @Attribute
Type
M
Description

RoomStays

Element

1

A collection of RoomStay objects. Room stays associated with this reservation.

RoomStay

Element

1..n

One instance of RoomStay per room type booked.

@MarketCode

String

0..1

The code that relates to the market being sold to (e.g., the corporate market, packages).

@SourceOfBusiness

String

0..1

To specify where the business came from e.g. radio, newspaper ad, etc.

@PromotionCode

String

0..1

If configured, this is the promotion code indicating, for instance, a specific marketing campaign (not the rate code).

RoomTypes

Element / @Attribute
Type
M
Description

RoomTypes

Element

0..1

A collection of Room Types associated with a particular Room Stay.

RoomType

Element

0..1

Provides details regarding rooms, usually guest rooms. Can be sent to give more information on the room type for this room stay.

@RoomType

String

0..1

A code value that indicates the type of room for which this request is made, e.g.: double, king, etc. Values may use the Hotel Descriptive Content table or a codes specific to the property or hotel brand.

@RoomTypeCode

String

0..1

Specific system room type code, ex: A1K, A1Q etc.

@RoomCategory

Integer

0..1

Indicates the category of the room. Typical values would be Moderate, Standard, or Deluxe.

@RoomID

Integer

0..1

A string value representing the unique identification of a room if the request is looking for a specific room.

@NonSmoking

Boolean

0..1

Non-smoking indicator.

@Configuration

String

0..1

Textual description of room configuration.

RoomDescription

Element

0..1

Textual information regarding the room.

@Text

Element

0..n

A text description of the room

AdditionalDetails

Element

0..1

Container for additional information about this room.

AdditionalDetail

Element

1..n

@Type

Integer

0..1

Used to define the type of information being sent (e.g., rate description, property description, room information). Refer to the Additional Detail Type (ADT). Some common usages are: 43 - Meal plan information 15 - Promotion information

@Code

String

0..1

Trading partner code associated to AdditionalDetailType.

DetailDescription

Element

0..1

Textual description of AdditionalDetail information.

Text

Element

0..n

A text description of AdditionalDetail

RatePlans

Element / @Attribute
Type
M
Description

RatePlans

Element

0..1

A collection of Rate Plans associated with a particular Room Stay.

RatePlan

Element

0..1

Defines the details of the rate plan as used in the booking process.

@RatePlanName

String

0..1

Provides the name of the rate plan or group. Typically used with RatePlanType to further describe the rate plan.

@EffectiveDate

Date

0..1

The effective date of the RatePlan.

@ExpireDate

Date

0..1

The expire date for a RatePlan, this should be considered an exclusive date, the date for which the current rate plan information is no longer valid.

@RatePlanCode

String

0..1

Code of the rate booked.

RatePlanDescription

Element

0..1

Textual description of the RatePlan.

Text

Element

0..n

A text description of the RatePlan.

RatePlanInclusions

Element

0..1

Defines charges that are included in this rate plan.

@TaxInclusive

Boolean

0..1

Indicates that service fees are included in the rate.

@ServiceFeeInclusive

Boolean

0..1

Indicates that tax is included in the rate.

RatePlanInclusionDescription

Element

0..1

Textual description of what is included in the rate plan.

Text

Element

0..1

A text description of the RatePlanInclusionDescription

MealsIncluded

Element

0..1

Container.

@MealPlanIndicator

Boolean

0..1

When true, a meal plan is included in this rate plan. When false, a meal plan is not included in this rate plan.

@MealPlanCodes

String

0..1

Used to identify the types of meals included with a rate plan. Refer to OpenTravel Code List Meal Plan Type (MPT)

AdditionalDetails

Element

0..1

Textual description of AdditionalDetail information.

AdditionalDetail

Element

0..1

A text description of AdditionalDetail

@Type

Integer

0..1

Used to define the type of information being sent (e.g., rate description, property description, room information). Refer to OpenTravel Code List Additional Detail Type (ADT) Some common usages are: 43 - Meal plan information 15 - Promotion information

@Code

String

0..1

Trading partner code associated to AdditionalDetailType.

DetailDescription

Element

0..1

Textual description of AdditionalDetail information.

Text

Element

0..n

A text description of AdditionalDetail

RoomRates

Element / @Attribute
Type
M
Description

RoomRates

Element

0..1

Contains details of the rates applied to the room stay.

RoomRate

Element

1..n

One RoomRate per RoomStay. Multiple rates are listed under the RoomRate.

@InvBlockCode

String

0..1

Code that identifies an inventory block.

@NumberOfUnits

Integer

0..1

Must be set to 1. If there are multiple RoomStays for the same RoomTypeCode and RatePlanCode, multiple RoomStay elements should be sent.

@RoomID

String

0..1

A string value representing the unique identification of a room.

@RoomTypeCode

String

0..1

Code of the room booked.

@RatePlanCode

String

0..1

Code of the rate plan booked. Must be included if RoomStay / RatePlans is present.

@RatePlanCategory

String

0..1

Hotel systems often group multiple rate plans into a single category. This refers to that category that is specific to the hotel CRS/ PMS and should not be confused with a GDS rate category.

@EffectiveDate

Date

1

Indicates the starting date.

@ExpireDate

Date

1

ExpireDate is the first day after the applicable period (e.g. when expire date is 2012-04-03 the last date of the period is 2012-04-02). Format yyyy-MM-dd. This date is exclusive.

Rates

Element

0..1

Container that will contain instances of Rates.

Rate

Element

1..n

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.

@UnitMultiplier

Integer

1

Must be set to 1.

@EffectiveDate

Date

1

Starting date of the rate. This date is inclusive.

@ExpireDate

Date

1

Expire date is the first day after the applicable period. This date is not inclusive.

Base

Element

1

Base amount charged for the accommodation.

@AmountBeforeTax

Decimal

0..1

At least one of AmountAfterTax or AmountBeforeTax must be set.

@AmountAfterTax

Decimal

0..1

At least one of AmountAfterTax or AmountBeforeTax must be set.

@CurrencyCode

String

1

Use ISO 4217 currency codes.

Taxes

Element

0..1

Contains details of the taxes applied.

@CurrencyCode

String

0..1

Use ISO 4217 currency codes.

@Amount

Decimal

0..1

A monetary amount of tax.

Tax

Element

0..n

Contains specific tax information.

@Code

String

0..1

Indicates the specific tax or fee that is being transferred. Refer to Fee Tax Type (FTT).

@Amount

Decimal

0..1

Tax amount applied.

@CurrencyCode

String

0..1

Use ISO 4217 currency codes.

@Percent

Integer

0..1

Tax percentage; if zero, assume use of the Amount attribute (Amount or Percent must be a zero value).

TaxDescription

Element

0..5

Text description of the taxes.

Text

Element

0..n

Textual description of the tax

Total

Element

1

Total amount charged, including additional occupants and fees. If empty, assume the Base amount equals the Total amount.

@AmountBeforeTax

Decimal

0..1

At least one of AmountAfterTax or AmountBeforeTax must be set.

@AmountAfterTax

Decimal

0..1

At least one of AmountAfterTax or AmountBeforeTax must be set.

@CurrencyCode

String

0..1

Use ISO 4217 currency codes.

Taxes

Element

0..1

Contains details of the taxes applied.

@Amount

Decimal

0..1

Tax amount applied.

@CurrencyCode

String

0..1

Use ISO 4217 currency codes.

Tax

Element

0..99

An individual tax per tax element. This element allows for both percentages and flat amounts. If one field is used, the other should be zero since logically, taxes should be calculated in only one of the two ways.

@Code

Integer

0..1

The type of tax being applied to the total. Refer to the OpenTravel Code List Fee Tax Type (FTT).

@Amount

Integer

0..1

A monetary amount of tax. if zero, assume use of the Percent attribute (Amount or Percent must be a zero value).

@CurrencyCode

String

0..1

Use ISO 4217 currency codes.

@Percent

Integer

0..1

Tax percentage; if zero, assume use of the Amount attribute (Amount or Percent must be a zero value).

TaxDescription

Element

0..5

Text description of the taxes.

Text

String

0..n

Textual description of the tax

Total

Element

1

The Total amount charged for the accommodation or service per unit of time.

@AmountBeforeTax

Integer

0..1

The Total amount charged for the accommodation or service per unit of time.

@AmountAfterTax

Integer

0..1

The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax).

@CurrencyCode

Integer

0..1

Use ISO 4217 currency codes.

Taxes

Element

0..1

A collection of taxes.

@CurrencyCode

Integer

0..1

Use ISO 4217 currency codes.

@Amount

Integer

0..1

A monetary amount of tax.

Tax

Element

0..99

An individual tax per tax element. This element allows for both percentages and flat amounts. If one field is used, the other should be zero since logically, taxes should be calculated in only one of the two ways.

@Code

Integer

0..1

The type of tax is applied to the total. Refer to the OpenTravel Code List Fee Tax Type (FTT).

@Amount

Integer

0..1

A monetary amount of tax. if zero, assume use of the Percent attribute (Amount or Percent must be a zero value).

@CurrencyCode

Integer

0..1

Use ISO 4217 currency codes.

@Percent

Integer

0..1

Tax percentage; if zero, assume use of the Amount attribute (Amount or Percent must be a zero value).

TaxDescription

String

0..5

Text description of the taxes.

Text

String

0..n

Textual description of the tax

ServiceRPHs

Element

0..1

A collection of unsigned integers that reference the RPH (Reference Place holder) attribute in the Service object. The ServiceRPH attribute in the Service object is an indexing attribute that identifies the services attached this RoomRate.

ServiceRPH

Element

1..n

This is a reference placeholder used as an index for a service to be associated with this stay

@RPH

Integer

1

Provides a unique reference to the service.

GuestCounts

Element / @Attribute
Type
M
Description

GuestCounts

Element

1

Total guest counts, divided by age group (adult, child, infant). Adult count must always be sent.

GuestCount

Element

1..n

Represents the count for a specific age group.

@AgeQualifyingCode

Integer

1

10 = Adult (mandatory)

8 = Child (optional)

7 = Infant (optional)

@Count

Integer

1

Number of guests for this age group.

@Age

Integer

0..1

Age of the guest, required only for children and infants.

@AgeBucket

String

0..1

Defines the age range category or bucket a guest can be booked into. This is typically used in conjunction with the age qualifying code to further define the applicable age range.

TimeSpan

Element / @Attribute
Type
M
Description

TimeSpan

Element

1

Contains the timespan for the RoomStay.

@Start

Date

1

Check-in date.

@End

Date

1

Check-out date. Must be after Start.