Retrieve Reservations

The connected PMS should retrieve reservations, modifications and cancellations from SiteMinder using the OTA_ReadRQ message. PmsXchange will respond with a OTA_ResRetrieveRS that contain the reservations, modifications or cancellations that meet the request criteria in the read request.

NOTE: The integrated PMS MUST return the reduced 'Availability' (@BookingLimit) value via the 'Inventory API' immediately after a reservation has been delivered. It is expected that the integrated PMS will pass back 'Availability' changes (reduction or replenishment) once a reservation, modification or cancellation message has been processed to confirm availability.

OTA_ReadRQ

The message below will return all undelivered reservations, modifications and cancellations for the hotel with HotelCode ABC

Request all undelivered for a hotel
<OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2022-08-01T09:30:47+08:00" EchoToken="echo-abc123">
  <POS>
    <Source>
      <RequestorID Type="22" ID="PMS1"/>
    </Source>
  </POS>
  <ReadRequests>
    <HotelReadRequest HotelCode="ABC">
      <SelectionCriteria SelectionType="Undelivered"/>
    </HotelReadRequest>
  </ReadRequests>
</OTA_ReadRQ>

The message below will return all undelivered reservations, modifications and cancellations for all hotels for the PMS with code PMS1. This message is only available for centrally located (uses centralised credentials to access all properties via pmsXchange) property management systems.

Request all undelivered for a PMS
<OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2022-08-01T09:30:47+08:00" EchoToken="echo-abc123">
  <POS>
    <Source>
      <RequestorID Type="22" ID="PMS1"/>
    </Source>
  </POS>
  <ReadRequests>
    <HotelReadRequest>
      <SelectionCriteria SelectionType="Undelivered"/>
    </HotelReadRequest>
  </ReadRequests>
</OTA_ReadRQ>

The message below will return all undelivered new reservation for the hotel with HotelCode ABC

Request undelivered reservations
<OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2022-08-01T09:30:47+08:00" EchoToken="echo-abc123">
  <POS>
    <Source>
      <RequestorID Type="22" ID="PMS1"/>
    </Source>
  </POS>
  <ReadRequests>
    <HotelReadRequest HotelCode="ABC">
      <SelectionCriteria SelectionType="Undelivered" ResStatus="Book"/>
    </HotelReadRequest>
  </ReadRequests>
</OTA_ReadRQ>

The message below will return all undelivered cancellations for the hotel with HotelCode ABC

Request undelivered cancellations
<OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2022-08-01T09:30:47+08:00" EchoToken="echo-abc123">
  <POS>
    <Source>
      <RequestorID Type="22" ID="PMS1"/>
    </Source>
  </POS>
  <ReadRequests>
    <HotelReadRequest HotelCode="ABC">
      <SelectionCriteria SelectionType="Undelivered" ResStatus="Cancel"/>
    </HotelReadRequest>
  </ReadRequests>
</OTA_ReadRQ>

The message below will return all undelivered modifications for the hotel with HotelCode ABC

Request undelivered modifications
<OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2022-08-01T09:30:47+08:00" EchoToken="echo-abc123">
  <POS>
    <Source>
      <RequestorID Type="22" ID="PMS1"/>
    </Source>
  </POS>
  <ReadRequests>
    <HotelReadRequest HotelCode="ABC">
      <SelectionCriteria SelectionType="Undelivered" ResStatus="Modify"/>
    </HotelReadRequest>
  </ReadRequests>
</OTA_ReadRQ>

OTA_ReadRQ Specification

Element

Number

Description

OTA_ReadRQ

1

Root element

@Version1Current Version 1.0

@EchoToken

1

Globally unique identifier for the request, value will be returned as an EchoToken in the response.

@TimeStamp

1

Time of the transaction in xml schema dateTime format. Format like yyyy-MM-dd'T'HH:mm:ssZZ, (i.e '2021-03-09T20:05:52+08:00')

OTA_ReadRQ / POS / Source / RequestorID1This identifies the system which is sending the reservation. This element must appear in the first Source element.

@Type

1

Fixed at 22 (ESRP)

@ID

1

The ID used will be agreed by the trading partners and remain the same throughout the messages.

OTA_ReadRQ / ReadRequests

1


ReadRequests / HotelReadRequest

1


@HotelCode

0..1

Hotel code as recognised by pmsXchange. If omitted all reservations for the PMS will be returned.
Note: This attribute is only optional for central property management systems. It is mandatory for on-site systems.

HotelReadRequest / SelectionCriteria

1


@SelectionType

1

Must be "Undelivered"

@ResStatus0..1Allowed values are "Book", "Modify" or "Cancel". If omitted new, modified and cancelled reservations will be returned.

OTA_ResRetrieveRS

This message is returned by pmsXchange in response to the OTA_ReadRQ. It's primary payload is a list of HotelReservations which meet the request criteria in the OTA_ReadRQ.

Reservations that meet the request criteria are returned

PmsXchange is channeling reservations from multiple different booking sources. See Minimum Content XML Sample and Maximum Content XML Sample for two sample messages showing the minimum and maximum amount of data that can be expected in a HotelReservation. The OTA_ResRetrieveRS Specification below has a number listed next to the node name to indicate if the node is mandatory or not. The OTA_ResRetrieveRS spec below is not designed to appear exactly in the order presented below. Coding to pmsXchange v2 should be flexible and allow for order variations to nodes/elements.

  • The <Success/> element indicates a successful response
  • In this example 2 new reservations are returned. As covered in Retrieve & Confirm Use Cases documents, the pmsXchange reservation identifiers are "WTF-001" and "HTL-002" and the message ids for these reservations are "1243132" and "1243133".

<OTA_ResRetrieveRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2022-08-01T09:32:47+08:00" EchoToken="echo-abc123">
  <Success/>
  <ReservationsList>
    <HotelReservation CreateDateTime="2022-12-09T08:51:45+00:00" ResStatus="Book">
      <UniqueID Type="14" ID="WTF-001"/>
      <UniqueID Type="16" ID="1243132" ID_Context="MESSAGE_UNIQUE_ID"/>
      <!-- HOTEL RESERVATION DETAILS OMITTED -->
    </HotelReservation>
    <HotelReservation CreateDateTime="2022-12-09T08:51:45+00:00" ResStatus="Book">
      <UniqueID Type="14" ID="HTL-002"/>
      <UniqueID Type="16" ID="1243133" ID_Context="MESSAGE_UNIQUE_ID"/>
      <!-- HOTEL RESERVATION DETAILS OMITTED -->
    </HotelReservation>
  </ReservationsList>
</OTA_ResRetrieveRS>

No reservations are found that meet the request criteria

  • The presence of the <Success/> element indicates successful processing but the lack of the ReservationsList element shows no reservations were available.
<OTA_ResRetrieveRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2022-08-01T09:31:00+08:00" EchoToken="echo-abc123">
  <Success/>
</OTA_ResRetreiveRS>

An error occurred processing the request

  • The presence of the <Errors/> element indicates an error in business logic occurred.
<OTA_ResRetrieveRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2022-08-01T09:31:00+08:00" EchoToken="echo-abc123">
  <Errors>
    <Error Type="3" Code="392">Invalid Hotel Code</Error>
  </Errors>
</OTA_ResRetreiveRS>

OTA_ResRetrieveRS Specification

The main payload of the OTA_ResRetrieveRS message is a list of HotelReservation elements. The content will vary because PmsXchange is delivering reservations from many different upstream sources (Booking Channels), many of which have vastly different reservation formats and data structures. 

In general, the following can be said about HotelReservations:

  • A HotelReservation represents a single reservation made with an upstream system.
  • A HotelReservation can have one or more RoomStays, one for each room type booked.
  • A RoomStay represents a stay in one room type over a continuous timespan, non-continuous timespan stays (split stays) will result in multiple RoomStays.
  • A HotelReservation can have zero, one or many ResGuests linked to either the RoomStay the guest stay in or the reservation.


Elements and attributes marked with Number=1 or more will always be sent. 0 means that the element or attribute is optional, while a second numeric value or 'n' indicates the element or attribute can repeat (where n = no limit)"

Element

Number

Description

OTA_ResRetrieveRS

1Root element
@EchoToken1Return the EchoToken from the request message.
@Version1Current Version 1.0
@TimeStamp1

Time of the transaction in xml schema dateTime format.

OTA_ResRetrieveRS / Success0..1Should only be present if the request processed successfully. The Errors node will not be present if the Success node is present.
OTA_ResRetrieveRS / Errors0..1Contains a list of errors if the request failed to process.
Errors / Error1..nShould be at least one node if there is an Errors Node.
@Type1

Mandatory if Error present.
Any type from the OTA code table for 'Error Warning Type (EWT)' can be used. In particular, the following types are used

3: Biz rule (The business rules for the request message were not met)
4: Authentication error (If username and password are not authenticated)
6: Authorization error (If authenticated username is not authorized to alter hotel data)
10: Required field missing (If xml does not meet the schema, i.e missing request fields or invalid data types.)

@Code0..1

Any code from the OTA code table for 'Error Codes (ERR)' can be used.

OTA_ResRetrieveRS / ReservationsList0..1ReservationList is only present if there are HotelReservation elements. 
ReservationsList / HotelReservation1..n

At least one reservation element if ReservationList exists

See HotelReservationType

HotelReservationType

ElementNumberDescription

@CreateDateTime

1

This is the date when the reservation was first made. Mandatory if ResStatus is "Book".

@LastModifyDateTime0..1This indicates the last date and time when the reservation was last modified. Mandatory if ResStatus is "Modify" or "Cancel".

@ResStatus

1

Status is "Book", "Modify" or "Cancel"

HotelReservation / UniqueID

1..2

The reservation reference in PmsXchange.

The first UniqueID element will contain the unique identifier for the entire reservation. This identifier will identify the reservation through any subsequent modifications or cancellations.

The second UniqueID element with ID_Context="MESSAGE_UNIQUE_ID" is the unique id for this message. This identifier should be used to confirm the message once processed

@Type

1

Value '14' is the unique id for the reservation in Siteminder. Value '16' is the unique id for the message transferring the reservation.

@ID

1

Identifier of the reservation according to PmsXchange. Note, this is NOT the reservation id according to the upstream system. This is located in the HotelReservationID element.

There is the possiblility that this ID will contain special characters such as '/'.

@ID_Context0..1Only present for the second UniqueID element and when present it will always be "MESSAGE_UNIQUE_ID"
HotelReservation / POS1Point of sale

POS / Source

1..2

Source of the reservation. A second POS / Source node can be present to define a secondary channel source.

Source / RequestorID0..1This identifies the system which is sending the reservation. This element will only appear in the first Source element.

@Type

1

Fixed at 22 (ESRP)

@ID

1

Value is always 'SITEMINDER'

Source / BookingChannel1Contains booking channel information
@Primary1Indicates the primary booking source
@Type1Always '7' for 'Internet'.
BookingChannel / CompanyName1

Name of the Booking Channel.

NOTE: This name is subject to change/variation by the Booking Channel. Please use the @Code attribute below to identify Booking Channels on incoming reservations.

@Code

0..1

PmsXchange's code to identify the Booking Channel. See the OTA Booking Channel Type (BCT)  table for reference. For secondary channels this code may not be available, when present it will be the secondary channel code as provided by the source channel.

HotelReservation / RoomStays / RoomStay

0..n

One instance of RoomStay per room booked.
A RoomStay element will always exist if ResStatus is "Book" or "Modify".
If ResStatus is "Cancel" it is possible that no RoomStay element exists. 

See RoomStayType

HotelReservation / ResGuests / ResGuest

0..n

One instance of ResGuest per reservation guests. This guest information is dependent on the sometimes limited information retrieved from the booking agents. ResGuests might not always be directly linkable to the RoomStays. Either all ResGuests are linked to RoomStays or none are.

See ResGuestType

HotelReservation / Services / Service0..n

A list of service fees and extra charges linked to the HotelReservation

See ServiceType

HotelReservation / ResGlobalInfo

1

Contains general information about the Reservation
See ResGlobalInfo

ResGlobalInfo

ElementNumberDescription

HotelReservationIDs / HotelReservationID

0..2

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

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.

@ResID_Value

1

Reference number/string supplied by the Booking agent. ResID_Value could potentially contain special characters such '/'.

Total

0..1

The total amount for the Reservation. Will add up to the sum of the RoomStay totals PLUS any additional fees sent by the BookingAgent.

NOTE: It is possible that some OTAs do not provide any form of Rate information. As such we cannot guarantee Rate information will be provided. Currently Hotelbeds (HBD) is a known channel that does not always provide Rate information.

See TotalType

Profiles0..1

This is a listing of Profiles associated with the reservation that are not Guests. This includes Customers, Travel Agents and Travel Arrangers. The Customer is the contact person for the Reservation. If the customer is also a guest, they will also be included in the ResGuest profile.

See ProfilesType

Memberships / Membership0..nA list of Memberships. Memberships provides a list of reward programs
@ProgramCode0..1The code or name of the membership program ('Hertz', 'AAdvantage', etc.).
@AccountID0..1The account identification number for this particular member in this particular program.

Fees / Fee

0..n

A container for added fees

@TaxInclusive

1

If 'true' the commission amount provided is tax inclusive, if 'false' the commission amount is not tax inclusive

@Type

1

Always 'Inclusive' as PmsXchange reports gross Totals. Totals are inclusive of fees

@Code1See OTA Fee Tax Type (FTT) code table
@Amount0..1Commission amount
Fee / Taxes

0..1

See TaxesType
Fee / Description / @Name0..1

Identifies the type of fee. Current values allowed are

Commission: Commission against the total of the reservation.

Fee / Description / Text 0..1

A description of the fee

DepositPayments0..1Contains the deposit information
DepositPayments / GuaranteePayment / AmountPercent1

@Amount

0..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
DepositPayments / GuaranteePayment / Description / Text0..1A text description of the deposit
Guarantee0..1

Guarantee information

See GuaranteeType

Comments / Comment / Text0..nReservation comments
BasicPropertyInfo0..1

Holds information about the Hotelier which this reservation is for.

BasicPropertyInfo will always be sent as either part of the RoomStay or Retrieve Reservations#ResGlobalInfo, depending on your setup in pmsXchange. We recommend receiving the BasicPropertyInfo as part of the ResGlobalInfo due to how Booking.com cancellation messages are sent.

@HotelCode1The code for the Hotel for which the booking was made.

ResGuestType

ElementNumberDescription

@ResGuestRPH

0..1

This value links the ResGuest to RoomStay(s) where possible. You can find the links in RoomStay / ResGuestRPHs. 

@ArrivalTime

0..1

The arrival time of the guest in the form HH:mm:ss.

@Age0..1The age of the guest.
@PrimaryIndicator0..1When true indicates this is the primary guest

ResGuest / Profiles

1

Contains the guest profile information

See ProfilesType

ResGuest / Comments / Comment0..1Container for extra information about the guest
@Name0..1

Identifier for the comment, current supported names are

ArrivalDetails: Details about the guest's mode of arrival
DepartureDetails: Details about the guest's mode of departure 

Comment / Text1Text for the guest extra information

RoomStayType

ElementNumberDescription
@MarketCode0..1If provided by the source channel, this indicates a code to match a market segment for the booking.

@PromotionCode

0..1

If configured, this is the promotion code indicating, for instance, a specific marketing campaign – not the rate code.

@SourceOfBusiness

0..1

To specify where the business came from e.g. radio, newspaper ad, etc.

RoomStay / RoomTypes / RoomType0..1Container for room information, will be omitted if none was provided by the source channel. There will only ever be one RoomType per RoomStay
@RoomType0..1The name of the RoomType as provided by source channel
@RoomTypeCode0..1Room code, identifier for the room
@NonSmoking0..1Whether or not the room is a smoking room. In the absence of this attribute, SiteMinder was not provided with the information by the source channel
@Configuration0..1Information about the bedding configuration
RoomType / RoomDescription / Text0..1A text description of the room
RoomType / AdditionalDetails0..n

Container for additional information about this room provided by the source channel

See AdditionalDetailsType

RoomStay / RatePlans0..1Container for room information, will be omitted if none was provided by the source channel
RatePlans / RatePlan0..nContains information for the Rate Plan(s) used for the RoomStay.
@RatePlanCode0..1Rate code, identifier for the rate plan
@RatePlanName0..1Name of the rate plan as provided the source channel
@EffectiveDate1The effective date of the RatePlan
@ExpireDate1The expire date for a RatePlan, this should be considered an exclusive date, the date for which the current rate plan information is no longer valid.
RatePlan / RatePlanDescription / Text0..1A text description of the rate
RatePlan / AdditionalDetails0..n

Container for additional information for the room provided by the source channel

See AdditionalDetailsType

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

RoomStay / GuestCounts / GuestCount

0..3

How many guests will be staying in the room. The count is split over potentially three GuestCount elements under GuestCounts, one for each type of guest: adult, child or infant.

@AgeQualifyingCode

1

Specifies the guest type for this GuestCount - uses OTA Spec for identifiers, will be one of three values
10 - Adult
8 - Child
7 - Infant

@Count

1

The actual count for this type of guest

RoomStay / TimeSpan

1

Contains the timespan which this RoomStay covers

@Start

1

Check in date

@End

1

Check out date

RoomStay / Total

0..1

The total amount of the RoomStay. Will add up to the sum of Rate / Total*NumberOfUnits. If no Rate / Total is present, will be the sum of Rate / Base*NumberOfUnits plus any additional costs, such as fees/services etc. IE The total cost for the RoomStay.

NOTE: It is possible that some OTAs do not provide any form of Rate information and as such a RoomStay / Total cannot be provided in such cases. Currently Hotelbeds (HBD) is a known channel that does not always provide Rate information.

See TotalType

RoomStay / BasicPropertyInfo

0..1

Holds information about the Hotelier which this reservation is for.

BasicPropertyInfo will always be sent as either part of the RoomStay or Retrieve Reservations#ResGlobalInfo, depending on your setup in pmsXchange. We recommend receiving the BasicPropertyInfo as part of the ResGlobalInfo due to how Booking.com cancellation messages are sent.

If you are requesting reservations for all your hotels, using a single OTA_ReadRQ (centralised) we recommend using ResGlobal / BasicPropertyInfo / @HotelCode.

@HotelCode

1

The code for the Hotel for which the booking was made.

RoomStay / ServiceRPHs / ServiceRPH0..nContains links to any service or extra charges for the room
@RPH1Links a Service/@ServiceRPHA to this RoomStay

RoomStay / ResGuestRPHs / ResGuestRPH

0..n

Used to link guests from the ResGuests list to the RoomStay

@RPH

1

Links a ResGuest/@ResGuestRPH to this RoomStay

RoomStay / Comments / Comment / Text

0..1

RoomStay comments

RoomRateType

ElementNumberDescription

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.

@RoomTypeCode

1

The code of the room booked

@NumberOfUnits

1

Always 1. Each room will be listed in it's own RoomStay element.

@RatePlanCode

1

This is the rate booked for the room type code listed in the RoomTypeCode attribute.

RoomRate / Rates

0..1

Container for the daily rate breakdown information, if none was provided by the channel this will be omitted

Rates / Rate1..nThe Rate element contains a timespan with daily rate information. The dates covered in the Rates will cover all the dates in the RoomStay/TimeSpan element.

@RateTimeUnit

1

Always "Day"

@EffectiveDate

1

The starting date of the rate in the form yyyy-MM-dd. This date is inclusive.

@ExpireDate

1

ExpireDate is the first day after the applicable period (e.g. when expire date is 2012-04-03 the last date of the period is 2012-04-02). Format yyyy-MM-dd. This date is exclusive.

@UnitMultiplier

1

Will be equal to the number of days between EffectiveDate and ExpireDate. Multiply with the UnitMultiplier to get the total cost for the date span.

Rate / Base

0..1

Specifies the base per-day rate for the room. This is the gross amount charged for the room, not including any discounts or extra charges.

See TotalType

Rate / Total
0..1

The total amount charged for the Rate. Will be equal to the Base amount with the extras and discounts applied. Note that the Total is gross, in other words the FULL amount charged for the per date rate as provided by the source channel.

NOTE: It is possible that some OTAs do not provide any form of Rate information and as such a RoomRate / Rate / Total cannot be provided in such cases. Currently Hotelbeds (HBD) is a known channel that does not always provide Rate information.

NOTE: Any extras that are to be included in the RoomRate total will be linked through the ServiceRPH node.

See TotalType

RoomRate / ServiceRPHs / ServiceRPH0..n

Contains links to any service or extra charges for the rate

@RPH1..nLinks a Service/@ServiceRPHA to this RoomRate

AdditionalDetails

ElementNumberDescription
AdditionalDetails / AdditionalDetail0..nContainer for additional information provided by the source channel for the rate

@Type

1

Describes the additional information, please refer to the OTA Additional Detail Type (ADT) Code Table

Some common usages are 

43: Meal plan information
15: Promotion information

@Code0..1A reference code provided by the source channel for the additional details. For example promotional codes
AdditionalDetail / DetailDescription0..1
AdditionalDetail / DetailDescription / Text1..nThe actual details provided by the channel

GuaranteeType

ElementNumberDescription

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

ProfilesType

ElementNumberDescription
Profiles / ProfileInfo1..nProfile 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 / PersonName0..1Profile name details. Always present for type Customer.
PersonName / NamePrefix0..1Name 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 / CompanyName0..1Company name
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

ServiceType

The Service structure is used for passing on information about charges for extras and services. Services can be provided at the HotelReservation level (no ServiceRPH) or to a RoomStay or RoomRate. The ServiceRPH serves only to link a charge to a room or a rate.

All Service totals provided should be considered full amounts added to the base reservation charge. In other words, the charges are not per person or per day but full charges. The total amounts provided for the RoomStay and Reservation should be considered as inclusive of extras.

ElementNumberDescription

@ServiceInventoryCode

1

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.

@ServiceRPH0..1This links a Service to a RoomStay or a RoomRate. The absence of a ServiceRPH indicates that this is a HotelReservation level charge
@Inclusive1Always 'true', PmsXchange reports totals as inclusive of charges and extras

@Quantity

0..1

The number of units included in the charge.

@ID0..1The reference id provided for a extra/service by the source booking channel
@ID_Context0..1If ID present, will always be 'CHANNEL'
@Type1A reference to the type of object defined by the UniqueID element. Always "18" to indicate other in the OTA Unique Id Type (UIT) table
Service / Price1Container for the price
Price / Base0.1

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

See BaseType (for details)

Price / Total1The total amount for the extra charge for all units. See TotalType
Price / RateDescription / Text0..1A text description of the service/extra
Service / ServiceDetails0..1
ServiceDetails / TimeSpan0..1Start date for which the extra charge applies
@Start0..1Start date for which the extra charge applies
@End0..1End date for which the extra charge applies. This is an inclusive date, the last date for which the charge applies

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

TotalType

ElementNumberDescription
@CurrencyCode0..1The ISO currency code for the total
@AmountAfterTax0..1The total amount after tax
@AmountBeforeTax0..1The total amount before tax
Taxes0..1

The total tax amount for the TotalType

See TaxesType

@Amount0..1The total tax amount

TaxesType

The tax breakdown will be provided in the case where the original reservation contained detailed tax breakdowns.

ElementNumberDescription
Taxes / Tax0..nZero to many tax breakdowns
@Code1The type of tax being applied to the total. Refer to the code table OTA Fee Tax Type (FTT)
@Percentage0..1Tax percentage
@Amount0..1Tax amount
Tax / TaxDescription / Text0..1Text description of the tax