pmsXchange v2 Change Log
Please check this page regularly for functionality and feature updates to pmsXchange v2.
Removed / Modified / Added to the specification.
- 1 Released 8-May-2024
- 2 Released 7-Dec-2022
- 3 Released 7-June-2022
- 4 Released 20-October-2021
- 5 Released 16-September-2019
- 6 Released 16-October-2015
- 7 Released 26-August-2015
- 7.1 ResGlobalInfo
- 8 Released 17-June-2015
- 8.1 ResGuestType
- 9 Released 02-March-2015
- 9.1 GuaranteeType
- 10 Released 28-January-2015
- 10.1 ResGlobalInfo
- 11 Released 22-October-2014
- 12 Released 09-October-2014
- 12.1.1 Reservation with multi-rates
- 12.2 RoomStayType
- 12.3 RoomRateType
- 13 Released 09-July-2014
- 13.1 ResGuestType
- 14 Released 27-May-2014
- 15 Released 15-May-2014
- 15.1 ServiceType
- 15.2 BaseType
- 16 Released 20-Mar-2014
- 16.1 ResGlobalInfo
- 16.2 ProfilesType
- 17 Released 10-Jun-2013
Released 8-May-2024
Non-Card Based Transaction Support
Updates the Transaction Record API to support new payment methods that non-card based (ie: AliPay)
SM_HotelResPaymentReadRS
PaymentInfo Detail
Element | Number | Description |
---|---|---|
PaymentInfo | 1 | Top Level Payment information XML container |
@PaymentTransactionTypeCode | 1 | |
@PaymentType | 1 | Identifies the payment type
|
@Remark | 0..1 | Open Remarks. Will include the payment provider used if the transaction was a non-card payment. |
@PaymentRef | 0..1 | Payment reference (ie Paypal reference) |
@ChargeTypeCode | 1 | Charge type code - See Charge Type Mapping Definition |
PaymentInfo\PaymentCard | 0..1 |
|
@CardCode | 1 | Credit card issuer code. See the OTA Payment Card Provider Codes |
@CardType | 1 | Credit/Debit OTA_Card_Type Def |
@ExpireDate | 1 | MMYY format card expire date |
@Mask | 1 | Masked CC number |
@CardHolderName | 1 | Name of card holder |
PaymentInfo\PaymentAmount | 1 | Payment Amount container |
@Amount | 1 | Transaction amount |
@CurrencyCode | 1 | Currency Code |
@Due | 0..1 | Amount outstanding |
Released 7-Dec-2022
Added Transaction Record API
New API function that contains a new set of messages that allows a PMS to retrieve reservation payment transaction data. These payment transactions are payments taken against a reservation via SiteMinders Pay product.
Released 7-June-2022
Local Card (LC) Support
The Channel Manager has added support for the Payment Card type - Local Card (LC). This card is primarily used in the South Korean market and reservations from HotelsCombined.
Card Type | Code |
---|---|
American Express | AX |
Bank Card | BC |
Carte Bleu | BL |
Carte Blanche | CB |
Diners Club | DN |
Discover Card | DS |
Eurocard | EC |
Japanese Credit Bureau Credit Card | JC |
Local Card | LC |
Maestro | MA |
Master Card | MC |
Solo | SO |
Union Pay | CU |
Universal Air Travel Card | TP |
Visa Electron | VE |
VIsa | VI |
ADD: Local Card (LC) is now supported
Released 20-October-2021
Profile / Customer / Document
OTA_ResRetrieveRS
Element | Number | Description |
---|---|---|
Profiles / ProfileInfo | 1..n | Profile information |
ProfileInfo / UniqueID | 0..n | Contains profile ids provided by the source channel. There can 0 to many identifiers passed through here |
@Type | 1 | This will always be "16" to represent 'Reference' from the OTA code table Unique Id Type (UIT) |
@ID | 1 | The reference identifier for the profile as provided by the source channel |
@ID_Context | 1 | This can be one of 2 values: CHANNEL: To specify that this is a channel reference id |
ProfileInfo / Profile | 1 | Contains the profile information |
@ProfileType | 1 | The type of profile See OTA Profile Type (PRT) code table. Some common usages are below 1: Customer |
Profile / Customer | ||
Customer / Document | 0..1 | Detailed document information for the guest (e.g., driver license, passport, visa). |
@DocID | 1 | Unique number assigned by authorities to document. |
@DocType | 1 | Indicates the type of document (e.g. Passport, Military ID, Drivers License, national ID, Vaccination Certificate). Refer to the Document Type Code List |
@Gender | 0..1 | Identifies the gender. Possible values are "Female", "Male", or "Unknown". |
@BirthDate | 0..1 | Indicates the date of birth as indicated in the document, in ISO 8601 prescribed format (YYYY-MM-DD). |
@BirthCountry | 0..1 | Specifies the birth country of the document holder. |
@BirthPlace | 0..1 | Specifies the birth place of the document holder (e.g., city, state, county, province), when designating a country of birth, use BirthCountry. |
@DocHolderNationality | 0..1 | The country code of the nationality of the document holder. |
@DocIssueAuthority | 0..1 | Indicates the group or association that granted the document. |
@DocIssueCountry | 0..1 | Country where the document was issued. |
@DocIssueLocation | 0..1 | Indicates the location where the document was issued. |
@DocIssueStateProvince | 0..1 | State or Province where the document was issued. |
@EffectiveDate | 0..1 | Indicates the starting date, in format YYYY-MM-DD. |
@ExpireDate | 0..1 | Indicates the ending date, in format YYYY-MM-DD. |
Document / DocumentHolderName | 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 to be the name as per passport. |
Customer / PersonName | 0..1 | Profile name details. Always present for type Customer. |
PersonName / NamePrefix | 0..1 | Name prefix |
PersonName / GivenName | 0..1 | The name of the profile. Always present for type Customer. |
PersonName / MiddleName | 0..1 | The middle name of the profile |
PersonName / Surname | 0..1 | The last name of the profile. Always present for type Customer. |
Customer / Telephone | 0..4 | Contact telephone number for the profile if available |
@PhoneNumber | 0..1 | The actual number, will be there if the Telephone element is there |
@PhoneUseType | 0..1 | The type of phone use for example daytime, nighttime, work. If this field is blank this is the primary phone, otherwise PhoneUseType="4" denotes a secondary or nighttime phone |
@PhoneTechType | 0..1 | The type of phone technology, if not provided it should be assumed as a landline 5: Mobile |
Customer / Email | 0..1 | The email address of the profile if available |
Customer / Address | 0..1 | Address information for the profile if available |
Address / AddressLine | 0..n | One or more address lines for the profile |
Address / CityName | 0..1 | Customer city of residence if available |
Address / PostalCode | 0..1 | Post code for profile if available |
Address / StateProv | 0..1 | State or province name |
Address / CountryName | 0..1 | Country name |
Address / CompanyName | 0..1 | Company name |
Customer / CustLoyalty | 0..1 | A list of Memberships. Memberships provides a list of reward programs. |
@MembershipID | 0..1 | The account identification number for this particular member in this particular program. |
@ProgramID | 0..1 | The defined membership program name or ID applicable to program. This will be in the form as provided by the source booking channel. |
@ExpiryDate | 0..1 | The expiry date of the program membership issued to card holder. Date format is yyyy-MM-dd |
Released 16-September-2019
Strong Customer Authentication
3DS data can now be delivered in reservations alongside payment card data.
SCA functionality is opt-in. If your system is already integrated to pmsXchange, please reach out to the SiteMinder Partner Integrations team to enable this feature.
OTA_ResRetrieveRS
Element | Number | Description |
---|---|---|
Guarantee / GuaranteesAccepted / GuaranteeAccepted / PaymentCard | 0..1 | Contains payment card information |
@CardCode | 0..1 | The 2 character code of the credit card issuer. Please see the OTA Payment Card Provider Codes table for reference |
@CardType | 0..1 | The type of payment card, refer to the OTA Card Type code table for reference. Common usages are: 1: Credit |
@CardNumber | 0..1 | The number embossed on the payment card |
@ExpireDate | 0..1 | This is the expiry date of the payment card used in the format MMyy |
@MaskedCardNumber | 0..1 | May be used to send a concealed or partial credit card number (e.g. "xxxxxxxxxxxx4444" or "4444"). |
PaymentCard / CardHolderName | 0..1 | This is the name of the card holder. |
PaymentCard / ThreeDomainSecurity / Results | 0..1 | Transaction results. IMPORTANT NOTE: SCA / 3DS details will only be provided if received from an SCA / 3DS compatible booking agent. Information within the 'ThreeDomainSecurity' element will not be visible in The Channel Manager. |
@ThreeDSVersion | 1 | The 3DS version used for authentication |
@ECI | 1 | Electronic Commerce Indicator. Please see Electronic Commerce Indicator Codes table for reference. |
@CAVV | 0..1 | Cardholder Authentication Verification Value (CAVV); Authentication Verification Value (AVV); Universal Cardholder Authentication Field (UCAF) |
@PAResStatus | 0..1 | Transactions status result identifier. Please see Transactions Status Result Identifier Codes table for reference. |
@SignatureVerification | 0..1 | Transaction Signature status identifier. Please see Transaction Signature Status Codes table for reference. |
@XID | 0..1 | Transaction identifier resulting from authentication processing |
@Enrolled | 0..1 | Status of Authentication eligibility. Please see Status of Authentication Codes table for reference. |
@DSTransactionID | 0..1 | Unique transaction identifier assigned by the Directory Server (DS) to identify a single transaction |
Guarantee / Comments / Comment | 0..n | Contains extra information about the payment |
@Name | 1 | The type of payment information, this can be one of PaymentGatewayName: The name of the payment gateway The comment Name will always be included if a Comment node is present here |
Guarantee / Comments / Comment / Text | 1 | The actual information related to the payment |
Guarantee / GuaranteeDescription | 0..1 | |
Guarantee / GuaranteeDescription / Text | 1 | Information about the form of guarantee |
Released 16-October-2015
Setting Maximum Stay
Setting maximum stay is achieved by including the LengthsOfStay element. This element contains a single LengthOfStay element with mandatory attributes @MinMaxMessageType and @Time. @MinMaxMessageType has a fixed value of "SetMaxLOS" and the @Time is the maximum stay period in days.
OTA_HotelAvailNotifRQ Specification
Element | Number | Description |
---|---|---|
LengthsOfStay | 0..1 | Optional. Used to update minimum and maximum stays. |
LengthsOfStay / LengthOfStay | 1..2 | Mandatory if LengthsOfStay present. One LengthOfStay can be included for each of "SetMinLOS" and "SetMaxLOS". |
@MinMaxMessageType | 1 | Mandatory if LengthsOfStay present. Possible values are "SetMinLOS" or "SetMaxLOS". |
@Time | 1 | Mandatory if LengthsOfStay present. Sets the minimum or maximum number of days allowed for a stay. Time must be a value above 0. Set Time to 1 to indicate that there is no MinStay requirement, or 999 to indicate no MaxStay requirement. |
Released 26-August-2015
Booking.com Cancellations are being sent without a RoomStay present. As a result, RoomStay / BasicPropertyInfo / @HotelCode is not present on Booking.com reservation cancellation messages. To remedy this, the @HotelCode is being added to ResGlobal / BasicPropertyInfo / @HotelCode, in addition to the current location RoomStay / BasicPropertyInfo / BasicPropertyInfo.
NB: If you currently use RoomStay / BasicPropertyInfo / @HotelCode and require the use of ResGlobal / BasicPropertyInfo / @HotelCode, you'll need to get in contact with partner.integrations@siteminder.com to get the change activated.
ResGlobalInfo
Element | Number | Description |
---|---|---|
BasicPropertyInfo | 1 | Holds information about the Hotelier which this reservation is for. |
@HotelCode | 1 | The code for the Hotel for which the booking was made. |
Released 17-June-2015
ResGuestType
Element | Number | Description |
---|---|---|
@PrimaryIndicator | 0..1 | When true indicates this is the primary guest |
Released 02-March-2015
GuaranteeType
Element | Number | Description |
---|---|---|
@MaskedCardNumber | 0..1 | May be used to send a concealed or partial credit card number (e.g. "xxxxxxxxxxxx4444" or "4444"). |
<GuaranteeAccepted>
<PaymentCard CardCode="VI" CardType="1" MaskedCardNumber="4444" ExpireDate="1114">
<CardHolderName>Donald Trump</CardHolderName>
</PaymentCard>
</GuaranteeAccepted>
Released 28-January-2015
ResGlobalInfo
Element | Number | Description |
---|---|---|
DepositPayments / GuaranteePayment / AmountPercent | 1 | |
@Amount | 0..1 | The deposit as a currency amount. At least @Amount or @Percent will be populated. |
@CurrencyCode | 0..1 | This is the ISO currency code of the deposit. Mandatory if @Amount exists. |
@Percent | 0..1 | This is the percentage of the Total charge for the deposit (rounded to 3 decimal places). If the the Total.amountAfterTax is provided, it will be a percentage of this value. If only the amountBeforeTax is provided it will be the percentage of this value. At least @Amount or @Percent will be populated. |
@TaxInclusive | 0..1 | Indicates if tax is included in @Amount |
Released 22-October-2014
Setting Rates
Rates should be sent through in the BaseByGuestAmt element. Either @AmountAfterTax or @AmountBeforeTax must be included and must contain the rate as a positive decimal value. In order to set Rates it is mandatory to specify the @CurrencyCode. At present PmsXchange DOES NOT perform currency conversion and the Rate amount specified will be applied directly to SiteMinder.
OTA_HotelRateAmountNotifRQ Specification
Element | Number | Description |
---|---|---|
BaseByGuestAmts / BaseByGuestAmt | 1 | Contains the rate amounts per room |
@AmountAfterTax | 0..1 | One and only one of @AmountAfterTax and @AmountBeforeTax must be included if BaseByGuestAmts is present. Must be a positive decimal value. |
@AmountBeforeTax | 0..1 | One and only one of @AmountAfterTax and @AmountBeforeTax must be included if BaseByGuestAmts is present. Must be a positive decimal value. |
Released 09-October-2014
Reservation with one room type booked, but multiple rate plans/codes contained.
Example of a reservation with the a single room type booked but different rate plans and one guest on the reservation level. Reservations like this occur most commonly on Booking.com, where a guest might make a 3 night booking for a room type "DR" - however, Booking.com allocates rate plan "RAC" to the first two nights of the booking, whereas the third night is booked on rate plan "RACX". The reason this happens is because one rate plan may be available when others aren't, allowing Booking.com to stitch together continuous stays from rate plans with different availability. An example of such a reservation is shown below.
Reservation with multi-rates
<OTA_ResRetrieveRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2005-08-01T09:32:47+08:00" EchoToken="echo-abc123">
<Success/>
<ReservationsList>
<HotelReservation CreateDateTime="2007-12-09T08:51:45.000+0000" ResStatus="Book">
<POS>
<Source>
<RequestorID Type="22" ID="SITEMINDER"/>
<BookingChannel Primary="true" Type="7">
<CompanyName Code="WTF">Wotif</CompanyName>
</BookingChannel>
</Source>
</POS>
<UniqueID Type="14" ID="WTF-001"/>
<UniqueID Type="16" ID="1243132" ID_Context="MESSAGE_UNIQUE_ID"/>
<RoomStays>
<RoomStay>
<RoomRates>
<RoomRate RoomTypeCode="DR" RatePlanCode="RAC" NumberOfUnits="1">
<Rates>
<Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2013-03-12" ExpireDate="2013-03-14">
<Total AmountAfterTax="50.00" CurrencyCode="USD"/>
</Rate>
</Rates>
</RoomRate>
<RoomRate RoomTypeCode="DR" RatePlanCode="RACX" NumberOfUnits="1">
<Rates>
<Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2013-03-14" ExpireDate="2013-03-15">
<Total AmountAfterTax="40.00" CurrencyCode="USD"/>
</Rate>
</Rates>
</RoomRate>
</RoomRates>
<GuestCounts>
<GuestCount AgeQualifyingCode="10" Count="1"/>
</GuestCounts>
<TimeSpan Start="2013-03-12" End="2013-03-15"/>
<Total AmountAfterTax="90.00" CurrencyCode="USD"/>
<BasicPropertyInfo HotelCode="10107"/>
</RoomStay>
</RoomStays>
<ResGuests>
<ResGuest>
<Profiles>
<ProfileInfo>
<UniqueID Type="16" ID="12345" ID_Context="CHANNEL"/>
<Profile ProfileType="1">
<Customer>
<PersonName>
<GivenName>James</GivenName>
<Surname>Bond</Surname>
</PersonName>
<Telephone PhoneNumber="555-1234"/>
<Email>james.bond@mi5.co.uk</Email>
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
</ResGuest>
</ResGuests>
<ResGlobalInfo>
<Total AmountAfterTax="150.00" CurrencyCode="USD"/>
<HotelReservationIDs>
<HotelReservationID ResID_Type="14" ResID_Value="RES_3243525"/>
</HotelReservationIDs>
</ResGlobalInfo>
</HotelReservation>
</ReservationsList>
</OTA_ResRetrieveRS>
RoomStayType
Element | Number | Description |
---|---|---|
RatePlans / RatePlan | 0..n | Contains information for the Rate Plan(s) used for the RoomStay. There will only ever be one RatePlanCode per RoomStay, however if there are multiple promotions or additional inclusions which span different date ranges there will be multiple RatePlan nodes |
RoomStay / RoomRates / RoomRate | 1..n | Multiple RoomRates per RoomStay. Multiple rates are listed under each RoomRate. This can happen when there is a single room booked but more than one rate plan applies during the stay. See RoomRateType |
RoomRateType
Element | Number | Description |
---|---|---|
RoomStay / RoomRates / RoomRate | 1..n | Multiple RoomRates per RoomStay. Multiple rates are listed under each RoomRate. This can happen when there is a single room booked but more than one rate plan applies during the stay. |
<RoomStay>
<RoomRates>
<RoomRate RoomTypeCode="ROOM1" RatePlanCode="RATE1" NumberOfUnits="1">
<Rates>
<Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2012-03-12" ExpireDate="2012-03-13">
<Base AmountBeforeTax="252.00" AmountAfterTax="280.00" CurrencyCode="AUD"/>
</Rate>
</Rates>
</RoomRate>
<RoomRate RoomTypeCode="ROOM1" RatePlanCode="RATE2" NumberOfUnits="1">
<Rates>
<Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2012-03-13" ExpireDate="2012-03-14">
<Base AmountBeforeTax="279.00" AmountAfterTax="310.00" CurrencyCode="AUD"/>
</Rate>
</Rates>
</RoomRate>
</RoomRates>
<TimeSpan Start="2012-03-12" End="2012-03-14"/>
<Total AmountBeforeTax="531.00" AmountAfterTax="590.00" CurrencyCode="AUD">
<Taxes>
<Tax Amount="59.00" CurrencyCode="AUD"/>
</Taxes>
</Total>
</RoomStay>
Released 09-July-2014
ResGuestType
If the guest is a child, the following addition may be sent:
Element | Number | Description |
---|---|---|
@Age | 0..1 | The age of the guest. |
|
Released 27-May-2014
Element | Number | Description |
---|---|---|
@ServiceInventoryCode | 1 | PREVIOUSLY =========== The type of charge being applied, please refer to the Service and Extra Charge Reference Table ----------------------------------------------------------------------------------------------------------------------------------------- NEW CHANGE The identifier code for the service as given by the source booking channel will be provided here. In the absence of a specific code being provided by the channel, the type of charge will be specified via one of the types specified in the Service and Extra Charge Reference Table. |
Released 15-May-2014
ServiceType
Element | Number | Description |
---|---|---|
Price / Base | 0..1 | The amount per unit for this extra charge as provided by the hotel. See BaseType (for details) |
BaseType
Element | Number | Description |
---|---|---|
@CurrencyCode | 0..1 | The ISO currency code for the unit amount |
@AmountAfterTax | 0..1 | The unit amount after tax |
@AmountBeforeTax | 0..1 | The unit amount before tax |
Taxes | 0..1 | The unit tax amount for the BaseType See TaxesType |
@Amount | 0..1 | The unit tax amount |
Released 20-Mar-2014
These changes are reflected now on the Retrieve Reservations page.
The Memberships node in HotelReservation / ResGlobalInfo is removed and is replaced by CustLoyalty node under Profiles / ProfileInfo / Profile / Customer.
ResGlobalInfo
Element | Number | Description |
---|---|---|
Memberships / Membership | 0..n | A list of Memberships. Memberships provides a list of reward programs |
@ProgramCode | 0..1 | The code or name of the membership program ('Hertz', 'AAdvantage', etc.). |
@AccountID | 0..1 | The account identification number for this particular member in this particular program. |
HotelReservationIDs / HotelReservationID | 0..2 | PREVIOUS Reference number/string or PNR as supplied by the Booking agent will be supplied here ----------------------------------------------------------------------------------------------------------------------------------------- CHANGE 20-MAR-2014 Reference number/string or PNR as supplied by the Booking agent will be supplied here. If this reservation is linked under an itinerary, the itinerary id given by the source booking agent will be supplied in a second. |
@ResID_Type | 1 | PREVIOUS Reference number/string or PNR as supplied by the Booking agent will be supplied here ----------------------------------------------------------------------------------------------------------------------------------------- CHANGE 20-MAR-2014 Will be sent as 14 or 26. 14: OTA code for 'Travel Agent PNR'. If this type is used the @ResID_Value will be the reservation identifier as provided by the source booking channel. 26: OTA code for 'Associated itinerary reservation'. If this type is used the @ResID_Value will be the itinerary identifier for one or more bookings in an itinerary as provided by the source booking channel. |
ProfilesType
Element | Number | Description |
---|---|---|
Profile / Customer / CustLoyalty | 0..1 | A list of Memberships. Memberships provides a list of reward programs. |
@MembershipID | 0..1 | The account identification number for this particular member in this particular program. |
@ProgramID | 0..1 | The defined membership program name or ID applicable to program. This will be in the form as provided by the source booking channel. |
@ExpiryDate | 0..1 | The expiry date of the program membership issued to card holder. Date format is yyyy-MM-dd |
Released 10-Jun-2013
See Retrieve Reservations page for more information about the changed nodes
Secondary Point Of Sale Company Code
Attribute 'Code' added to the CompanyName node for secondary channels. This will be relayed as provided from the source booking engine
Market Code For RoomStay
Attribute 'MarketCode' to be added to the RoomStay node. This will be relayed as provided by the source booking engine
Comments For ResGlobalInfo
'Comments' node to be added to the ResGlobalInfo node. This will be relayed as provided by the source booking engine