Reservations

Push reservations messages to SiteMinder Platform in real-time.

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 Emails: 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.

<SOAP-ENV:Envelope
	xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
	<SOAP-ENV:Header>
		<wsse:Security SOAP-ENV:mustUnderstand="1"
			xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
			<wsse:UsernameToken>
				<wsse:Username>USERNAME</wsse:Username>
				<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">PASSWORD</wsse:Password>
			</wsse:UsernameToken>
		</wsse:Security>
	</SOAP-ENV:Header>
	<SOAP-ENV:Body>
		<OTA_HotelResNotifRQ
			xmlns="http://www.opentravel.org/ota/2003/05" ResStatus="Commit" 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_HotelResNotifRQ>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

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.

<OTA_HotelResNotifRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" ResStatus="Commit" 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_HotelResNotifRQ>
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

<POS>
	<Source>
		<RequestorID Type="22" ID="ABC"/>
		<BookingChannel Primary="true">
			<CompanyName Code="ABC">Channel Name</CompanyName>
		</BookingChannel>
	</Source>
	<!-- Additional Source element -->
</POS>
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.

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.

<HotelReservations>
	<HotelReservation CreateDateTime="2024-07-06T15:27:41+00:00" LastModifyDateTime="2024-07-06T15:27:41+00:00">
		<UniqueID Type="14" ID="123456789"/>
		<!-- ... other elements and attributes have been omitted for brevity ... -->
	</HotelReservation>
</HotelReservations>
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.

<RoomStays>
	<RoomStay PromotionCode="AUTUNM2024">
		<!-- ... other elements and attributes have been omitted for brevity ... -->
	</RoomStay>
	<!-- Additional RoomStay elements -->
</RoomStays>
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

<RoomTypes>
	<RoomType RoomTypeCode="TPL">
		<RoomDescription Name="Triple Room">Double bed and single bed.</RoomDescription>
	</RoomType>
</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.

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

<RatePlans>
	<RatePlan RatePlanCode="BAR">
		<RatePlanDescription>Best Available Rate.</RatePlanDescription>
		<Commission>
			<CommissionPayableAmount Amount="60.00" CurrencyCode="EUR"/>
		</Commission>
		<MealsIncluded MealPlanCode="14"/>
		<!-- Additional MealsIncluded elements -->
	</RatePlan>
</RatePlans>
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.

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.

@MealPlanCodes

Integer

0..1

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

<RoomRates>
	<RoomRate RoomTypeCode="TPL" RatePlanCode="BAR" NumberOfUnits="1">
		<Rates>
			<Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2024-10-05" ExpireDate="2024-10-08">
				<Base AmountBeforeTax="558.00" AmountAfterTax="620.00" CurrencyCode="EUR">
					<Taxes>
						<Tax Type="inclusive" Code="35" Amount="62.00" CurrencyCode="EUR"/>
						<!-- Additional Tax elements -->
					</Taxes>
				</Base>
				<Total AmountBeforeTax="558.00" AmountAfterTax="620.00" CurrencyCode="EUR">
					<Taxes>
						<Tax Type="inclusive" Code="35" Amount="62.00" CurrencyCode="EUR"/>
						<!-- Additional Tax elements -->
					</Taxes>
				</Total>
			</Rate>
		</Rates>
		<!-- Additional Rates elements -->
		<ServiceRPHs>
			<ServiceRPH RPH="1"/>
			<!-- Additional ServiceRPH elements -->
		</ServiceRPHs>
	</RoomRate>
</RoomRates>
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

0..n

Contains rate details

Rate

Element

1

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

2 adults, 2 children (age 7 and 10), 1 infant
<GuestCounts>
	<GuestCount AgeQualifyingCode="10" Count="2"/>
	<GuestCount AgeQualifyingCode="8" Age="7" Count="1"/>
	<GuestCount AgeQualifyingCode="8" Age="10" Count="1"/>
	<GuestCount AgeQualifyingCode="7" Count="1"/>
	<!-- Additional GuestCount elements -->
</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.

<TimeSpan Start="2024-10-05" End="2024-10-08"/>
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

<Total AmountBeforeTax="558.00" AmountAfterTax="620.00" CurrencyCode="EUR">
	<Taxes>
		<Tax Type="inclusive" Code="35" Amount="62.00" CurrencyCode="EUR"/>
		<!-- Additional Tax elements -->
	</Taxes>
</Total>
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

<BasicPropertyInfo HotelCode="HOTELCODE" HotelName="The Hotel Name"/>
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

<ServiceRPHs>
	<ServiceRPH RPH="1"/>
	<!-- Additional ServiceRPH elements -->
</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

<ResGuestRPHs>
	<ResGuestRPH RPH="1"/>
	<!-- Additional ResGuestRPH elements -->
</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

<Comments>
	<Comment>
		<Text>See the room stay comments here</Text>
	</Comment>
</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

<SpecialRequests>
	<SpecialRequest Name="Extra Bed">
		<Text>Yes</Text>
	</SpecialRequest>
	<!-- Additional ServiceRPH elements -->
</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.

<Services>
    <Service ServiceInventoryCode="EXTRA_BED" Inclusive="true" ServiceRPH="1" Quantity="1" ID="12346">
        <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="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>
            </Total>
            <RateDescription>
                <Text>Extra person charge EUR 2.50 per day for cot</Text>
            </RateDescription>
        </Price>
        <ServiceDetails>
            <TimeSpan Start="2024-10-05" End="2024-10-08"/>
        </ServiceDetails>
    </Service>
    <!-- Additional Service elements -->
</Services>
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

0..1

Tax amount applied.

TaxDescription

Element

0..1

Container for a detailed description of the tax.

Text

Element

1

Text description of the tax.

Total

Element

1

Container for the total amount of the service.

@CurrencyCode

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

0..1

Tax amount applied.

TaxDescription

Element

0..1

Container for a detailed description of the tax.

Text

Element

1

Text description of the tax.

RateDescription

Element

0..1

Container for a description of the rate applied to the service.

Text

Element

1

A text description of the service/extra.

ServiceDetails

Element

0..1

Container for additional service details.

TimeSpan

Element

1

Contains the time span for which the service is provided.

@Start

Date

0..1

Start date of service. Must use YYYY-MM-DD format.

@End

Date

0..1

Last date of service. Must use YYYY-MM-DD format.

ResGuests

Guest vs Customer Distinction:

  • Guests (ResGuest): People staying in the rooms (sent at RoomStay level via ResGuestRPH)

  • Customer (Profile ProfileType="1" in ResGlobalInfo): Person who made the booking or primary contact

These can be the same person or different people.

Linking Guests to RoomStays: Using ResGuestRPH to link guests to specific RoomStays is optional but recommended because:

  • Hotels value knowing which guest is in which room

  • Some PMS systems require guest-to-room mapping for proper processing

  • Improves data accuracy for multi-room bookings

Minimum Requirements:

  • At least one guest profile must be provided

  • For multi-room bookings, you can send one guest or multiple guests

  • If you cannot link guests to rooms, send at least the primary guest

<ResGuests>
	<ResGuest ResGuestRPH="1" ArrivalTime="14:00:00" PrimaryIndicator="1">
		<Profiles>
			<ProfileInfo>
				<Profile ProfileType="1">
					<Customer>
						<PersonName>
							<NamePrefix>Mr</NamePrefix>
							<GivenName>John</GivenName>
							<Surname>Smith</Surname>
						</PersonName>
						<Telephone PhoneNumber="+61123456789"/>
						<Email>[email protected]</Email>
						<Address>
							<AddressLine>200 George St</AddressLine>
							<AddressLine>Level 3</AddressLine>
							<CityName>Sydney</CityName>
							<PostalCode>2000</PostalCode>
							<StateProv>NSW</StateProv>
							<CountryName>Australia</CountryName>
						</Address>
						<CustLoyalty ProgramID="LoyaltyProgramName" MembershipID="123456789" ExpireDate="2020-12-31"/>
						<Document DocID="987654321P" DocType="5" DocHolderNationality="AU" BirthDate="1996-10-05" Gender="Male" BirthCountry="AU" BirthPlace="AU" EffectiveDate="2015-10-05" ExpireDate="2025-10-05" DocIssueAuthority="The Australian Passport Office" DocIssueLocation="Sydney" DocIssueStateProv="NSW" DocIssueCountry="?">
							<DocHolderName>John Smith</DocHolderName>
						</Document>
					</Customer>
				</Profile>
			</ProfileInfo>
		</Profiles>
	</ResGuest>
	<!-- Additional ResGuest elements -->
</ResGuests>
Element / @Attribute
Type
M
Description

ResGuests

Element

1

Contains the guests for the reservation.

ResGuest

Element

1..n

Contains the specific guest details.

@ResGuestRPH

Integer

0..1

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

@PrimaryIndicator

Boolean

0..1

Indicates the primary guest on a reservation: 1 primary guest

0 secondary guests

@ArrivalTime

Time

0..1

Arrival time of the guest. Must use hh:mm:ss format.

Profiles

Element

1

Contains the guest profile information.

ProfileInfo

Element

1

Contains the profile information for the guest.

Profile

Element

1

Contains detailed customer profile information.

@ProfileType

Integer

1

Must be set to 1 (Customer).

Customer

Element

1

Contains detailed guest information.

PersonName

Element

1

Contains the name information for the guest.

NamePrefix

Element

0..1

Title of the guest (e.g., Mr., Mrs., Dr.).

GivenName

Element

1

First name of the guest.

Surname

Element

1

Last name of the guest.

Telephone

Element

0..1

Contains telephone information related to the guest.

@PhoneNumber

String

1

Contains the actual number (maximum 32 characters).

Email

Element

0..1

Contact email address.

Address

Element

0..1

Address information of the guest.

AddressLine

Element

0..2

Address lines for the guest.

CityName

Element

0..1

City of residence.

PostalCode

Element

0..1

Postal code.

StateProv

Element

0..1

State or province name.

CountryName

Element

0..1

Country name (maximum 64 characters).

CustLoyalty

Element

0..n

Contains loyalty information for the guest.

@ProgramID

String

1

Defined membership program name or ID applicable to the program.

@MembershipID

String

1

Account identification number for this particular member in this particular program.

@ExpireDate

Date

0..1

Expiry date for this particular membership record in this particular program.

Document

Element

0..1

Detailed document information for the guest.

@BirthCountry

String

0..1

Birth country of the document holder. Use ISO 3166 A-2 country codes.

@BirthDate

Date

0..1

Indicates the date of birth as indicated in the document. Use ISO 8601 date format.

@BirthPlace

String

0..1

Specifies the birth place of the document holder (e.g., city, state, county, province). Maximum 64 characters.

@DocHolderNationality

String

0..1

Country of nationality of the document holder. Use ISO 3166 A-2 country codes.

@DocID

String

1

Unique number assigned by authorities to the document.

@DocIssueAuthority

String

0..1

Indicates the group or association that granted the document. Maximum 64 characters.

@DocIssueCountry

String

0..1

Country where the document was issued. Use ISO 3166 A-2 country codes.

@DocIssueLocation

String

0..1

Indicates the location where the document was issued. Maximum 64 characters.

@DocIssueStateProv

String

0..1

State or Province where the document was issued (2-8 characters).

@DocType

String

1

Indicates the type of document. Refer to Document Type Code (DOC).

@EffectiveDate

Date

0..1

Indicates the starting date. Must use YYYY-MM-DD format.

@ExpireDate

Date

0..1

Indicates the ending date. Must use YYYY-MM-DD format.

@Gender

String

0..1

Identifies the gender:

Female

Male

Unknown

DocHolderName

Element

0..1

The name of the document holder in unformatted text (Mr. Sam Jones). If no DocHolderName is included, the guest name fields will be assumed as the holder name.

ArrivalTransport

<ArrivalTransport>
	<TransportInfo Type="Air" ID="QF123" Time="2024-10-05T13:00:00"/>
</ArrivalTransport>
Element / @Attribute
Type
M
Description

ArrivalTransport

Element

0..1

Details about transport to the destination.

TransportInfo

Element

1

Contains transport mode details used by the guest for arrival.

@Type

String

0..1

Type of transport used for arrival, provided by the booking channel.

@ID

String

0..1

Transport provider's ID for the mode of transportation (e.g., Flight Number QF123).

@Time

DateTime

0..1

Arrival time at the destination.

DepartureTransport

<DepartureTransport>
	<TransportInfo Type="Air" ID="QF321" Time="2024-10-08T17:00:00"/>
</DepartureTransport>
Element / @Attribute
Type
M
Description

DepartureTransport

Element

0..1

Details about transport from the destination.

TransportInfo

Element

1

Contains transport mode details used by the guest for departure.

@Type

String

0..1

Type of transport used for departure, provided by the booking channel.

@ID

String

0..1

Transport provider's ID for the mode of transportation (e.g., Flight Number QF123).

@Time

DateTime

0..1

Departure time from the destination.

ResGlobalInfo

<ResGlobalInfo>
	<HotelReservationIDs>
		<HotelReservationID ResID_Type="14" ResID_Value="123456789"/>
	</HotelReservationIDs>
	<!-- ... other elements and attributes have been omitted for brevity ... -->
</ResGlobalInfo>
Element / @Attribute
Type
M
Description

ResGlobalInfo

Element

1

Contains global information about the reservation.

HotelReservationIDs

Element

0..1

Contains the HotelReservationID.

HotelReservationID

Element

1

Reference number/string or PNR as supplied by the booking channel.

@ResID_Type

String

1

Must be set to 14 (Travel Agent PNR).

@ResID_Value

String

1

Actual reference number/string supplied by the booking channel (maximum 64 characters).

ResComments

<Comments>
	<Comment>
		<Text>See the reservation comments here</Text>
	</Comment>
	<!-- Additional Comment elements -->
</Comments>
Element / @Attribute
Type
M
Description

Comments

Element

0..1

Contains comment for the reservation.

Comment

Element

1..n

Holds the actual comment.

Text

String

1

Content of the comment.

PCI sensitive data is prohibited.

ReservationTotal

Discount Handling: SiteConnect does not have a specific discount field. Discounts should be applied to the total amounts in:

  • Reservation Total (ResGlobalInfo/Total)

  • RoomStay Total

  • Daily Rate Totals

Best practice: Include a comment explaining the discount applied (e.g., "Early Bird 15% discount applied").

<Total CurrencyCode="EUR" AmountBeforeTax="558.00" AmountAfterTax="620.00">
	<Taxes>
		<Tax Type="inclusive" Code="35" Amount="62.00" CurrencyCode="EUR"/>
	</Taxes>
	<TPA_Extensions>
		<Total includesCommission="true"/>
	</TPA_Extensions>
</Total>
Element / @Attribute
Type
M
Description

Total

Element

1

Total amount for the reservation. This includes all RoomStays and any additional fees or charges that apply.

@CurrencyCode

String

1

Use ISO 4217 currency codes.

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

Taxes

Element

0..1

Contains details of the taxes applied.

Tax

Element

1

Contains specific tax information.

@Type

String

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.

TPA_Extensions

Element

0..1

Indicates if the reservation is using the Net amount or Gross amount. Required if the booking channel uses the Commission Percentage feature.

Total

Element

1

Contains the includesCommission information.

@includesCommission

Boolean

1

false uses Net Amount.

true uses Gross Amount.

When includesCommission is set, all RoomRate and RoomStay level totals will be considered as Net or Gross amounts based on this value.

Guarantee

Virtual Credit Cards (VCC): If a booking channel supports Virtual Credit Cards (VCC), it is essential to ensure that VCC details are updated in accordance with any reservation modifications or cancellations. This is critical for maintaining accurate payment information and ensuring that charges align with the updated booking details, especially in cases where reservations are amended or canceled after the initial transaction.

In the event of a cancellation, the TPA_Extensions section must either be removed entirely, or the VCCCurrentBalance should be set to 0.00. Alternatively, the VCCCurrentBalance can be updated to reflect the amount permitted by the cancellation policy, indicating how much the hotel can still charge from the VCC for the canceled reservation.

<Guarantee>
	<GuaranteesAccepted>
		<GuaranteeAccepted>
			<PaymentCard CardType="1" CardCode="MC" CardNumber="4321432143214321" SeriesCode="123" ExpireDate="1234">
				<CardHolderName>John Smith</CardHolderName>
				<TPA_Extensions>
					<VirtualCreditCard isVCC="true" VCCActivationDate="2024-09-05" VCCCurrencyCode="EUR" VCCCurrentBalance="620.00" VCCDeactivationDate="2024-10-08"/>
				</TPA_Extensions>
			</PaymentCard>
		</GuaranteeAccepted>
	</GuaranteesAccepted>
</Guarantee>
Element / @Attribute
Type
M
Description

Guarantee

Element

0..1

Guarantee provided with the reservation. Used if no deposit is paid for the reservation.

GuaranteesAccepted

Element

1

Contains the details of accepted guarantees.

GuaranteeAccepted

Element

1

Specific details of the accepted guarantee.

PaymentCard

Element

1

Details of the payment card used for the guarantee.

@CardType

String

0..1

Must be set to 1 (Credit Card).

@CardCode

String

1

2-character code of the credit card issuer. Refer to Payment Card Provider Codes.

@CardNumber

String

0..1

Actual credit card number. Required if ExpireDate or ThreeDomainSecurity is provided.

@SeriesCode

String

0..1

Security number of the card. Only passed through if the booking channel uses Reservation Notification Email. Not stored for PCI compliance.

@ExpireDate

String

0..1

Expiry date of the credit card (format MMyy). Required if CardNumber is provided.

CardHolderName

Element

0..1

Name of the cardholder.

ThreeDomainSecurity

Element

0..1

Contains 3DS (Three Domain Security) transaction details.

Results

Element

1

Transaction results.

@ThreeDSVersion

String

1

3DS version used for authentication.

@XID

String

0..1

Transaction identifier resulting from authentication processing.

When ThreeDSVersion = 1.x.x the transaction identifier MUST be provided in the @XID attribute.

@DSTransactionID

String

0..1

Unique transaction identifier assigned by the Directory Server (DS) to identify a single transaction.

When ThreeDSVersion = 2.x.x the transaction identifier MUST be provided in the @DSTransactionID attribute.

@CAVV

String

1

Cardholder Authentication Verification Value (CAVV); Authentication Verification Value (AVV); Universal Cardholder Authentication Field (UCAF)

@ECI

String

1

@PAResStatus

String

0..1

@SignatureVerification

String

0..1

@Enrolled

String

0..1

TPA_Extensions

Element

0..1

Additional elements for the transaction.

VirtualCreditCard

Element

1

Denotes that the payment card is a virtual credit card.

@isVCC

Boolean

1

Must be set to true.

@VCCActivationDate

Date

0..1

Date from when the card can be charged. Must use YYYY-MM-DD format.

@VCCDeactivationDate

Date

0..1

Date from when the card is no longer chargeable. Must use YYYY-MM-DD format.

@VCCCurrentBalance

Decimal

0..1

Total amount that can be charged to the card. If the reservation is modified or canceled, an updated balance should be sent indicating the new total amount that can be charged to the card. If the amount changes to 0 as a result of cancellation, the cancellation should be sent with a 0 balance.

@VCCCurrencyCode

String

0..1

Must be included if there is @VCCCurrentBalance. Use ISO 4217 currency codes.

DepositPayments

Virtual Credit Cards (VCC): If a booking channel supports Virtual Credit Cards (VCC), it is essential to ensure that VCC details are updated in accordance with any reservation modifications or cancellations. This is critical for maintaining accurate payment information and ensuring that charges align with the updated booking details, especially in cases where reservations are amended or canceled after the initial transaction.

In the event of a cancellation, the TPA_Extensions section must either be removed entirely, or the VCCCurrentBalance should be set to 0.00. Alternatively, the VCCCurrentBalance can be updated to reflect the amount permitted by the cancellation policy, indicating how much the hotel can still charge from the VCC for the canceled reservation.

<DepositPayments>
	<GuaranteePayment>
		<AcceptedPayments>
			<AcceptedPayment>
				<PaymentCard CardType="1" CardCode="MC" CardNumber="4321432143214321" SeriesCode="123" ExpireDate="1234">
					<CardHolderName>John Smith</CardHolderName>
					<TPA_Extensions>
						<VirtualCreditCard isVCC="true" VCCActivationDate="2021-08-23" VCCDeactivationDate="2021-09-19" VCCCurrentBalance="100.00" VCCCurrencyCode="EUR"/>
					</TPA_Extensions>
				</PaymentCard>
			</AcceptedPayment>
		</AcceptedPayments>
		<AmountPercent Amount="90.00" CurrencyCode="EUR"/>
	</GuaranteePayment>
</DepositPayments>
Element / @Attribute
Type
M
Description

DepositPayments

Element

0..1

Deposit provided with the reservation.

GuaranteePayment

Element

1

Contains details of the payment guarantee for the reservation.

AcceptedPayments

Element

0..1

Contains the accepted payment methods.

AcceptedPayment

Element

1

Specific payment method accepted.

PaymentCard

Element

1

Details of the payment card used for the guarantee.

@CardType

String

0..1

Must be set to 1 (Credit Card).

@CardCode

String

1

2-character code of the credit card issuer. Refer to Payment Card Provider Codes.

@CardNumber

String

0..1

Actual credit card number.

@SeriesCode

String

0..1

Security number of the card. Only passed through if the booking channel uses Reservation Notification Email. Not stored for PCI compliance.

@ExpireDate

String

0..1

Expiry date of the credit card (format MMyy).

CardHolderName

Element

0..1

Name of the cardholder.

ThreeDomainSecurity

Element

0..1

Contains 3DS (Three Domain Security) transaction details.

Results

Element

1

Transaction results.

@ThreeDSVersion

Element

1

3DS version used for authentication.

@XID

String

0..1

Transaction identifier resulting from authentication processing.

When ThreeDSVersion = 1.x.x the transaction identifier MUST be provided in the @XID attribute.

@DSTransactionID

String

0..1

Unique transaction identifier assigned by the Directory Server (DS) to identify a single transaction.

When ThreeDSVersion = 2.x.x the transaction identifier MUST be provided in the @DSTransactionID attribute.

@CAVV

String

0..1

Cardholder Authentication Verification Value (CAVV); Authentication Verification Value (AVV); Universal Cardholder Authentication Field (UCAF)

@ECI

String

1

@PAResStatus

String

0..1

@SignatureVerification

String

0..1

@Enrolled

String

0..1

TPA_Extensions

Element

0..1

Additional elements for the transaction.

VirtualCreditCard

Element

1

Denotes that the payment card is a virtual credit card.

@isVCC

Boolean

1

Must be set to true.

@VCCActivationDate

Date

0..1

Date from when the card can be charged.

@VCCDeactivationDate

Date

0..1

Date from when the card is no longer chargeable.

@VCCCurrentBalance

Decimal

0..1

Total amount that can be charged to the card. If the reservation is modified or canceled, an updated balance should be sent indicating the new total amount that can be charged to the card. If the amount changes to 0 as a result of cancellation, the cancellation should be sent with a 0 balance.

@VCCCurrencyCode

String

0..1

Must be included if there is @VCCCurrentBalance. Use ISO 4217 currency codes.

AmountPercent

Element

1

Mandatory when something is passed in the DepositPayment element.

@Amount

Decimal

1

Amount charged as deposit.

@CurrencyCode

String

1

Use ISO 4217 currency codes.

Customer / Company / TravelAgent

<Profiles>
	<ProfileInfo>
		<Profile ProfileType="1">
			<Customer>
				<PersonName>
					<NamePrefix>Mr</NamePrefix>
					<GivenName>John</GivenName>
					<Surname>Smith</Surname>
				</PersonName>
				<Telephone PhoneNumber="0266564100"/>
				<Email>[email protected]</Email>
				<Address>
					<AddressLine>1 George St</AddressLine>
					<AddressLine>CBD</AddressLine>
					<CityName>Sydney</CityName>
					<PostalCode>2000</PostalCode>
					<StateProv>NSW</StateProv>
					<CountryName>Australia</CountryName>
				</Address>
			</Customer>
		</Profile>
	</ProfileInfo>
	<!-- Additional ProfileInfo elements -->
</Profiles>
Element / @Attribute
Type
M
Description

Profiles

Element

1

Contains the profiles related to the reservation, including the customer, corporate and/or travel agent.

ProfileInfo

Element

1..3

Contains information about the profile type.

Profile

Element

1

Contains profile details, such as customer, company, or travel agent information.

@ProfileType

String

1

Defines the type of profile:

1 Customer (mandatory)

3 Corporate (optional)

4 Travel Agent (optional)

UniqueID

Element

0..1

Only used on ProfileType 3 (Corporate) and4 (Travel Agent) to identify the unique ID of the agent.

@ID

String

1

Identification number, such as a corporate ID or travel agent ID (e.g., IATA code).

Customer

Element

1

Used for ProfileType 1 to contain customer details.

PersonName

Element

1

Contains the name information for the customer.

NamePrefix

Element

0..1

Title of the customer (e.g., Mr., Mrs., Dr.).

GivenName

Element

1

First name of the customer.

Surname

Element

1

Last name of the customer.

CompanyInfo

Element

1

Used for ProfileType 3 (Corporate) and ProfileType 4 (Travel Agent) to contain company information.

CompanyName

Element

1

Name of the company.

Telephone

Element

0..1

Contains telephone information related to the profile.

TelephoneInfo

Element

0..1

Only used for ProfileType 3 (Corporate) and ProfileType 4 (Travel Agent)

@PhoneNumber

String

1

Contains the actual number (maximum 32 characters).

Email

Element

0..1

Contact email address related to the profile.

Address

Element

0..1

Address information for the profile.

AddressInfo

Element

0..1

Only used for ProfileType 3 (Corporate) and ProfileType 4 (Travel Agent)

AddressLine

Element

0..2

One or more address lines for the profile.

CityName

Element

0..1

City of the profile's residence.

PostalCode

Element

0..1

Postal code of the profile.

StateProv

Element

0..1

State or province of the profile's residence.

CountryName

Element

0..1

Country of the profile's residence (maximum 64 characters).

2. Confirmation Response

Reservation Confirmation and Response Handling: SiteMinder does not have the authority to allow or deny reservations. The OTA_HotelResNotifRS response simply confirms whether SiteMinder has successfully received the reservation delivery message or notification request, indicating Success or Error. It is important to note that SiteMinder only acknowledges receipt of the reservation message and does not influence the booking process on your end.

<OTA_HotelResNotifRS
	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">
	<Success/>
	<HotelReservations>
		<HotelReservation>
			<UniqueID Type="14" ID="123456789"/>
			<ResGlobalInfo>
				<HotelReservationIDs>
					<HotelReservationID ResID_Type="14" ResID_Value="ABC-123456789"/>
				</HotelReservationIDs>
			</ResGlobalInfo>
		</HotelReservation>
	</HotelReservations>
</OTA_HotelResNotifRS>
Element / @Attribute
Type
M
Description

OTA_HotelResNotifRS

Element

1

Root element for the response.

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

@TimeStamp

DateTime

1

Time when the response was generated.

@Version

String

1

Specifies the API version. Will be set to 1.0.

Success

Element

0..1

Indicates successful processing of the request.

HotelReservations

Element

1

Contains details of the reservation made.

HotelReservation

Element

1

Individual hotel reservation information.

UniqueID

Element

1

Unique identifier for the reservation.

@Type

String

1

Will be set to 14 (Reservation).

@ID

String

1

Actual confirmation number.

ResGlobalInfo

Element

1

Contains global information about the reservation.

HotelReservationIDs

Element

1

Contains the HotelReservationID.

HotelReservationID

Element

1

Reference number/string or PNR.

@ResID_Type

String

1

Will be set to 14 (Travel Agent PNR).

@ResID_Value

String

1

The identifier of the reservation created by SiteMinder.

Errors

Element

0..1

Indicates an error occurred during the processing of the request.

Error

Element

1..n

Single error information containing free text.

@Type

Integer

1

Type of error. Refer to Error Warning Types (EWT).

@Code

Integer

0..1

Code representing the error. Refer to Error Codes (ERR).

Reservation XML Samples

Maximum Content XML

This example provides a general XML for a reservation that includes a service at the RoomStay level, along with a guarantee using a virtual credit card. This example is designed to demonstrate the structure and key elements for such a booking scenario. Variations of this reservation can be created based on specific requirements, as long as they adhere to the specifications.

The <!-- Additional ... elements --> comments within the XML indicate areas where further elements may be added if needed for other configurations.

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><wsse:Security SOAP-ENV:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsse:UsernameToken><wsse:Username>USERNAME</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">PASSWORD</wsse:Password></wsse:UsernameToken></wsse:Security></SOAP-ENV:Header><SOAP-ENV:Body><OTA_HotelResNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" ResStatus="Commit" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0"><POS><Source><RequestorID Type="22" ID="ABC"/><BookingChannel Primary="true"><CompanyName Code="ABC">Channel Name</CompanyName></BookingChannel></Source><Source><BookingChannel Primary="false"><CompanyName Code="CBA">Affiliated Channel</CompanyName></BookingChannel></Source></POS><HotelReservations><HotelReservation CreateDateTime="2024-07-06T15:27:41+00:00" LastModifyDateTime="2024-07-06T15:27:41+00:00"><UniqueID Type="14" ID="123456789"/><RoomStays><RoomStay PromotionCode="AUTUNM2024"><RoomTypes><RoomType RoomTypeCode="TPL"><RoomDescription Name="Triple Room">Double bed and single bed.</RoomDescription></RoomType></RoomTypes><RatePlans><RatePlan RatePlanCode="BAR"><RatePlanDescription>Best Available Rate.</RatePlanDescription><Commission><CommissionPayableAmount Amount="60.00" CurrencyCode="EUR"/></Commission><MealsIncluded MealPlanCode="14"/><!-- Additional MealsIncluded elements --></RatePlan></RatePlans><RoomRates><RoomRate RoomTypeCode="TPL" RatePlanCode="BAR" NumberOfUnits="1"><Rates><Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2024-10-05" ExpireDate="2024-10-08"><Base AmountBeforeTax="558.00" AmountAfterTax="620.00" CurrencyCode="EUR"><Taxes><Tax Type="inclusive" Code="35" Amount="62.00" CurrencyCode="EUR"/><!-- Additional Tax elements --></Taxes></Base><Total AmountBeforeTax="558.00" AmountAfterTax="620.00" CurrencyCode="EUR"><Taxes><Tax Type="inclusive" Code="35" Amount="62.00" CurrencyCode="EUR"/><!-- Additional Tax elements --></Taxes></Total></Rate></Rates><!-- Additional Rates elements --></RoomRate></RoomRates><GuestCounts><GuestCount AgeQualifyingCode="10" Count="2"/><GuestCount AgeQualifyingCode="8" Age="7" Count="1"/><GuestCount AgeQualifyingCode="8" Age="10" Count="1"/><GuestCount AgeQualifyingCode="7" Count="1"/><!-- Additional GuestCount elements --></GuestCounts><TimeSpan Start="2024-10-05" End="2024-10-08"/><Total AmountBeforeTax="565.50" AmountAfterTax="628.25" CurrencyCode="EUR"><Taxes><Tax Type="inclusive" Code="35" Amount="62.75" CurrencyCode="EUR"/><!-- Additional Tax elements --></Taxes></Total><BasicPropertyInfo HotelCode="HOTELCODE" HotelName="The Hotel Name"/><ResGuestRPHs><ResGuestRPH RPH="1"/><!-- Additional ResGuestRPH elements --></ResGuestRPHs><ServiceRPHs><ServiceRPH RPH="1"/><!-- Additional ServiceRPH elements --></ServiceRPHs><Comments><Comment><Text>Please, add some extra towels</Text></Comment></Comments><SpecialRequests><SpecialRequest Name="Extra Bed"><Text>Yes</Text></SpecialRequest></SpecialRequests><Services><Service ServiceInventoryCode="EXTRA_BED" Inclusive="true" ServiceRPH="1" Quantity="1" ID="12346"><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="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></Total><RateDescription><Text>Extra person charge EUR 2.50 per day for cot</Text></RateDescription></Price><ServiceDetails><TimeSpan Start="2024-10-05" End="2024-10-08"/></ServiceDetails></Service><!-- Additional Service elements --></Services></RoomStay><!-- Additional RoomStay elements --></RoomStays><ResGuests><ResGuest ResGuestRPH="1" ArrivalTime="14:00:00" PrimaryIndicator="1"><Profiles><ProfileInfo><Profile ProfileType="1"><Customer><PersonName><NamePrefix>Mr</NamePrefix><GivenName>John</GivenName><Surname>Smith</Surname></PersonName><Telephone PhoneNumber="+61123456789"/><Email>[email protected]</Email><Address><AddressLine>200 George St</AddressLine><AddressLine>Level 3</AddressLine><CityName>Sydney</CityName><PostalCode>2000</PostalCode><StateProv>NSW</StateProv><CountryName>Australia</CountryName></Address><CustLoyalty ProgramID="LoyaltyProgramName" MembershipID="123456789" ExpireDate="2020-12-31"/><Document DocID="987654321P" DocType="5" DocHolderNationality="AU" BirthDate="1996-10-05" Gender="Male" BirthCountry="AU" BirthPlace="AU" EffectiveDate="2015-10-05" ExpireDate="2025-10-05" DocIssueAuthority="DAFT" DocIssueLocation="AU" DocIssueStateProv="AU" DocIssueCountry="AU"><DocHolderName>John Smith</DocHolderName></Document></Customer></Profile></ProfileInfo></Profiles></ResGuest><!-- Additional ResGuest elements --></ResGuests><ArrivalTransport><TransportInfo Type="Air" ID="QF123" Time="2024-10-05T13:00:00"/></ArrivalTransport><DepartureTransport><TransportInfo Type="Air" ID="QF321" Time="2024-10-08T17:00:00"/></DepartureTransport><ResGlobalInfo><HotelReservationIDs><HotelReservationID ResID_Type="14" ResID_Value="123456789"/></HotelReservationIDs><Comments><Comment><Text>High floor if possible</Text></Comment><!-- Additional Comment elements --></Comments><Total CurrencyCode="EUR" AmountBeforeTax="565.50" AmountAfterTax="628.25"><Taxes><Tax Type="inclusive" Code="35" Amount="62.75" CurrencyCode="EUR"/></Taxes><TPA_Extensions><Total includesCommission="true"/></TPA_Extensions></Total><Guarantee><GuaranteesAccepted><GuaranteeAccepted><PaymentCard CardType="1" CardCode="MC" CardNumber="4321432143214321" SeriesCode="123" ExpireDate="1234"><CardHolderName>John Smith</CardHolderName><TPA_Extensions><VirtualCreditCard isVCC="true" VCCActivationDate="2024-09-05" VCCCurrencyCode="EUR" VCCCurrentBalance="628.25" VCCDeactivationDate="2024-10-08"/></TPA_Extensions></PaymentCard></GuaranteeAccepted></GuaranteesAccepted></Guarantee><Profiles><ProfileInfo><Profile ProfileType="1"><Customer><PersonName><NamePrefix>Mr</NamePrefix><GivenName>John</GivenName><Surname>Smith</Surname></PersonName><Telephone PhoneNumber="0266564100"/><Email>[email protected]</Email><Address><AddressLine>1 George St</AddressLine><AddressLine>CBD</AddressLine><CityName>Sydney</CityName><PostalCode>2000</PostalCode><StateProv>NSW</StateProv><CountryName>Australia</CountryName></Address></Customer></Profile></ProfileInfo><ProfileInfo><Profile ProfileType="3"><CompanyInfo ID="CORP"><CompanyName>COMPANY</CompanyName><TelephoneInfo PhoneNumber="0266564101"/><Email>[email protected]</Email><AddressInfo><AddressLine>3 George St</AddressLine><AddressLine>CBD</AddressLine><CityName>Sydney</CityName><PostalCode>2000</PostalCode><StateProv>NSW</StateProv><CountryName>Australia</CountryName></AddressInfo></CompanyInfo></Profile></ProfileInfo><ProfileInfo><Profile ProfileType="4"><UniqueID ID="56789"/><CompanyInfo><CompanyName>TRAVEL AGENT LTD</CompanyName><TelephoneInfo PhoneNumber="0266564100"/><Email>[email protected]</Email><AddressInfo><AddressLine>4 George St</AddressLine><AddressLine>CBD</AddressLine><CityName>Sydney</CityName><PostalCode>2000</PostalCode><StateProv>NSW</StateProv><CountryName>Australia</CountryName></AddressInfo></CompanyInfo></Profile></ProfileInfo></Profiles></ResGlobalInfo></HotelReservation></HotelReservations></OTA_HotelResNotifRQ></SOAP-ENV:Body></SOAP-ENV:Envelope>

Common Questions

How can we avoid overbooking?

While overbooking is rare, it can occur when the last available room is booked simultaneously across multiple channels.

SiteConnect Behaviour:

  • Accepts all valid reservations received

  • Sends all bookings to the property

  • Does not reject reservations based on availability

Resolution:

  • The property typically works directly with booking channels to resolve overbookings

  • Hotels may honor all reservations and arrange alternative accommodation if needed

  • Your channel's policy determines how overbookings are handled with guests

Prevention:

  • Ensure fast response times to availability updates

  • Process availability changes immediately upon receiving them

  • Implement real-time inventory management in your system

After sending a cancelled reservation, why didn't availability increase?

This is standard SiteMinder functionality. Cancelled reservations (or modifications that reduce room bookings) do not automatically increase availability.

Standard Behavior:

  • Availability is hotel-controlled or PMS-controlled

  • Hotels must manually update availability after cancellations

  • SiteMinder processes the cancellation but doesn't adjust inventory automatically

Auto-Replenishment Option: If the hotel has enabled Auto-Replenishment in SiteMinder settings:

  • System automatically increases availability for cancelled rooms

  • You will receive updated availability via OTA_HotelAvailNotifRQ

  • This setting is property-specific and not enabled by default

What happens if a hotel unmaps a room rate or disables the channel, and a reservation is received?

SiteConnect will still accept the reservation, but availability handling differs:

Unmapped Room Rate:

  • Reservation is accepted and stored

  • Availability is NOT adjusted (booking can't be assigned to a room type)

  • Hotel sees the reservation but must manually manage it

Disabled Channel:

  • Reservation is accepted and stored

  • Availability is adjusted in SiteMinder

  • Updated availability is NOT sent back to your channel (channel is disabled)

Best Practice:

  • Validate room rate mappings exist before sending reservations

  • Monitor for unmapped room rate errors in your integration logs

Is it possible to get the status or confirmation of a reservation after sending it?

No, SiteConnect does not provide reservation status queries or confirmations.

Reservation Flow:

  1. Booking channel sends OTA_HotelResNotifRQ

  2. SiteMinder responds with OTA_HotelResNotifRS (Success or Error)

  3. Success means: Reservation received and accepted

  4. After acceptance: Reservation is confirmed and delivered to PMS. Also, availability is updated and distributed to all channels

No Status Changes:

  • Once accepted, reservations are considered confirmed and valid

  • No "pending" or "processing" status exists

  • No query endpoint to check reservation status

Error Handling: If you receive an Error response, the reservation was not accepted. Fix the issue and resend the complete reservation.

In what instances can a reservation fail to be received by SiteConnect?

Reservations can fail for the following reasons:

XML/Format Issues:

  • Incorrect XML structure (invalid elements or attributes)

  • Missing mandatory fields

  • Invalid data types or formats

Authentication Issues:

  • Invalid username or password

  • Missing or malformed Security Header

Hotel Configuration:

  • HotelCode not found in SiteMinder database

  • Hotel not configured for your channel

Important: SiteConnect will still accept reservations even if:

  • Hotel lacks availability (no availability validation)

  • Room rates are not mapped in SiteMinder Platform

  • Rate plans don't match

Error Response: Failed reservations return OTA_HotelResNotifRS with <Errors> element containing error type and description.

What data should I include in modified or cancelled reservation messages?

Include all data from the original reservation plus the modification/cancellation details.

Required for Modifications (ResStatus="Modify"):

  • Complete original reservation data

  • Updated values (dates, rates, guests, etc.)

  • CreateDateTime (original booking time)

  • LastModifyDateTime (when modification occurred)

Required for Cancellations (ResStatus="Cancel"):

  • Complete original reservation data

  • CreateDateTime (original booking time)

  • LastModifyDateTime (when cancellation occurred)

  • Updated VCC balance (set to 0.00 or cancellation policy amount)

Why Complete Data Required:

  • SiteMinder rewrites the entire reservation on modifications/cancellations

  • Missing data causes hotels to lose important information

  • Data flows to connected PMS/CRS systems

  • Incomplete data may cause PMS integration failures

Are credit card details visible to the hotel?

Yes, hotels can view credit card details in SiteMinder Platform, except CVV/CVC.

Visible to Hotel:

  • Card number

  • Cardholder name

  • Expiry date

  • Card type/code

  • VCC details (if applicable)

Not Visible in Platform:

  • CVV/CVC (Card Security Code)

CVV/CVC Delivery:

  • Only available in Reservation Notification Email (if enabled for your channel)

  • Never stored in SiteMinder database (PCI compliance)

  • Never passed to PMS systems

PMS Integration: If the property has a PMS connected to SiteMinder that supports credit card details, the same information (excluding CVV/CVC) is forwarded to the PMS.

Is it okay to make a booking without payment details?

Yes, payment details are optional. Both Guarantee and DepositPayments sections can be omitted.

Use Cases for No Payment Details:

  • Pay-at-property bookings

  • Invoiced reservations

  • Alternative payment methods not supported in API

  • Free stays or complimentary bookings

When to Include Payment Details:

  • Credit card guarantee provided

  • Deposit collected

  • Virtual Credit Card (VCC) issued

  • Payment already processed

SiteMinder accepts reservations regardless of payment information presence.

What is the advantage of sending VCC instead of standard credit cards?

Virtual Credit Cards (VCC) provide significant advantages for reservation processing:

Security and Accuracy:

  • Reduced errors: VCC details clearly displayed in SiteMinder Platform

  • Direct PMS reading: PMS systems can read VCC information automatically

  • Minimized human error: Less manual card entry required

  • Controlled usage: VCC limits and activation/deactivation dates prevent misuse

Payment Processing:

  • SiteMinder Pay integration: Simplifies transactions for hotels using SiteMinder Pay

  • Clear balance tracking: VCCCurrentBalance shows exact chargeable amount

  • Modification handling: Easy to update balance for changes/cancellations

Compliance:

  • PSD2 exemption: VCCs excluded from Strong Customer Authentication requirements

  • Faster processing: No additional authentication steps needed

Recommendation: VCC is optional but highly recommended when available.

Can the VCC CurrencyCode differ from the Reservation Total CurrencyCode?

Yes, the VCCCurrencyCode can differ from the reservation's CurrencyCode.

Common Scenario:

  • Reservation made in one currency (e.g., USD)

  • Hotel collects in different currency (e.g., NZD) via VCC

  • Both currencies clearly specified in respective sections

Example:

<Total CurrencyCode="USD" AmountAfterTax="500.00"/>
<!-- ... -->
<VirtualCreditCard VCCCurrencyCode="NZD" VCCCurrentBalance="750.00"/>

Handling:

  • Each currency is valid in its context

  • Currency conversion handled outside API

  • Hotels see both currencies in their platform

What's the difference between Guests and Customers in reservations?

Guests (ResGuest):

  • People staying in the rooms

  • Linked to specific RoomStays via ResGuestRPH

  • Can have multiple guests per reservation

  • Contains: Name, contact details, arrival time, loyalty info, ID documents

Customer (Profile ProfileType="1" in ResGlobalInfo/Profiles):

  • Person who made the booking or is the primary contact

  • Only one customer per reservation

  • May or may not be staying at the property

  • Contains: Name, contact details, address

Relationship:

  • Guest and Customer can be the same person

  • Guest and Customer can be different people (e.g., assistant booking for executive)

  • Customer profile is mandatory, Guest profiles are recommended

Best Practice: Provide both complete Customer information and individual Guest details when available for better hotel service and PMS integration.

Help Centre

Last updated

Was this helpful?