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.
Production Endpoint Update: SiteMinder now uses a single global endpoint for all reservation delivery, replacing the previous regional endpoint model (APAC and EMEA/AMERS). If your integration currently uses region-specific endpoints, please contact the Partner Integrations team to migrate to the global endpoint for simplified routing and improved reliability.
Integration Requirements
Understand the essential requirements for API integration, including connectivity, authentication, message formats, and security protocols.
Web Service Endpoint
SiteMinder will provide a single global endpoint for all hotels for the booking channel to push
OTA_HotelResNotifRQmessages and receiveOTA_HotelResNotifRQresponses indicating success or failure.Test Environment Endpoint: https://tpi-cm-siteconn.preprod.siteminderlabs.com/reservation-gateway/services
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.
Reservation Message (booking channel to SiteMinder):
OTA_HotelResNotifRQDelivers a single reservation message (new booking, modification, or cancellation).Confirmation Response (booking channel to PMS):
OTA_HotelResNotifRSConfirms successful receipt or reports processing failure.
SiteMinder will send OTA_HotelAvailNotifRQ to the booking channel with the updated availability after the reservations, modifications, and cancellations are processed on the SiteMinder Platform. Refer to the Availability and Restrictions.
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.
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>Responses must be returned in a SOAP envelope with an empty SOAP Header.
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<OTA_HotelResNotifRS
xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
<Success/>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</OTA_HotelResNotifRS>
</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.
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><OTA_HotelResNotifRQ
xmlns="http://www.opentravel.org/OTA/2003/05" ResStatus="Modify" 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><OTA_HotelResNotifRQ
xmlns="http://www.opentravel.org/OTA/2003/05" ResStatus="Cancel" 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>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><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>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.
UniqueID ID must contain only alphanumeric characters (A-Z, a-z, 0-9). Special characters must be avoided.
<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>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>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>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>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.
MealsIncluded
Element
0..n
Used to identify the types of meals included with a rate plan.
RoomRates
AmountBeforeTax vs AmountAfterTax:
Use
AmountAfterTaxif your rates include taxesUse
AmountBeforeTaxif your rates exclude taxesYou 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>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
<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"/>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</Rate>
</Rates>
</RoomRate>
</RoomRates>
<TimeSpan Start="2024-10-05" End="2024-10-08"/>
<Total AmountBeforeTax="558.00" AmountAfterTax="620.00" CurrencyCode="EUR">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 / €70.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
<RoomRates>
<RoomRate RoomTypeCode="TPL" RatePlanCode="BAR" NumberOfUnits="1">
<Rates>
<Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2024-10-05" ExpireDate="2024-10-06">
<Base AmountBeforeTax="153.00" AmountAfterTax="170.00" CurrencyCode="EUR"/>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</Rate>
<Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2024-10-06" ExpireDate="2024-10-07">
<Base AmountBeforeTax="180.00" AmountAfterTax="200.00" CurrencyCode="EUR"/>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</Rate>
<Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2024-10-07" ExpireDate="2024-10-08">
<Base AmountBeforeTax="225.00" AmountAfterTax="250.00" CurrencyCode="EUR"/>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</Rate>
</Rates>
</RoomRate>
</RoomRates>
<TimeSpan Start="2024-10-05" End="2024-10-08"/>
<Total AmountBeforeTax="558.00" AmountAfterTax="620.00" CurrencyCode="EUR">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
<RoomRates>
<RoomRate RoomTypeCode="TPL" RatePlanCode="BAR" NumberOfUnits="1">
<Rates>
<Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2024-10-05" ExpireDate="2024-10-07">
<Base AmountBeforeTax="360.00" AmountAfterTax="400.00" CurrencyCode="EUR"/>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</Rate>
<Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2024-10-07" ExpireDate="2024-10-08">
<Base AmountBeforeTax="198.00" AmountAfterTax="220.00" CurrencyCode="EUR"/>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</Rate>
</Rates>
</RoomRate>
</RoomRates>
<TimeSpan Start="2024-10-05" End="2024-10-08"/>
<Total AmountBeforeTax="558.00" AmountAfterTax="620.00" CurrencyCode="EUR">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.
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.
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.
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
<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><GuestCounts>
<GuestCount AgeQualifyingCode="10" Count="1"/>
<!-- Only GuestCount with Count greater than or equal to 1 -->
</GuestCounts>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"/>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>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"/>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>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>ResGuestRPHs
Element
0..1
Container for the ResGuestRPH elements.
ResGuestRPH
Element
1..n
Container for the RPH attribute.
Comments
<Comments>
<Comment>
<Text>See the room stay comments here</Text>
</Comment>
</Comments>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>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>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.
<RoomStays>
<RoomStay>
<RoomTypes>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</RoomTypes>
<RatePlans>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</RatePlans>
<RoomRates>
<RoomRate RoomTypeCode="TPL" RatePlanCode="BAR" NumberOfUnits="1">
<Rates>
<Base AmountBeforeTax="450.00" AmountAfterTax="495.00" CurrencyCode="EUR"/>
<Total AmountBeforeTax="480.00" AmountAfterTax="528.00" CurrencyCode="EUR"/>
</Rates>
<ServiceRPHs>
<ServiceRPH RPH="1"/>
</ServiceRPHs>
</RoomRate>
</RoomRates>
<!-- ... other elements and attributes have been omitted for brevity ... -->
<Total AmountBeforeTax="480.00" AmountAfterTax="528.00" CurrencyCode="EUR"></Total>
</RoomStay>
</RoomStays>
<Services>
<Service ServiceInventoryCode="MEAL" Inclusive="true" ServiceRPH="1" Quantity="1" ID="12346">
<Price>
<Base AmountBeforeTax="10.00" AmountAfterTax="11.00" CurrencyCode="EUR"/>
<Total AmountBeforeTax="30.00" AmountAfterTax="33.00" CurrencyCode="EUR"/>
<RateDescription>
<Text>Breakfast Buffet per person per night</Text>
</RateDescription>
</Price>
<ServiceDetails>
<TimeSpan Start="2025-10-05" End="2025-10-08"/>
</ServiceDetails>
</Service>
</Services>
<ResGlobalInfo>
<!-- ... other elements and attributes have been omitted for brevity ... -->
<Total CurrencyCode="EUR" AmountBeforeTax="480.00" AmountAfterTax="528.00"></Total>
</ResGlobalInfo>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.
<RoomStays>
<RoomStay>
<RoomTypes>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</RoomTypes>
<RatePlans>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</RatePlans>
<RoomRates>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</RoomRates>
<ServiceRPHs>
<ServiceRPH RPH="1"/>
</ServiceRPHs>
<!-- ... other elements and attributes have been omitted for brevity ... -->
<Total AmountBeforeTax="457.50" AmountAfterTax="503.25" CurrencyCode="EUR"></Total>
</RoomStay>
</RoomStays>
<Services>
<Service ServiceInventoryCode="EXTRA_BED" Inclusive="true" ServiceRPH="1" Quantity="1" ID="12346">
<Price>
<Base AmountBeforeTax="2.50" AmountAfterTax="2.75" CurrencyCode="EUR"/>
<Total AmountBeforeTax="7.50" AmountAfterTax="8.25" CurrencyCode="EUR"/>
<RateDescription>
<Text>Extra person charge EUR 2.50 per day for cot</Text>
</RateDescription>
</Price>
<ServiceDetails>
<TimeSpan Start="2025-10-05" End="2025-10-08"/>
</ServiceDetails>
</Service>
</Services>
<ResGlobalInfo>
<!-- ... other elements and attributes have been omitted for brevity ... -->
<Total CurrencyCode="EUR" AmountBeforeTax="457.50" AmountAfterTax="503.25""></Total>
</ResGlobalInfo>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.
<RoomStays>
<RoomStay>
<RoomTypes>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</RoomTypes>
<RatePlans>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</RatePlans>
<RoomRates>
<RoomRate RoomTypeCode="TPL" RatePlanCode="BAR" NumberOfUnits="1">
<Rates>
<!-- ... other elements and attributes have been omitted for brevity ... -->
<Total AmountBeforeTax="450.00" AmountAfterTax="495.00" CurrencyCode="EUR"/>
</Rates>
</RoomRate>
</RoomRates>
<!-- ... other elements and attributes have been omitted for brevity ... -->
<Total AmountBeforeTax="450.00" AmountAfterTax="495.00" CurrencyCode="EUR"></Total>
</RoomStay>
</RoomStays>
<Services>
<Service ServiceInventoryCode="OTHER" Inclusive="true" Quantity="1" ID="12346">
<Price>
<Base AmountBeforeTax="10.00" AmountAfterTax="11.00" CurrencyCode="EUR"/>
<Total AmountBeforeTax="30.00" AmountAfterTax="33.00" CurrencyCode="EUR"/>
<RateDescription>
<Text>Parking for 1 vehicle per night</Text>
</RateDescription>
</Price>
<ServiceDetails>
<TimeSpan Start="2025-10-05" End="2025-10-08"/>
</ServiceDetails>
</Service>
</Services>
<ResGlobalInfo>
<!-- ... other elements and attributes have been omitted for brevity ... -->
<Total CurrencyCode="EUR" AmountBeforeTax="480.00" AmountAfterTax="528.00"></Total>
</ResGlobalInfo>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:
<RoomStays>
<RoomStay>
<RoomTypes>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</RoomTypes>
<RatePlans>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</RatePlans>
<RoomRates>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</RoomRates>
<GuestCounts>
<GuestCount AgeQualifyingCode="10" Count="2"/>
</GuestCounts>
<TimeSpan Start="2025-03-12" End="2025-03-16"/>
<Total AmountAfterTax="520.00" CurrencyCode="AUD"></Total>
<BasicPropertyInfo HotelCode="HTL1" HotelName="The Beach Side Hotel"/>
<ServiceRPHs>
<ServiceRPH RPH="1"/>
</ServiceRPHs>
<ResGuestRPHs>
<ResGuestRPH RPH="1"/>
</ResGuestRPHs>
</RoomStay>
</RoomStays>
<Services>
<Service Inclusive="true" ServiceInventoryCode="OTHER" Quantity="2" ServiceRPH="1">
<Price>
<Total AmountAfterTax="20.00" CurrencyCode="AUD"/>
<RateDescription>
<Text>Breakfast</Text>
</RateDescription>
</Price>
<ServiceDetails>
<TimeSpan Start="2025-03-12" End="2025-03-13"/>
</ServiceDetails>
</Service>
</Services>
<ResGuests>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</ResGuest>
</ResGuests>
<ResGlobalInfo>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</ResGlobalInfo>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.
<RoomStays>
<RoomStay>
<RoomTypes>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</RoomTypes>
<RatePlans>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</RatePlans>
<RoomRates>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</RoomRates>
<GuestCounts>
<GuestCount AgeQualifyingCode="10" Count="2"/>
</GuestCounts>
<TimeSpan Start="2025-03-12" End="2025-03-16"/>
<Total AmountAfterTax="520.00" CurrencyCode="AUD"></Total>
<BasicPropertyInfo HotelCode="HTL1" HotelName="The Beach Side Hotel"/>
<ServiceRPHs>
<ServiceRPH RPH="1"/>
<ServiceRPH RPH="2"/>
</ServiceRPHs>
<ResGuestRPHs>
<ResGuestRPH RPH="1"/>
</ResGuestRPHs>
</RoomStay>
</RoomStays>
<Services>
<Service Inclusive="true" ServiceInventoryCode="OTHER" Quantity="1" ServiceRPH="1">
<Price>
<Total AmountAfterTax="10.00" CurrencyCode="AUD"/>
<RateDescription>
<Text>Parking 1st night</Text>
</RateDescription>
</Price>
<ServiceDetails>
<TimeSpan Start="2025-03-12" End="2025-03-12"/>
</ServiceDetails>
</Service>
<Service Inclusive="true" ServiceInventoryCode="OTHER" Quantity="1" ServiceRPH="2">
<Price>
<Total AmountAfterTax="10.00" CurrencyCode="AUD"/>
<RateDescription>
<Text>Parking last night</Text>
</RateDescription>
</Price>
<ServiceDetails>
<TimeSpan Start="2025-03-15" End="2025-03-15"/>
</ServiceDetails>
</Service>
</Services>
<ResGuests>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</ResGuest>
</ResGuests>
<ResGlobalInfo>
<!-- ... other elements and attributes have been omitted for brevity ... -->
</ResGlobalInfo>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.
@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.
@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 atRoomStaylevel viaResGuestRPH)Customer (
Profile ProfileType="1"inResGlobalInfo): 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>ResGuests
Element
1
Contains the guests for the reservation.
ResGuest
Element
1..n
Contains the specific guest details.
@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).
@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>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>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>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>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>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><Guarantee>
<GuaranteesAccepted>
<GuaranteeAccepted>
<PaymentCard CardType="1" CardCode="MC" CardNumber="4321432143214321" SeriesCode="123" ExpireDate="1234">
<CardHolderName>John Smith</CardHolderName>
</PaymentCard>
</GuaranteeAccepted>
</GuaranteesAccepted>
</Guarantee><Guarantee>
<GuaranteesAccepted>
<GuaranteeAccepted>
<PaymentCard CardType="1" CardCode="MC" CardNumber="4321432143214321" SeriesCode="123" ExpireDate="1234">
<CardHolderName>John Smith</CardHolderName>
<ThreeDomainSecurity>
<Results ThreeDSVersion="1.0.2" XID="z9UKb06xLziZMOXBEmWSVA1kwG0=" CAVV="MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=" ECI="05" />
</ThreeDomainSecurity>
</PaymentCard>
</GuaranteeAccepted>
</GuaranteesAccepted>
</Guarantee>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).
@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)
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><DepositPayments>
<GuaranteePayment>
<AcceptedPayments>
<AcceptedPayment>
<PaymentCard CardType="1" CardCode="MC" CardNumber="4321432143214321" SeriesCode="123" ExpireDate="1234">
<CardHolderName>John Smith</CardHolderName>
</PaymentCard>
</AcceptedPayment>
</AcceptedPayments>
<AmountPercent Amount="90.00" CurrencyCode="EUR"/>
</GuaranteePayment>
</DepositPayments><DepositPayments>
<GuaranteePayment>
<AcceptedPayments>
<AcceptedPayment>
<PaymentCard CardType="1" CardCode="MC" CardNumber="4321432143214321" SeriesCode="123" ExpireDate="1234">
<CardHolderName>John Smith</CardHolderName>
<ThreeDomainSecurity>
<Results ThreeDSVersion="1.0.2" XID="z9UKb06xLziZMOXBEmWSVA1kwG0=" CAVV="MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=" ECI="05" />
</ThreeDomainSecurity>
</PaymentCard>
</AcceptedPayment>
</AcceptedPayments>
<AmountPercent Amount="90.00" CurrencyCode="EUR"/>
</GuaranteePayment>
</DepositPayments><DepositPayments>
<GuaranteePayment>
<AmountPercent Amount="90.00" CurrencyCode="EUR"/>
</GuaranteePayment>
</DepositPayments>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).
@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)
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><Profiles>
<ProfileInfo>
<Profile ProfileType="1">
<!-- ... other elements and attributes have been omitted for brevity ... -->
</Profile>
</ProfileInfo>
<ProfileInfo>
<Profile ProfileType="3">
<CompanyInfo>
<UniqueID 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>
<!-- Additional ProfileInfo element -->
</Profiles><Profiles>
<ProfileInfo>
<Profile ProfileType="1">
<!-- ... other elements and attributes have been omitted for brevity ... -->
</Profile>
</ProfileInfo>
<!-- Additional ProfileInfo element -->
<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>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><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">
<Errors>
<Error Type="6">Hotel not found for HotelCode=HOTELCODE</Error>
</Errors>
</OTA_HotelResNotifRS>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.
Reservation XML Samples
Common Questions
Help Centre
Last updated
Was this helpful?