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

Reservations

Push reservations messages to SiteMinder Platform in real-time.

API: SiteConnect · Operation: Reservations · Direction: Channel → SM

What is Reservations?

Reservation is a delivery method where the booking channel actively pushes reservations, modifications, and cancellations directly to the SiteMinder Platform in real-time. This integration ensures that properties receive up-to-date booking information, maintaining consistency and reducing the risk of overbooking.

Key Characteristics:

  • Real-time delivery: Reservations pushed immediately after booking

  • Three message types: New bookings (Commit), modifications (Modify), and cancellations (Cancel)

  • Atomic processing: Each reservation is processed entirely or rejected entirely

  • Availability updates: SiteMinder sends updated availability to all channels after processing reservations

Reservation Notification Email: SiteConnect can optionally send reservation notification emails to hotels based on the data in your OTA_HotelResNotifRQ. If your channel cannot send reservation emails directly to hotels, this feature can be requested during integration. It is not enabled by default.

Cancellation Policies: Cancellation policies are managed directly between the hotel and your booking channel and are not handled through the SiteMinder API.

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.

  • The booking channel must include authentication credentials within the SOAP Security header of each request 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 will 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.

Message Exchange Flow

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

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

  2. Confirmation Response (booking channel 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 booking channel to SiteMinder endpoint. It contains the username and password credentials that we provide to the booking channel 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 from your booking channel to SiteMinder. Each message contains exactly one reservation (new booking, modification, or cancellation).

  • Reservation (Initial Delivery) *

  • Reservation Multi-Room

  • Reservation Modifications

  • Reservation Cancellations

Reservation Modifications and Cancellations: SiteMinder uses specific reservation status fields to differentiate between types of reservation actions. Modifications are identified using ResStatus Modify, while cancellations are marked with ResStatus Cancel. For both actions, the full reservation data must be provided, including the original reservation details and the timestamp reflecting when the modification or cancellation was made. This ensures that the booking system processes changes and cancellations accurately and consistently across all properties.

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

@ResStatus

Enumeration

1

Specifies the booking status:

Commit

Modify

Cancel

@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. Must be set to 1.0.

Source

Element / @Attribute
Type
M
Description

POS

Element

1

Contains source details.

Source

Element

1..2

Contains BookingChannel details.

RequestorID

Element

1

Only present in the first Source element. Identifies the system sending the reservation.

@Type

Integer

1

Must be set to 22 (ESRP).

@ID

String

1

Channel code. The ID used will be agreed by trading partners and remain consistent across messages.

BookingChannel

Element

1

Contains booking channel information.

@Primary

Boolean

1

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

false in the second Source element, if present.

CompanyName

Element

1

Name of the booking channel.

@Code

String

0..1

Code of the booking channel. - Same as RequestorID ID for the primary source. - Your internal reference code for the secondary source.

Reservation

Reservation IDs: UniqueID ID must be unique across all properties connected at all times. If a reservation is received with an ID that has already been used, it will be ignored, even if it is for a different hotel. To ensure long-term uniqueness and minimize the risk of reuse, we recommend using a UniqueID with at least 7 numeric characters. Incorporating alphanumeric characters is also encouraged to further increase the number of possible combinations for reservations.

Element / @Attribute
Type
M
Description

HotelReservations

Element

1

Contains the reservation details.

HotelReservation

Element

1

Contains the specific reservation information.

@CreateDateTime

DateTime

1

Date and time when the reservation was first made. Must be set when ResStatus is Commit, Modify and Cancel. CreateDateTime must follow the ISO 8601 Date and Time format.

@LastModifyDateTime

DateTime

0..1

Date and time when the reservation was last modified. Must be set when ResStatus is Modify or Cancel. LastModifyDateTime must follow the ISO 8601 Date and Time format.

UniqueID

Element

1

Unique identifier of the reservation in the system which sent the message.

@Type

Integer

1

Must be set to 14 (Reservation).

@ID

String

1

Actual confirmation number.

RoomStays

Multi-Room Reservations: Multi-room reservations are sent in a single OTA_HotelResNotifRQ with multiple RoomStay elements, each representing one room.

Element / @Attribute
Type
M
Description

RoomStays

Element

1

Contains details of all room stays.

RoomStay

Element

1..n

One instance of RoomStay per room type booked.

@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

Provides more information about the room type for this room stay.

RoomType

Element

1

Contains specific information about the room type.

@RoomTypeCode

String

1

Code of the room booked.

RoomDescription

Element

1

Description of the room.

@Name

String

1

Name of the room. Required for Reservation Notification Email feature.

RatePlans

Commission Purpose: The CommissionPayableAmount represents the amount the hotel owes your booking channel. This is included in the RoomStay total and helps SiteMinder provide better reporting to hotels.

Best Practice: Although optional, sending commission amounts is strongly recommended because:

  • Some hotels configure their PMS to receive reservation rates with or without commission

  • Provides hotels with accurate financial reporting

  • Enables better reconciliation between channels and properties

Element / @Attribute
Type
M
Description

RatePlans

Element

0..1

Provides more information about the rate plan for this room stay.

RatePlan

Element

1

Contains details about the specific rate plan.

@RatePlanCode

String

1

Code of the rate booked.

RatePlanDescription

Element

1

Description of the rate plan. Required for Reservation Notification Email feature.

Commission

Element

0..1

Commission amount associated with the rate plan.

CommissionPayableAmount

Element

1

Amount of commission to be paid.

@Amount

Decimal

1

Commission amount.

@CurrencyCode

String

1

Use ISO 4217 currency codes.

MealsIncluded

Element

0..n

Used to identify the types of meals included with a rate plan.

@MealPlanCode

Integer

0..1

Refer to Meal Plan Type (MPT).

RoomRates

AmountBeforeTax vs AmountAfterTax:

  • Use AmountAfterTax if your rates include taxes

  • Use AmountBeforeTax if your rates exclude taxes

  • You can send both, but amounts must differ (AfterTax must be greater than BeforeTax)

  • At least one must be provided

Multiple Tax Types: You can send multiple Tax elements with different Tax Codes (e.g., GST/VAT, City Tax) to itemize tax types. Reference the Fee Tax Type (FTT) table for codes.

Promotional Rates and Zero-Rate Nights:

  • Best practice: Send actual per-night rates (including 0 for free nights)

  • Alternative: Average total across all nights

  • Recommendation: Add comment explaining any discounts or promotions

  • Validation: SiteMinder accepts reservations with 0 rate totals

This is the complete RoomRates structure showing all standard elements contained in a typical reservation. It demonstrates a 3-night stay with consistent nightly rates, including tax breakdown and a linked service/extra charge.

To understand the complete <RoomRate> anatomy and how to structure daily rates, explore the three rate variation patterns below:

  • Same Value Per Night: All nights charged at identical rates

  • Different Value Per Night: Each night has a distinct rate

  • Combined: Groups of consecutive nights at the same rate

A single <Rate> element spans the entire stay period, with the Base and Total amounts representing the sum of all nights at a uniform nightly rate. This is the most efficient structure when rates don't fluctuate during the stay.

Example breakdown:

  • 3-night stay (Oct 5-7)

  • Total: €558.00 before tax / €620.00 after tax

  • Nightly rate: €186.00 before tax per night / €206.66 after tax per night

Each night is represented by a separate <Rate> element with its individual pricing. The EffectiveDate and ExpireDate span exactly one night, clearly showing the rate breakdown for each date.

Example breakdown:

  • Night 1 (Oct 5): €153.00 before tax / €170.00 after tax

  • Night 2 (Oct 6): €180.00 before tax / €200.00 after tax

  • Night 3 (Oct 7): €225.00 before tax / €259.00 after tax

  • Total: €558.00 before tax / €620.00 after tax

Groups consecutive nights with identical rates into single <Rate> elements, while separating periods where rates differ. This optimizes message size while maintaining rate accuracy.

Example breakdown:

  • Nights 1-2 (Oct 5-6): €360.00 before tax (€180/night) / €400.00 after tax (€200/night)

  • Night 3 (Oct 7): €198.00 before tax / €220.00 after tax

  • Total: €558.00 before tax / €6200.00 after tax

Element / @Attribute
Type
M
Description

RoomRates

Element

1

Contains details of the rates applied to the room stay.

RoomRate

Element

1

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

@RoomTypeCode

String

1

Code of the room booked.

@RatePlanCode

String

0..1

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

@NumberOfUnits

Integer

1

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

Rates

Element

1

Contains rate details

Rate

Element

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

@RateTimeUnit

String

1

Must be set to Day.

@EffectiveDate

Date

1

Starting date of the rate. This date is inclusive. Must use YYYY-MM-DD format.

@ExpireDate

Date

1

Expire date is the first day after the applicable period. This date is not inclusive. Must use YYYY-MM-DD format.

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.

Tax

Element

0..n

Contains specific tax information.

@Type

Enumeration

0..1

Indicates whether the tax is:

inclusive

exclusive

cumulative

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

Total

Element

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

1

Use ISO 4217 currency codes.

Taxes

Element

0..1

Contains details of the taxes applied.

Tax

Element

0..n

Contains specific tax information.

@Type

Enumeration

0..1

Indicates whether the tax is:

inclusive

exclusive

cumulative

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

ServiceRPHs

Element

0..1

Container for the ServiceRPH elements.

ServiceRPH

Element

0..n

Links a service to the Service information at the HotelReservation level (if applicable). Service at the RoomRate level.

@RPH

Integer

1

Reference to the ServiceRPH at the HotelReservation level.

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. Count must be greater than or equal to 1.

@Age

Integer

0..1

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

TimeSpan

The TimeSpan element defines the check-in and check-out dates for the reservation. SiteConnect requires a minimum 1-night stay - the check-out date must be at least one day after the check-in date. Same-day bookings (day-use reservations where arrival and departure occur on the same date) are not supported and will be rejected with a validation error.

Element / @Attribute
Type
M
Description

TimeSpan

Element

1

Contains the timespan for the RoomStay. Maximum 749 days

@Start

Date

1

Check-in date. Must use YYYY-MM-DD format.

@End

Date

1

Check-out date. Must use YYYY-MM-DD format. Must be after Start (minimum 1-night stay required). Same-day bookings will be rejected.

RoomStayTotal

Element / @Attribute
Type
M
Description

Total

Element

1

Container for the total amount elements.

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

Tax

Element

1..n

Contains specific tax information.

@Type

Enumeration

0..1

Indicates whether the tax is:

inclusive

exclusive

cumulative

@Code

String

0..1

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

@Amount

Decimal

0..1

Amount of the tax/fee transferred.

@CurrencyCode

String

0..1

Use ISO 4217 currency codes.

BasicPropertyInfo

Element / @Attribute
Type
M
Description

BasicPropertyInfo

Element

1

Contains basic identification details for the hotel associated with the reservation.

@HotelCode

String

1

Identifier for the hotel.

@HotelName

String

0..1

Name of the hotel.

ServiceRPHs

Element / @Attribute
Type
M
Description

ServiceRPHs

Element

0..1

Container for the ServiceRPH elements.

ServiceRPH

Element

1..n

Service at the RoomStay level.

@RPH

Integer

1

Links a Service to the Service information provided at the HotelReservation level (if applicable).

ResGuestRPHs

Element / @Attribute
Type
M
Description

ResGuestRPHs

Element

0..1

Container for the ResGuestRPH elements.

ResGuestRPH

Element

1..n

Container for the RPH attribute.

@RPH

Integer

1

Links the RoomStay to ResGuest. Find the links in ResGuests.

Comments

Element / @Attribute
Type
M
Description

Comments

Element

0..1

Contains comment for the RoomStay.

Comment

Element

1

Holds the actual comment.

Text

Element

1

The content of the comment.

PCI sensitive data is prohibited.

SpecialRequests

Element / @Attribute
Type
M
Description

SpecialRequests

Element

0

Contains special requests for the RoomStay.

SpecialRequest

Element

0..n

Holds the actual special request.

@Name

String

1

Special request type (e.g., bedding configuration, smoking, cot, extra bed).

Text

Element

0..1

Special request text.

Services

ServiceInventoryCode: Use this list as a guide to code your extras/services. You can use additional codes not on the list such as PARKING or your own service identifier codes generated in your system.

Example of a reservation with a service linked to the RoomRate. ServiceRPH present within <RoomRate>. Service cost is included in the RoomRate Total, RoomStay Total and ResGlobalInfo Total. Service cost is not included in the RoomRate Base

MEAL service for 3 nights. Quantity must be 1. Service Total must reflect total for all nights/quantities booked. The connected PMS will receive a breakdown of this service (per night) based on the TimeSpan.

Example of a reservation with a service linked to the RoomStay. ServiceRPH present within <RoomStay>. Service cost is included in the RoomStay Total and ResGlobalInfo Total. Service cost is not included in the RoomRate Base and RoomRate Total.

Example of a reservation with a service linked to the entire Reservation. No ServiceRPH link. Service cost is included in the ResGlobalInfo Total. Service cost is not included in the RoomRate Base, RoomRate Total and RoomStay Total.

TimeSpan is used to show the date range or dates the service applies. You will use the @Start and @End dates to show the date range

Service applied for the first 2 nights in a 4 night reservation:

Service applied for different nights in a 4 night reservation:

TimeSpan can only be used once in a Service node. In this case, you will send 2 Service nodes to indicate the 2 service dates.

Element / @Attribute
Type
M
Description

Services

Element

0..1

Contains service details provided to guests.

Service

Element

1..n

Represents a non-room product provided to guests.

@ServiceInventoryCode

String

1

Identifier code for the service. Refer to Service and Extra Charge. Use this list as a guide to code your extras/services. You can use additional codes not on the list such as PARKING or your own service identifier codes generated in your system.

@ID

String

0..1

Reference ID for the extra/service provided by the source booking channel.

@ServiceRPH

Integer

0..1

Links the Service to a RoomStay or RoomRate. ServiceRPH absence indicates a HotelReservation level charge.

@Inclusive

Boolean

1

Must be set to TRUE, as SiteMinder reports totals as inclusive of charges and extras.

@Quantity

Integer

1

Number of units included in the charge. This value does not affect the total amount.

Price

Element

0..1

Container for pricing details of the service.

Base

Element

0..1

Base amount charged for the service.

@CurrencyCode

String

0..1

Use ISO 4217 currency codes.

@AmountAfterTax

Decimal

0..1

At least one of AmountAfterTax or AmountBeforeTax must be set.

@AmountBeforeTax

Decimal

0..1

At least one of AmountAfterTax or AmountBeforeTax must be set.

Taxes

Element

0..1

Contains details of the taxes applied.

Tax

Element

1

Contains specific tax information.

@Code

1

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

@Percentage

Decimal

0..1

Percentage rate of the applied tax.

@Amount

Decimal