pmsXchange v2 Change Log

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

Removed / Modified / Added to the specification.

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

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

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

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

@MaskedCardNumber0..1May be used to send a concealed or partial credit card number (e.g. "xxxxxxxxxxxx4444" or "4444").
PaymentCard / CardHolderName0..1This is the name of the card holder.
PaymentCard / ThreeDomainSecurity / Results0..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.

@ThreeDSVersion1The 3DS version used for authentication
@ECI1Electronic Commerce Indicator. Please see Electronic Commerce Indicator Codes table for reference.
@CAVV0..1Cardholder Authentication Verification Value (CAVV); Authentication Verification Value (AVV); Universal Cardholder Authentication Field (UCAF)
@PAResStatus0..1Transactions status result identifier. Please see Transactions Status Result Identifier Codes table for reference.
@SignatureVerification0..1Transaction Signature status identifier. Please see Transaction Signature Status Codes table for reference.
@XID0..1Transaction identifier resulting from authentication processing
@Enrolled0..1Status of Authentication eligibility. Please see Status of Authentication Codes table for reference.
@DSTransactionID0..1Unique transaction identifier assigned by the Directory Server (DS) to identify a single transaction
Guarantee / Comments / Comment0..nContains extra information about the payment
@Name1

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 / Text1The actual information related to the payment
Guarantee / GuaranteeDescription0..1
Guarantee / GuaranteeDescription / Text1Information 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

ElementNumberDescription

LengthsOfStay

0..1

Optional. Used to update minimum and maximum stays.

LengthsOfStay / LengthOfStay1..2Mandatory 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

ElementNumberDescription
BasicPropertyInfo1Holds information about the Hotelier which this reservation is for.
@HotelCode1The code for the Hotel for which the booking was made.


Released 17-June-2015

ResGuestType 

Element
Number
Description
@PrimaryIndicator0..1When true indicates this is the primary guest


Released 02-March-2015

GuaranteeType

ElementNumberDescription

@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 / AmountPercent1
@Amount0..1

The deposit as a currency amount. At least @Amount or @Percent will be populated.

@CurrencyCode0..1This is the ISO currency code of the deposit. Mandatory if @Amount exists.
@Percent0..1This 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.
@TaxInclusive0..1Indicates 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

 

ElementNumberDescription
BaseByGuestAmts / BaseByGuestAmt1Contains 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.

@AmountBeforeTax0..1One 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 / RatePlan0..nContains 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 / RoomRate1..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 / RoomRate1..nMultiple 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
 @Age0..1The age of the guest.
<ResGuest ResGuestRPH="1" ArrivalTime="10:30:00" Age="8">


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 / Base0..1

The amount per unit for this extra charge as provided by the hotel.

See BaseType (for details)


BaseType

Element
Number
Description
@CurrencyCode0..1The ISO currency code for the unit amount
@AmountAfterTax0..1The unit amount after tax
@AmountBeforeTax0..1The unit amount before tax
Taxes0..1

The unit tax amount for the BaseType

See TaxesType

@Amount0..1The unit tax amount
<Services>
  <Service ServiceInventoryCode="EXTRA_BED" Inclusive="true" ServiceRPH="1" Quantity="2" ID="12345" ID_Context="CHANNEL" Type="18">
    <Price>
      <Base AmountBeforeTax="10.00" AmountAfterTax="11.00" CurrencyCode="USD">
        <Taxes Amount="1.00">
          <Tax Code="19" Percent="10" Amount="1.00">
            <TaxDescription>
              <Text>GST 10 percent</Text>
            </TaxDescription>
          </Tax>
        </Taxes>
      </Base>
      <Total AmountBeforeTax="100.00" AmountAfterTax="110.00" CurrencyCode="USD">
        <Taxes Amount="10.00">
          <Tax Code="19" Percent="10" Amount="10.00">
            <TaxDescription>
              <Text>GST 10 percent</Text>
            </TaxDescription>
          </Tax>
        </Taxes>
      </Total>
      <RateDescription>
        <Text>Extra person charge $10.00 for cot</Text>
      </RateDescription>
    </Price>
    <ServiceDetails>
      <TimeSpan End="2013-03-15" Start="2013-03-11"/>
    </ServiceDetails>
  </Service>
</Services>


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 / Membership0..nA 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 / CustLoyalty0..1A list of Memberships. Memberships provides a list of reward programs.
@MembershipID0..1

The account identification number for this particular member in this particular program.

@ProgramID0..1

The defined membership program name or ID applicable to program. This will be in the form as provided by the source booking channel.

@ExpiryDate0..1

The expiry date of the program membership issued to card holder. Date format is yyyy-MM-dd 

...
<Profiles>
	<ProfileInfo>
		<UniqueID Type="16" ID="12345" ID_Context="CHANNEL"/>
		<Profile ProfileType="1">
			<Customer>
				...
				<CustLoyalty MembershipID="1234567890" ProgramID="FrequentFlyer" ExpiryDate="2017-03-31"/>
            </Customer>
        </Profile>
    </ProfileInfo>
</Profiles>
...

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
     
...
<POS>
    ...
	<Source>
        <BookingChannel Primary="false" Type="7">
        <CompanyName Code="ARM">Asia Rooms</CompanyName>
        </BookingChannel>
    </Source>
<POS>
...

Market Code For RoomStay

  • Attribute 'MarketCode' to be added to the RoomStay node. This will be relayed as provided by the source booking engine
     
...
<RoomStay MarketCode="Corporate">
	...
</RoomStay>
...

Comments For ResGlobalInfo

  • 'Comments' node to be added to the ResGlobalInfo node. This will be relayed as provided by the source booking engine
     
...
<ResGlobalInfo>
    ...
    <Comments>          
        <Comment>
            <Text>will be arriving after 6 pm</Text>
        </Comment>
    </Comments>
    ...
</ResGlobalInfo>
...