Reservations Delivery

Message Exchange Workflow

  • OTA_ReadRQ - request sent by PMS to pull undelivered reservations, modifications and cancellations.

  • OTA_ResRetrieveRS - response sent by pmsXchange with a list of reservations, modifications and cancellations.

  • OTA_NotifReportRQ - request sent by PMS to confirm after processing the reservations.

  • OTA_NotifReportRS - response sent by pmsXchange to acknowledge receipt.

  • OTA_HotelAvailNotifRQ - request sent by PMS with the real-time Availability changes for the reserved room types and stay dates.

  • OTA_HotelAvailNotifRS - response from pmsXchange to confirm whether the OTA_HotelAvailNotifRQ message has been processed successfully.

OTA_ReadRQ

The PMS should pull reservations every 2 to 5 minutes. This means that reservations, modifications, and cancellations should not be requested more frequently than every 2 minutes (e.g., not every 1 minute) and should not be requested less frequently than every 5 minutes (e.g., not every 10 minutes).

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

<OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2025-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>
Element / @Attribute
Type
M
Description

OTA_ReadRQ

Element

1

Root element for the request.

@xmlns

String

1

Defines the XML namespace for the request. Will be set to http://www.opentravel.org/OTA/2003/05

@EchoToken

String

1

Unique identifier for the request, used to match requests and responses.

@TimeStamp

DateTime

1

Time when the request was generated.

@Version

Decimal

1

Specifies the API version. Must be set to 1.0.

POS / Source / RequestorID

Element

1

PMS Code assigned by SiteMinder and remains the same throughout the messages

@Type

Integer

1

Fixed at 22 (ESRP)

@ID

String

1

ReadRequests

Element

1

ReadRequests / HotelReadRequest

Element

1

@HotelCode

String

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.

SelectionCriteria

Element

1

@SelectionType

String

1

Must be "Undelivered"

@ResStatus

Enumeration

0..1

Specifies the booking status:

Commit

Modify

Cancel

OTA_ResRetrieveRS

The message consists of a list of HotelReservation elements. The content may vary since pmsXchange delivers reservations from multiple upstream sources (Booking Channels), many of which have significantly different reservation formats and data structures.

In general, the following applies to HotelReservations:

  • A HotelReservation represents a single reservation made with an upstream system.

  • A HotelReservation can include one or more RoomStays, one for each booked room type.

  • A RoomStay signifies a stay in a specific room type over a continuous timespan; non-continuous stays (split stays) will result in multiple RoomStays.

  • A HotelReservation may have zero, one, or multiple ResGuests associated with either the RoomStay they occupy or the reservation itself.

Full list of HotelReservation attributes are accessible here: OTA_ResRetrieveRS.

The <Success/> element indicates a successful response. In this example, two new reservations are returned. The pmsXchange reservation identifiers are WTF-12345 and HTL-67890, with the corresponding message IDs being isuokfr1pyc2ntest7 and pbp6s5j08test9n0zi.

<OTA_ResRetrieveRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2025-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-12345"/>
      <UniqueID Type="16" ID="isuokfr1pyc2ntest7" 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-67890"/>
      <UniqueID Type="16" ID="pbp6s5j08test9n0zi" ID_Context="MESSAGE_UNIQUE_ID"/>
      <!-- HOTEL RESERVATION DETAILS OMITTED -->
    </HotelReservation>
  </ReservationsList>
</OTA_ResRetrieveRS>

OTA_NotifReportRQ

The PMS sends a confirmation message to pmsXchange for the delivery of reservations, modifications, or cancellations. If not confirmed, the information will be resent in response to the OTA_ReadRQ message. Confirmation of delivery does not guarantee that the reservation was successfully created in the PMS. The OTA_NotifReportRQ message can be used to confirm any erroneous deliveries.

The structure of the OTA_NotifReportRQ does not permit a mix of successfully processed and erroneous reservations in the same message. Successfully processed reservations must be confirmed in separate OTA_NotifReportRQ messages from those that could not be processed.

pmsXchange will automatically mark a reservation as 'Error' (fail) under the following conditions:

  • 20 Delivery Attempts: The reservation has been requested (OTA_ReadRQ) at least 20 times without receiving a valid OTA_NotifReportRQ.

  • 14-Day Timeout: No delivery attempts have been made for 14 days.

  • 1-Hour Timeout: At least one delivery attempt has been made, and it has been 1 hour since the first attempt.

Important: This mechanism is a fail-safe feature; we expect to receive either a 'Success' or 'Error' OTA_NotifReportRQ. It should not be relied upon for handling reservations that cannot be processed.

  • The presence of the <Success/> element indicates that the reservation was created in the PMS

  • The UniqueID Type 16 element informs pmsXchange which reservation message is being confirmed

  • The HotelReservationID holds the ID of the newly created reservation in the PMS

Reservation

<OTA_NotifReportRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2025-08-20T09:29:47+02:00" EchoToken="echo-abc123">
  <Success/>
  <NotifDetails>
    <HotelNotifReport>
      <HotelReservations>
        <HotelReservation CreateDateTime="2025-08-20T09:28:47+02:00" ResStatus="Book">
          <UniqueID Type="16" ID="qlmumfgwx85nlkgmtb"/>
          <ResGlobalInfo>
            <HotelReservationIDs>
              <HotelReservationID ResID_Type="14" ResID_Value="PMS-111333"/>
            </HotelReservationIDs>
          </ResGlobalInfo>
        </HotelReservation>
      </HotelReservations>
    </HotelNotifReport>
  </NotifDetails>
</OTA_NotifReportRQ>

Modification

<OTA_NotifReportRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2025-08-20T09:45:47+02:00" EchoToken="echo-abc123">
  <Success/>
  <NotifDetails>
    <HotelNotifReport>
      <HotelReservations>
        <HotelReservation LastModifyDateTime="2025-08-20T09:44:47+02:00" ResStatus="Modify">
          <UniqueID Type="16" ID="bxlumfgwx85nlkgmtc"/>
          <ResGlobalInfo>
            <HotelReservationIDs>
              <HotelReservationID ResID_Type="14" ResID_Value="PMS-111333"/>
            </HotelReservationIDs>
          </ResGlobalInfo>
        </HotelReservation>
      </HotelReservations>
    </HotelNotifReport>
  </NotifDetails>
</OTA_NotifReportRQ>

Cancellation

<OTA_NotifReportRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2025-08-20T09:45:47+02:00" EchoToken="echo-abc123">
  <Success/>
  <NotifDetails>
    <HotelNotifReport>
      <HotelReservations>
        <HotelReservation LastModifyDateTime="2025-08-20T09:44:47+02:00" ResStatus="Cancel">
          <UniqueID Type="16" ID="mxiumfgwx85nlktest"/>
          <ResGlobalInfo>
            <HotelReservationIDs>
              <HotelReservationID ResID_Type="14" ResID_Value="PMS-111333"/>
            </HotelReservationIDs>
          </ResGlobalInfo>
        </HotelReservation>
      </HotelReservations>
    </HotelNotifReport>
  </NotifDetails>
</OTA_NotifReportRQ>
Element / @Attribute
Type
M
Description

OTA_NotifReportRQ

Element

1

Root element for the request.

@xmlns

String

1

Defines the XML namespace for the request. Will be set to http://www.opentravel.org/OTA/2003/05

@EchoToken

String

1

Unique identifier for the request, used to match requests and responses.

@TimeStamp

DateTime

1

Time when the request was generated.

@Version

Decimal

1

Specifies the API version. Must be set to 1.0.

OTA_NotifReportRQ / Success

Element

0..1

Either Success or Error element present

OTA_NotifReportRQ / Errors

Element

0..1

Contains a list of errors if the reservation, modification or cancellation failed to process

Errors / Error

Element

1..n

Should be at least one node if there is an Errors Node

@Type

Integer

1

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.

@Code

Integer

0..1

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

OTA_NotifReportRQ / NotifDetails / HotelNotifReport

Element

1

HotelNotifReport / HotelReservations / HotelReservation

Element

1..n

One for each reservation being confirmed

@CreateDateTime

dateTime

0..1

The time the reservation was created in the PMS. Mandatory if ResStatus is "Book".

@LastModifyDateTime

dateTime

0..1

The time the reservation was updated in the PMS. Mandatory if ResStatus is Modify or Cancel.

@ResStatus

String

0..1

Specifies the booking status:

Commit

Modify

Cancel

HotelReservation / UniqueID

Element

1

The identifier of the reservation message as known to pmsXchange.

@Type

Integer

1

Value of '16'

@ID

String

1

UniqueID of Type 16 from the OTA_ResRetrieveRS

HotelReservation / ResGlobalInfo

Element

0..1

Mandatory if the reservation is part of a successful delivery batch

HotelReservation / ResGlobalInfo / HotelReservationIDs / HotelReservationID

Element

1

PMS reservation identifier

@ResID_Type

Integer

1

Value of '14'

@ResID_Value

String

1

The identifier of the reservation created by the PMS. This is the reservation ID in the PMS.

OTA_NotifReportRS

This message is sent to the PMS as a response to the OTA_NotifReportRQ message, confirming that pmsXchange successfully processed the request.

<OTA_NotifReportRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2025-08-20T09:30:47+02:00" EchoToken="echo-abc123">
  <Success/>
</OTA_NotifReportRS>

Last updated

Was this helpful?