Skip to main content
The OTA_HotelResRS (Hotel Reservation Response) confirms quote or commit processing for a hotel booking and returns room-level totals, linked guest profiles, partner references, cancellation policies, and optional TPA extensions. It is returned in reply to an OTA_HotelResRQ of type Quote or Commit.

Purpose

  • Confirm successful processing (<Success/>) or return error diagnostics (<Errors/>). Error Scenarios.
  • Return one HotelReservation with one or more RoomStay items, linked ResGuests, optional Services, and booking-level context under ResGlobalInfo.
  • Quote (ResStatus="Quote" in the request): verify availability, totals, and cancellation policy without creating a reservation ID at Axis Data (the client reference is echoed).
  • Commit (ResStatus="Commit" in the request): create a binding booking if accepted, with penalties per contract.

Structure – Root Element

<OTA_HotelResRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="2008.1">
  <Success/>
  ...
</OTA_HotelResRS>
When <Success/> is absent, inspect <Errors> for diagnostics; multiple <Error> items may be returned. Error Scenarios

Structure – Core Elements

HotelReservation

Envelope and item for the reservation response. Contains: RoomStays, optional Services (e.g., board), ResGuests, ResGlobalInfo, and TPA_Extensions.

RoomStays

Each RoomStay represents one reserved room (or quoted room) for the booking. It is very similar as the RoomStay returned in the avail response.
  • RoomStay@RPH is the room key used across the response; IndexNumber is a 1‑based display index.
  • Includes room identification (RoomTypes/RoomType@RoomTypeCode), RoomDescription, pricing at room level (Total), stay dates (TimeSpan@Start/End), and links to guests/services via ResGuestRPHs / ServiceRPHs.
  • Property context can be repeated under RoomStay/BasicPropertyInfo when needed.
  • Under Features, the booked board and a short description can be found.
  • ResGuestRPH and ServiceRPH link the Services and ResGuests to this RoomStay.
  • Total@AmountAfterTax returns the rate for this RoomStay.
Example
<RoomStay RPH="1" IndexNumber="1">
    <RoomTypes>
        <RoomType RoomTypeCode="RMSD000000">
            <RoomDescription>
                <Text Language="EN">Standard Room</Text>
            </RoomDescription>
        </RoomType>
    </RoomTypes>
    <RoomRates>
        <RoomRate RoomTypeCode="RMSD000000">
            <Features>
                <Feature>
                    <Description>
                        <Text>BB</Text>
                        <Text Language="EN">Breakfast</Text>
                    </Description>
                </Feature>
            </Features>
        </RoomRate>
    </RoomRates>
    <BasicPropertyInfo HotelCode="AMTSES08UI" HotelName="Caserio de Lanzarote"/>
    <TimeSpan End="2026-07-24" Start="2026-07-17"/>
    <ResGuestRPHs>
        <ResGuestRPH RPH="1"/>
        <ResGuestRPH RPH="2"/>
        <ResGuestRPH RPH="3"/>
    </ResGuestRPHs>
    <ServiceRPHs>
        <ServiceRPH RPH="1"/>
    </ServiceRPHs>
    <Total CurrencyCode="EUR" AmountAfterTax="1050.00"/>
</RoomStay>

Services

Non-room services (e.g., board) appear under Services/Service and can be linked to a RoomStay via ServiceRPHs.
<Services>
    <Service ServiceInventoryCode="BB" ServiceRPH="1"/>
</Services>

ResGuests

Passenger/guest profiles for the booking, referenced from rooms and services via ResGuestRPH.
  • Adults AgeQualifyingCode="10"; Children "8"; Infants "7".
<ResGuests>
    <ResGuest AgeQualifyingCode="10" ResGuestRPH="1">
        <Profiles>
            <ProfileInfo>
                <Profile>
                    <Customer BirthDate="1996-09-04">
                        <PersonName>
                            <NamePrefix>Mr</NamePrefix>
                            <GivenName>Bender</GivenName>
                            <Surname>Bending</Surname>
                        </PersonName>
                    </Customer>
                </Profile>
            </ProfileInfo>
        </Profiles>
        <GuestCounts>
            <GuestCount Age="27"/>
        </GuestCounts>
    </ResGuest>

ResGlobalInfo

Holds booking totals, comments, partner/child references, cancellation penalties, handling office, and optional property/vendormessages context.

Totals

Booking-level roll‑up amount for all rooms and services.
<ResGlobalInfo>
  <Total CurrencyCode="EUR" AmountAfterTax="1050.00"/>
  ...
</ResGlobalInfo>

Comments

Returns the specified comments at the RQ.
<Comments>
  <Comment Name="Applicant Notice" CommentOriginatorCode="DISTRIBUTOR">
    <Text>late arrival - flight lands at 22:55 local time</Text>
  </Comment>
</Comments>

HotelReservationIDs

  • ResID_Type="36" — partner (distributor) reference (must be unique; prevents duplicates; print on voucher).
  • ResID_Type="37" — child references per item; associate with rooms/services via Item_RPH.
<HotelReservationIDs>
  <HotelReservationID ResID_Type="36" ResID_SourceContext="Client" ResID_Value="TEST_XXX"/>
  <HotelReservationID Item_RPH="1" ResID_Type="37" ResID_SourceContext="Client" ResID_Value="test_xxx_ac1"/>
</HotelReservationIDs>

CancelPenalties

Cancellation policy is linked to the room using CancelPenalty@Item_RPH (matching the room RPH). Deadlines can be expressed relative to arrival or booking.
<CancelPenalties>
  <CancelPenalty Item_RPH="1">
    <Deadline OffsetUnitMultiplier="0" OffsetTimeUnit="Hour" OffsetDropTime="AfterBooking" AbsoluteDeadline="2025-09-23T18:54:31"/>
    <AmountPercent Amount="1050.00" CurrencyCode="EUR" BasisType="WholeStay" Percent="100"/>
  </CancelPenalty>
</CancelPenalties>

BasicPropertyInfo

Optional property context at booking level; Vendor Messages can include local taxes or operational notices.
<BasicPropertyInfo HotelCodeContext="11111" AreaID="927" HotelName="Hostal Cuba" HotelCode="AMTSES08UI">
  <VendorMessages>
    <VendorMessage Title="IncidentsAndErrata" InfoType="5">
      <SubSection>
        <Paragraph>
          <Text>Tax Payable Locally, Currency: EUR, type: city tax</Text>
        </Paragraph>
      </SubSection>
    </VendorMessage>
    <VendorMessage Title="IncidentsAndErrata" InfoType="5">
      <SubSection>
        <Paragraph>
          <Text>Due to the local logistics infrastructure, there is a possibility that your meeting point for arrival and departure transfer may not be direct at the hotel door, Approx. Distance: > 600 m</Text>
        </Paragraph>
      </SubSection>
    </VendorMessage>
  </VendorMessages>
</BasicPropertyInfo>

Handling Office

Handling office details are provided under Profiles/ProfileInfo/Profile/CompanyInfo/CompanyName.
<Profiles>
  <ProfileInfo>
    <Profile>
      <CompanyInfo>
        <CompanyName CompanyShortName="OTS Headquarter Office" CountryCode="AT" Code="OTSHQ"/>
      </CompanyInfo>
    </Profile>
  </ProfileInfo>
</Profiles>

TPA_Extensions

Provider-specific details.

RateDetails

Breakdown by guest and stay day; includes per‑guest totals and booking‑level totals under Totals. Returned if Instance=PriceBreakdown is specified at the RQ.
<TPA_Extensions>
  <RateDetails>
    <GuestDetails ResGuestRPH="1" TotalAmount="1050.00" CurrencyCode="EUR" RateCode="Price">
      <RateComponents StayDay="1" ResGuestRPH="1" Code="AMT9" Edition="0" Rate="150" CurrencyCode="EUR" CodeType="STDRATE"/>
      <RateComponents StayDay="1" ResGuestRPH="1" Code="SMS1" Edition="0" Rate="15" CurrencyCode="EUR" CodeType="EXTR"/>
      <!-- … additional days … -->
    </GuestDetails>
    <Totals>
      <Total TotalType="Price" CurrencyType="Price" CurrencyCode="EUR" AmountAfterTax="1050.00" Override="false"/>
    </Totals>
  </RateDetails>

BookingStatus

Reservation status echo (TPA namespace), typically ReservationStatusType="Available" for a successful Quote/Commit.
  <ns1:BookingStatus xmlns:ns1="http://www.opentravel.org/OTA/2003/05/tpa" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns1:BookingStatusType" ReservationStatusType="Available"/>

Extras

Optional and included extras. Optional extras may be offered or booked; see IncludedInRate, Applicability, Amount, and ResGuestRPH.

Complete Examples

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelResRS
    xmlns="http://www.opentravel.org/OTA/2003/05" Version="2008.1">
    <Success/>
    <HotelReservations>
        <HotelReservation>
            <RoomStays>
                <RoomStay RPH="1" IndexNumber="1">
                    <RoomTypes>
                        <RoomType RoomTypeCode="RMSD000000">
                            <RoomDescription>
                                <Text Language="EN">Standard Room</Text>
                            </RoomDescription>
                        </RoomType>
                    </RoomTypes>
                    <RoomRates>
                        <RoomRate RoomTypeCode="RMSD000000">
                            <Features>
                                <Feature>
                                    <Description>
                                        <Text>BB</Text>
                                        <Text Language="EN">Breakfast</Text>
                                    </Description>
                                </Feature>
                            </Features>
                        </RoomRate>
                    </RoomRates>
                    <BasicPropertyInfo HotelCode="AMTSES08UI" HotelName="Caserio de Lanzarote"/>
                    <TimeSpan End="2026-07-24" Start="2026-07-17"/>
                    <ResGuestRPHs>
                        <ResGuestRPH RPH="1"/>
                        <ResGuestRPH RPH="2"/>
                        <ResGuestRPH RPH="3"/>
                    </ResGuestRPHs>
                    <ServiceRPHs>
                        <ServiceRPH RPH="1"/>
                    </ServiceRPHs>
                    <Total CurrencyCode="EUR" AmountAfterTax="1050.00"/>
                </RoomStay>
            </RoomStays>
            <Services>
                <Service ServiceInventoryCode="BB" ServiceRPH="1"/>
            </Services>
            <ResGuests>
                <ResGuest AgeQualifyingCode="10" ResGuestRPH="1">
                    <Profiles>
                        <ProfileInfo>
                            <Profile>
                                <Customer BirthDate="1996-09-04">
                                    <PersonName>
                                        <NamePrefix>Mr</NamePrefix>
                                        <GivenName>Bender</GivenName>
                                        <Surname>Bending</Surname>
                                    </PersonName>
                                </Customer>
                            </Profile>
                        </ProfileInfo>
                    </Profiles>
                    <GuestCounts>
                        <GuestCount Age="27"/>
                    </GuestCounts>
                </ResGuest>
                <ResGuest AgeQualifyingCode="10" ResGuestRPH="2">
                    <Profiles>
                        <ProfileInfo>
                            <Profile>
                                <Customer BirthDate="1996-09-05">
                                    <PersonName>
                                        <NamePrefix>Mrs</NamePrefix>
                                        <GivenName>Angelina</GivenName>
                                        <Surname>Bending</Surname>
                                    </PersonName>
                                </Customer>
                            </Profile>
                        </ProfileInfo>
                    </Profiles>
                    <GuestCounts>
                        <GuestCount Age="27"/>
                    </GuestCounts>
                </ResGuest>
                <ResGuest AgeQualifyingCode="8" ResGuestRPH="3">
                    <Profiles>
                        <ProfileInfo>
                            <Profile>
                                <Customer BirthDate="2018-09-06">
                                    <PersonName>
                                        <NamePrefix>Jr</NamePrefix>
                                        <GivenName>Ben</GivenName>
                                        <Surname>Bending</Surname>
                                    </PersonName>
                                </Customer>
                            </Profile>
                        </ProfileInfo>
                    </Profiles>
                    <GuestCounts>
                        <GuestCount Age="6"/>
                    </GuestCounts>
                </ResGuest>
            </ResGuests>
            <ResGlobalInfo>
                <Total CurrencyCode="EUR" AmountAfterTax="1050.00"/>
                <Comments>
                    <Comment Name="Applicant Notice" CommentOriginatorCode="DISTRIBUTOR">
                        <Text>late arrival - flight lands at 22:55 local time</Text>
                    </Comment>
                </Comments>
                <HotelReservationIDs>
                    <HotelReservationID ResID_Type="36" ResID_SourceContext="Client" ResID_Value="TEST_XXX"/>
                    <HotelReservationID Item_RPH="1" ResID_Value="test_xxx_ac1" ResID_Type="37" ResID_SourceContext="Client"/>
                    <HotelReservationID Item_RPH="1" ResID_Value="1" ResID_Type="37" ResID_SourceContext="Internal"/>
                </HotelReservationIDs>
                <CancelPenalties>
                    <CancelPenalty Item_RPH="1">
                        <Deadline OffsetUnitMultiplier="6" OffsetTimeUnit="Day" OffsetDropTime="BeforeArrival" AbsoluteDeadline="2026-07-11T00:00:00"/>
                        <AmountPercent Amount="367.50" CurrencyCode="EUR" BasisType="FullStay" Percent="35"/>
                    </CancelPenalty>
                    <CancelPenalty Item_RPH="1">
                        <Deadline OffsetUnitMultiplier="3" OffsetTimeUnit="Day" OffsetDropTime="BeforeArrival" AbsoluteDeadline="2026-07-14T00:00:00"/>
                        <AmountPercent Amount="150.00" CurrencyCode="EUR" NmbrOfNights="1" Percent="100"/>
                    </CancelPenalty>
                    <CancelPenalty Item_RPH="1">
                        <Deadline OffsetUnitMultiplier="0" OffsetTimeUnit="Day" OffsetDropTime="BeforeArrival" AbsoluteDeadline="2026-07-17T00:00:00"/>
                        <AmountPercent Amount="300.00" CurrencyCode="EUR" NmbrOfNights="2" Percent="100"/>
                    </CancelPenalty>
                </CancelPenalties>
                <BasicPropertyInfo HotelCodeContext="10121" AreaID="1012" HotelName="Caserio de Mozaga" HotelCode="AMTSES08UI">
                    <VendorMessages>
                        <VendorMessage Title="IncidentsAndErrata" InfoType="5">
                            <SubSection>
                                <Paragraph>
                                    <Text>Due to the local logistics infrastructure, there is a possibility that your meeting point for arrival and departure  transfer may not be direct at the hotel door</Text>
                                </Paragraph>
                            </SubSection>
                        </VendorMessage>
                    </VendorMessages>
                </BasicPropertyInfo>
                <Profiles>
                    <ProfileInfo>
                        <Profile>
                            <CompanyInfo>
                                <CompanyName CompanyShortName="OTS Headquarter Office" CountryCode="AT" Code="OTSHQ"/>
                            </CompanyInfo>
                        </Profile>
                    </ProfileInfo>
                </Profiles>
            </ResGlobalInfo>
            <TPA_Extensions>
                <RateDetails>
                    <GuestDetails ResGuestRPH="1" TotalAmount="450.00" CurrencyCode="EUR" RateCode="Price">
                        <RateComponents StayDay="1" ResGuestRPH="1" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
                        <RateComponents StayDay="2" ResGuestRPH="1" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
                        <RateComponents StayDay="3" ResGuestRPH="1" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
                        <RateComponents StayDay="4" ResGuestRPH="1" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
                        <RateComponents StayDay="5" ResGuestRPH="1" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
                        <RateComponents StayDay="6" ResGuestRPH="1" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
                        <RateComponents StayDay="6" ResGuestRPH="1" Code="FSO1" Edition="0" Rate="-90.00" CurrencyCode="EUR" CodeType="OFF"/>
                        <RateComponents StayDay="7" ResGuestRPH="1" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
                        <RateComponents StayDay="7" ResGuestRPH="1" Code="FSO1" Edition="0" Rate="-90.00" CurrencyCode="EUR" CodeType="OFF"/>
                    </GuestDetails>
                    <GuestDetails ResGuestRPH="2" TotalAmount="450.00" CurrencyCode="EUR" RateCode="Price">
                        <RateComponents StayDay="1" ResGuestRPH="2" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
                        <RateComponents StayDay="2" ResGuestRPH="2" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
                        <RateComponents StayDay="3" ResGuestRPH="2" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
                        <RateComponents StayDay="4" ResGuestRPH="2" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
                        <RateComponents StayDay="5" ResGuestRPH="2" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
                        <RateComponents StayDay="6" ResGuestRPH="2" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
                        <RateComponents StayDay="6" ResGuestRPH="2" Code="FSO1" Edition="0" Rate="-90.00" CurrencyCode="EUR" CodeType="OFF"/>
                        <RateComponents StayDay="7" ResGuestRPH="2" Code="AMT1" Edition="0" Rate="90.00" CurrencyCode="EUR" CodeType="STDRATE"/>
                        <RateComponents StayDay="7" ResGuestRPH="2" Code="FSO1" Edition="0" Rate="-90.00" CurrencyCode="EUR" CodeType="OFF"/>
                    </GuestDetails>
                    <GuestDetails ResGuestRPH="3" TotalAmount="150.00" CurrencyCode="EUR" RateCode="Price">
                        <RateComponents StayDay="1" ResGuestRPH="3" Code="ACPR3" Edition="0" Rate="30.00" CurrencyCode="EUR" CodeType="PAX"/>
                        <RateComponents StayDay="2" ResGuestRPH="3" Code="ACPR3" Edition="0" Rate="30.00" CurrencyCode="EUR" CodeType="PAX"/>
                        <RateComponents StayDay="3" ResGuestRPH="3" Code="ACPR3" Edition="0" Rate="30.00" CurrencyCode="EUR" CodeType="PAX"/>
                        <RateComponents StayDay="4" ResGuestRPH="3" Code="ACPR3" Edition="0" Rate="30.00" CurrencyCode="EUR" CodeType="PAX"/>
                        <RateComponents StayDay="5" ResGuestRPH="3" Code="ACPR3" Edition="0" Rate="30.00" CurrencyCode="EUR" CodeType="PAX"/>
                        <RateComponents StayDay="6" ResGuestRPH="3" Code="ACPR3" Edition="0" Rate="30.00" CurrencyCode="EUR" CodeType="PAX"/>
                        <RateComponents StayDay="6" ResGuestRPH="3" Code="FSO1" Edition="0" Rate="-30.00" CurrencyCode="EUR" CodeType="OFF"/>
                        <RateComponents StayDay="7" ResGuestRPH="3" Code="ACPR3" Edition="0" Rate="30.00" CurrencyCode="EUR" CodeType="PAX"/>
                        <RateComponents StayDay="7" ResGuestRPH="3" Code="FSO1" Edition="0" Rate="-30.00" CurrencyCode="EUR" CodeType="OFF"/>
                    </GuestDetails>
                    <Totals>
                        <Total TotalType="Price" CurrencyType="Price" CurrencyCode="EUR" AmountAfterTax="1050.00" Override="false"/>
                    </Totals>
                </RateDetails>
                <ns1:BookingStatus
                    xmlns:ns1="http://www.opentravel.org/OTA/2003/05/tpa"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns1:BookingStatusType" ReservationStatusType="Available"/>
                    <Extras/>
                </TPA_Extensions>
            </HotelReservation>
        </HotelReservations>
    </OTA_HotelResRS>

Best Practices

  1. Always supply a unique partner reference (ResID_Type="36") and reuse it for cancel/read operations.
  2. Use ResStatus="Quote" before Commit to confirm pricing, availability, and penalties.
  3. Provide NamePrefix for all adult guests and keep guest ordering consistent across rooms and services.
  4. Link rooms, guests and services using RPH consistently; use CancelPenalty@Item_RPH to map policies to rooms.
  5. For multi-room bookings, include each room as a separate RoomStay (up to 5 rooms) so combined availability is validated.
  6. When booking optional extras, include them in the request and consume them from TPA_Extensions/Extras in the response.