pmsXchange v2 Change Log



Please check this page regularly for functionality and feature updates to pmsXchange v2.

Removed / Modified / Added to the specification.

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

Element

Number

Description

PaymentInfo

1

Top Level Payment information XML container

@PaymentTransactionTypeCode

1

Transaction type

OTA_Def

@PaymentType

1

Identifies the payment type

  • 5 - Credit Card

  • 6 - Debit Card

  • 46 - Online Payment

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

PMS Transaction Record API

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

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

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
IATA: To specify that this is an IATA identifier for a travel agent

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
2: GDS
3: Corporation
4: TravelAgent
5: Wholesaler
21: Arranger 

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
3: Fax 

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

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
2: Debit

@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
PaymentGatewayAuthCode: The authorization code of the payment gateway
PaymentReferenceId: If a reference was provided for any payment, it will be included here

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

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

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

Element

Number

Description

@PrimaryIndicator

0..1

When true indicates this is the primary guest



Released 02-March-2015

GuaranteeType

Element

Number

Description

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

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

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

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

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

Element

Number

Description

 @Age

0..1

The age of the guest.



<ResGuest ResGuestRPH="1" ArrivalTime="10:30:00" Age="8">





Released 27-May-2014



Element

Number

Description

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

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

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

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

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