Skip to main content

Technical Overview

Prerequisites

To ensure the successful execution of this API, the following data elements must be present in the Sabre session (“AAA”) prior to calling EnhancedHotelBookRQ:

  • Traveler's name
  • (Legacy booking path) Travel agency's name or Travel agency's address
  • (Content Services for Lodging path) Travel agency's name and Travel agency's address

You can can achieve this by adding these data elements via PassengerDetailsRQ prior to the call to EnhancedHotelBookRQ or by retrieving an existing reservation via GetReservationRQ / TravelItineraryReadRQ.

Additionally, a valid Hotel Booking Key is required. This is the key element to trigger the hotel booking process.

Note: More details on the Hotel Booking Key can be found in the Hotel Booking Key section below.

General Booking Logic

EnhancedHotelBookingRQ performs several steps when booking a hotel room:

  1. Decodes and retrieves shopped rate details based on the data provided by the Hotel Booking Key.
  2. Depending on the data of the booking key and user input, follows one of the following three strategies to book the desired hotel rate:
    • Aggregator hotel via CSL
    • GDS hotel via CSL
    • GDS hotel as a legacy segment

Note: Details on these booking strategies are available in the Usage of the @bookGDSviaCSL Flag section below.

  1. If the booking is successful, the API will validate the newly added segment statuses as returned by the hotel vendor or aggregator (HK/SS/NN/PN/UC/NO):
    • HK/SS/NN are considered successful (non-error) status codes
    • UC/NO are considered unsuccessful status codes and the API will return an error
    • PN will always be returned for aggregator bookings and is considered a successful (non-error) status code. See the table below for more details.
  2. Returns the details of the newly added segment.
Status Code Short Description Full Description
HK CONFIRMED The status code HK indicates holds confirmed status.
NN ON_REQUEST The status code NN indicates a pending request to the vendor, this is normally a temporary status code returned when the communication to a vendor is slow.
If this code persists after redisplaying a reservation it likely indicates a breakdown in communication between Sabre and the vendor.
NO UNCONFIRMED The status code NO indicates the vendor denied the booking request with NO action. You must cancel the denied segment and request an alternate booking.
If NO status is returned by a vendor on a previously confirmed segment, it may indicate that the Sabre PNR is out of synch with the vendor records (the records do not match). Contact the vendor to validate the PNR data.
PN PENDING PN will always be returned for aggregator bookings. The confirmation number at this time is created by Sabre and not the vendor. At time of commit (End Transaction), this status should change to either HK or UC:
- If HK, the previous confirmation number will be overwritten with the one created by the vendor.
- If the segment remains in PN status at time of Commit (End Transaction), this indicates something has gone wrong with the request and you will need to follow up with the aggregator manually. Segments in PN status cannot be updated by the API user.
SS CONFIRMED The status code SS indicates a successful Sabre system response. The segment sold through Sabre or a sell message was sent to the vendor.
UC UNCONFIRMED The status code UC indicates the segment is not confirmed. Cancel the segment and request an alternative booking.

Detailed Booking Execution

Hotel Booking Key

For the booking process to commence, a Hotel Booking Key needs to be passed at /EnhancedHotelBookRQ/BookingInfo/BookingKey.

XML snippet below:

<EnhancedHotelBookRQ version="2.0.0" xmlns="http://services.sabre.com/sp/enhanced/hotel/book/v2">
    <BookingInfo>
        <BookingKey>d9e73f0d-5f90-4b43-9c86-2d88a732604f</BookingKey>
    </BookingInfo>
    ...

A Hotel Booking Key is obtained as part of the response of the Hotel Price Check API (SOAP | REST).

Note: For additional details on general workflow usage, and the need for the Hotel Price Check API, refer to the Content Services for Lodging (CSL) Product Collection.

The Enhanced Hotel Book API will automatically decode the booking key, obtain the hotel property ID, rate details, and determine the source (GDS or Aggregator) in order to execute the booking through the appropriate vendor.

Usage of the @bookGDSviaCSL Flag

The Enhanced Hotel Book API offers the same schema for booking both traditional GDS hotel content as well as new aggregator content. The flag /EnhancedHotelBookRQ@bookGDSviaCSL allows users to decide how to book GDS hotel content:

If the user specifies @bookGDSviaCSL=true:

<EnhancedHotelBookRQ bookGDSviaCSL="true" xmlns="http://services.sabre.com/sp/enhanced/hotel/book/v2" version="2.0.0">
...

or does not specify this field default = true:

<EnhancedHotelBookRQ xmlns="http://services.sabre.com/sp/enhanced/hotel/book/v2" version="2.0.0">
...

the GDS lodging content will be booked as a CSL segment.

If the user specifies @bookGDSviaCSL=false:

<EnhancedHotelBookRQ bookGDSviaCSL="false" xmlns="http://services.sabre.com/sp/enhanced/hotel/book/v2" version="2.0.0">
...

The GDS lodging content will be booked as traditional GDS segment.

To sum it up, depending on the data of the booking key and usage of this flag, the API will follow one of the following three strategies to book the desired hotel rate:

  • Book Aggregator as CSL segment
  • Book GDS as CSL segment
  • Book GDS as legacy segment

Booking Method (Guarantee or Deposit)

To book lodging content, a booking method needs to be specified. The two most common options are guarantee or deposit, which is indicated via the following element in the API request: /EnhancedHotelBookRQ/PaymentInformation@Type

The API accepts two values in this attribute: GUARANTEE or DEPOSIT.

@Type="GUARANTEE" and credit card form of payment is the most common method for booking lodging content, but you will need to validate specific criteria per vendor.

The list of options is listed below (each specific type may or may not be accepted per vendor):

Guarantee Deposit
Credit Card Y Y
Agency (Name & Address) Y Y
Agency IATA Y
Company (Name & Address) Y
Corporate Discount Code Y Y
Sabre Virtual Payment Y Y

A third option is available; normally referred to as late arrival (or simply “LATE”).

This method is supported by some hotel suppliers and allows customers to make a booking without any form of payment. This can be specified by completely omitting the /EnhancedHotelBookRQ/PaymentInformation section.

To determine which option should be used at time of booking, you can interrogate the specific guarantee conditions from the GetHotelAvailRQ response:

/GetHotelAvailRS/HotelAvailInfos/HotelRateInfo/Rooms/Room/RatePlans/RatePlan/RateInfo/Guarantee@GuaranteeType

Possible options are: GUAR, DEP or LATE.

Below is an XML sample with @Type="GUARANTEE" and a credit card form of payment:

<EnhancedHotelBookRQ xmlns="http://services.sabre.com/sp/enhanced/hotel/book/v2" version="2.0.0">
    <BookingInfo>
        <BookingKey>...</BookingKey>
    </BookingInfo>
    <Rooms>
        ...
    </Rooms>
    <PaymentInformation Type="GUARANTEE">
        <FormOfPayment>
            <PaymentCard>
                <PaymentType>CC</PaymentType>
                <CardCode>AX</CardCode>
                <CardNumber>4111111111111111</CardNumber>
                <ExpiryMonth>12</ExpiryMonth>
                <ExpiryYear>2019</ExpiryYear>
                <FullCardHolderName>
                    <FirstName>Max</FirstName>
                    <LastName>Power</LastName>
                </FullCardHolderName>
                <CSC>134</CSC>
                <Address>
                    <AddressLine>Wadowicka 6</AddressLine>
                    <CityName>Krakow</CityName>
                    <StateProvince code="KR"/>
                    <StateProvinceCodes>
                        <Code>KR</Code>
                    </StateProvinceCodes>
                    <PostCode>30-415</PostCode>
                    <CountryCodes>
                        <Code>PL</Code>
                    </CountryCodes>
                </Address>
            </PaymentCard>
        </FormOfPayment>
    </PaymentInformation>
</EnhancedHotelBookRQ>

Special Use Case for the Sabre Virtual Payment (SVP) Payment Method

Starting with version 2.1.0 of the API, Enhanced Hotel Book provides the capability to book CSL content by means of a Sabre Virtual Payments (SVP) account details. Please check this help page to read about the prerequisites needed to enable this payment type. To successfully book a room using this booking method, pass all required values using /EnhancedHotelBookRQ/PaymentInformation/FormOfPayment/VirtualCard. The required values are listed below:

Element / attribute Description
/PaymentInformation/@Type Payment method. Choose “GUARANTEE”.
CustomerAccountCode The customer account code for the Sabre Virtual Payments.
Agency/@Email Agency contact e-mail address.
/HotelInfo/@Fax Hotel fax number.
/HotelInfo/@HotelName Hotel name. Pass the value from: HotelPriceCheckRS/PriceCheckInfo/HotelInfo/@HotelName
/RoomDescription/@Name Room name. Pass the value from: HotelPriceCheckRS/PriceCheckInfo/HotelRateInfo/Rooms/Room/RoomDescription/@Name
/RoomDescription/Text Room text description. Pass the value from: HotelPriceCheckRS/PriceCheckInfo/HotelRateInfo/Rooms/Room/RoomDescription/Text
/RateInfo/@AmountAfterTax Booking total amount. Pass the value from: HotelPriceCheckRS/PriceCheckInfo/HotelRateInfo/RateInfos/RateInfo/@AmountAfterTax
/RateInfo/@CurrencyCode Currency code. Pass the value from: HotelPriceCheckRS/PriceCheckInfo/HotelRateInfo/RateInfos/RateInfo/@CurrencyCode
/SpecialInstructions/SpecialInstruction Use this to inform the hotel of any extra charges that will be covered by the virtual card. If the card is used to cover the room only, pass the “Room Only” value. If the card is meant to cover the room plus all the non-complimentary services (such as: parking, Internet access, etc) do not forget to include them here as well.

XML sample below:

<EnhancedHotelBookRQ xmlns="http://services.sabre.com/sp/enhanced/hotel/book/v2_1" version="2.1.0">
    <BookingInfo>
        <BookingKey>...</BookingKey>
    </BookingInfo>
    <Rooms>
        ...
    </Rooms>
    <PaymentInformation Type="GUARANTEE">
        <FormOfPayment>
            <VirtualCard>
                <CustomerAccountCode>SABRECARD</CustomerAccountCode>
                <Agency Email='sp.support@sabre.com'/>
                <HotelInfo Fax='123456789' HotelName='Hotel Suites'/>
                <RoomDescription Name='BOOK EARLY N SAVE NO REFUNDS'>
                    <Text>1 KING BED LEISURE NONSMOKING WITH FREE WI FI ACCESS</Text>
                </RoomDescription>
                <RateInfo AmountAfterTax="356.02" CurrencyCode="USD"/>
                <SpecialInstructions>
                    <SpecialInstruction>Room Only</SpecialInstruction>
                </SpecialInstructions>
            </VirtualCard>
        </FormOfPayment>
    </PaymentInformation>
</EnhancedHotelBookRQ>

PNR Information at Segment Sell

The hotel segment will contain the VCN as the form of payment and the PNR will be updated to include the Deployment ID:

PNR Example

1 HHL HX HK1 MIA IN20SEP Q-OUT22SEP 2NT 54937 H /DCHX

AMPTON INN MIAMI 1A0DLV4 -1/ 149.00USD/CMN-C/CMT-COMMISSIONAB

LE/TAC-10.00 PCT/G*VCNSABREONE-HOTEL RES PRO1122/C72H/SI-INCLUD

E INTERNET-CF- 83814146
Agencies with PNAPNR-ON (Use Passenger Association and New FOP field)**

The VCN and Deployment ID are included in the *FOP field. If the VCN is not present in the *FOP field, it will be added with Use Type Hotels. If the VCN is already present in the *FOP field, the Deployment ID will be added under the existing form of payment:

Example – Host Display

New VCN FOP

*FOP«                                                           
FORM OF PAYMENT          
  1. VIRTUAL CARD TYPE   
     *VCNSABREAIRONE     
                                   UHL                           
     DEPLOYMENT ID: 10259127 

Existing VCN FOP_

*FOP«                                                           
FORM OF PAYMENT         
  1. VIRTUAL CARD TYPE  
     *VCNSABREAIRONE    
     DEPLOYMENT ID: 0001122333    DOC:0012233449922
     DEPLOYMENT ID: 10259127      
Agencies with PNAPNR-OFF (Passenger Association is not active)

The system will add a historical remark with the Deployment ID:

Example – Host Display

*P5H«
15.H-*VCNSABREAMEX DEPLOYMENTID 10136274

PNR Information after ending/committing the transaction

  • When the reservation is completed and the hotel booking is successful, the confirmation number and status of the Deployment ID will be added to the PNR.
  • If the hotel booking is denied, the system will remove the Deployment ID and will send a cancel notification to Conferma.
  • A pending status is not valid when using VCN FOP; the reservation must be confirmed to be able to continue. If the booking receives a pending (PN) status, that means that the reservation is not confirmed on the hotel side. The system will then remove the Deployment ID and will send a cancel notification to Conferma.

Storage of Confirmation Code

PNRPNR-ON

*FOP«                                                          
FORM OF PAYMENT           
  1. VIRTUAL CARD TYPE    
     *VCNSABREAIRONE      
     DEPLOYMENT ID: 10259127  CONF:  5899115952085          

Example – GetReservationRS

<or114:FormOfPayment migrated="false">
    <or114:VirtualCard>
        <or114:CustomerAccountCode>VISAMULTI</or114:CustomerAccountCode>
        <or114:Transactions>
            <or114:Transaction index="1" paymentReferenceNumber="01411567083634295819">
                <or114:LastUpdateTime>2019-08-29T08:00:39</or114:LastUpdateTime>
                <or114:DeploymentId>10724395</or114:DeploymentId>
                <or114:ConfirmationNumber>EAN1234</or114:ConfirmationNumber>
            </or114:Transaction>
        </or114:Transactions>
    </or114:VirtualCard>
</or114:FormOfPayment>

PNRPNR-OFF

*P5H«
15.H-*VCNSABREAMEX DEPLOYMENTID 10136274                  
16.H-*VCNSABREAMEX CONF/1234567890      

Example – GetReservationRS

         <stl19:Remarks>
          <stl19:Remark index="1" id="48" type="HS" elementId="pnr-48">
            <stl19:RemarkLines>
              <stl19:RemarkLine>
                <stl19:Text>*VCNAMEXMULTI DEPLOYMENTID 10724532</stl19:Text>
              </stl19:RemarkLine>
            </stl19:RemarkLines>
          </stl19:Remark>
        </stl19:Remarks>

Deployment ID Status

  3.H-*/SVP*01 DEPLOYMENTID 10453099 DEPLOYED ***********
  4.H-*/SVP-01 HTL/2309/2609/1/00171322/2114

Where:

Example Description
SVP*01 SVP-01 Hotel Segment (first hotel segment)
10453099 Deployment ID
2309 Check-in date
2609 Check-out date
00171322 Confirmation code
2114 Property number

Example – GetReservationRS

<stl19:Remarks>
    <stl19:Remark index="1" id="51" type="HS" elementId="pnr-51">
        <stl19:RemarkLines>
            <stl19:RemarkLine>
                <stl19:Text>*/SVP*01 DEPLOYMENTID 10724530 DEPLOYED ***********</stl19:Text>
            </stl19:RemarkLine>
        </stl19:RemarkLines>
    </stl19:Remark>
    <stl19:Remark index="2" id="52" type="HS" elementId="pnr-52">
        <stl19:RemarkLines>
            <stl19:RemarkLine>
                <stl19:Text>*/SVP-01 HTL/0110/0310/1/2109054215/36848</stl19:Text>
            </stl19:RemarkLine>
        </stl19:RemarkLines>
    </stl19:Remark>

Ignore or Cancel before ending/committing the transaction

If the sell operation is ignored, or the hotel segment is cancelled before the first COMMIT, a cancelation message will be sent to Conferma. This will cancel the Deployment ID and the information will not be stored in the PNR.

Hotel Cancelation after ending/committing the transaction

If the hotel reservation is cancelled after it is completed, the system will send a cancel notification to Conferma. The reservation will be updated to reflect the new status of the Deployment ID.

Example

*P5 
REMARKS
  1.H-CONFERMA-GETTHERETEST
  2..UU1-1234
  3..UU2-DAVE BROWN
  4.H-*/SVP*01 DEPLOYMENTID 10062605 CANCELLED ***********
  5.H-*/SVP-01 HTL/2309/2609/1/66659921/2114

Examples

Agency with PNAPNR-ON, reservation contains 2 hotel segments:

Deployment ID and Confirmation Numbers

*FOP«                                                           
  1. VIRTUAL CARD TYPE      
     *VCNSABREAIRONE        
     DEPLOYMENT ID: 10259127  CONF:  58991159              
     DEPLOYMENT ID: 10259129  CONF:  58991302             
*P5«                                                            
REMARKS                                                         
  1.H-*/SVP*01 DEPLOYMENTID 10259127 DEPLOYED ***********
  2.H-*/SVP-01 HTL/2309/2609/1/58991159/2114
  9.H-*/SVP*02 DEPLOYMENTID 10259129 DEPLOYED ***********
 10.H-*/SVP-02 HTL/2909/0210/1/58991302/2129

Aency with PNAPNR-OFF, reservation contains 2 hotel segments:

*P5«                                                            
REMARKS                                                         
  1.H-*VCNSABREAIRONE DEPLOYMENTID 10453099    
  2.H-*VCNSABREAIRONE CONF/00171322   
  3.H-*/SVP*01 DEPLOYMENTID 10453099 DEPLOYED ***********
  4.H-*/SVP-01 HTL/2309/2609/1/00171322/2114
 11.H-*VCNSABREAIRONE DEPLOYMENTID 10453100     
 12.H-*VCNSABREAIRONE CONF/00172944     
 13.H-*/SVP*02 DEPLOYMENTID 10453100 DEPLOYED ***********
 14.H-*/SVP-02 HTL/2309/2609/1/00172944/2114

Agency cancel hotel segment:

Original Reservation

*N*I*P5*P6«
1.1JONES/D MR
 1  HHL HI HK1 LHR IN23SEP T-OUT26SEP   3NT    2114 HO    /DCHI
LIDAY INN MAYFAIR 1STN013A-2/  289.00GBP/CMN-C/CMT-COMMISSIONAB
LE/AGT99999992/G*VCNSABREONE-CONFERMA DUMMY CARD/C04P/SI-FA-CF-66659921- 
REMARKS
  1.H-CONFERMA-GETTHERETEST
  2..UU1-1234
  3..UU2-DAVE BROWN
  4.H-*/SVP*01 DEPLOYMENTID 10062605 DEPLOYED ***********
  5.H-*/SVP-01 HTL/2309/2609/1/66659921/2114
RECEIVED FROM - SVP ON BEHALF OF 148

Segment is cancelled

*N*I*P5*P6«
1.1JONES/D MR
NO ITIN  
REMARKS
  1.H-CONFERMA-GETTHERETEST
  2..UU1-1234
  3..UU2-DAVE BROWN
  4.H-*/SVP*01 DEPLOYMENTID 10062605 CANCELLED ***********
  5.H-*/SVP-01 HTL/2309/2609/1/66659921/2114
RECEIVED FROM - SVP ON BEHALF OF 148

State Management & Authentication

Enhanced Hotel Book is available in SOAP/XML and behaves in a stateful way, making it adaptable to most workflows implemented today by our current API ecosystem.

To successfully invoke a stateful API, a valid session-based token is required; these types of tokens are available upon successful execution of the SessionCreateRQ API.

If you prefer to book hotel content in a stateless way, we've expanded the capabilities of these two APIs:

  • Create Passenger Name Record (to support booking of new reservations) SOAP | REST
  • Update Passenger Name Record (to support adding bookings into existing reservations) SOAP | REST

Both APIs behave in a stateless way and can be consumed via session-less (ATK) tokens.

The APIs are available in both SOAP/XML & REST/JSON.

Compliance with Payment Services Directive (PSD2)

Starting with version 2.2.0 of the API, Enhanced Hotel Book provides the capability to pass or reference Strong Customer Authentication (SCA) data during a payment card transaction.

Adding strong customer authentication data to a payment card

If you wish to include SCA information, send all applicable data elements through the /EnhancedHotelBookRQ/PaymentInformation/FormOfPayment/PaymentCard/StrongCustomerAuthentication element.

Notes:

  • Booking agents are responsible for determining which authentication data needs to be passed to the merchant through Sabre
  • Enhanced Hotel Book supports adding SCA data elements only for CSL hotel bookings

Referencing an existing payment card and/or strong SCA data

If you have already added a payment card (with or without SCA data) prior to a call to Enhanced Hotel Book, you may reference to it by means of sending its identifier.

Instead of passing full payment card information, use the /EnhancedHotelBookRQ/PaymentInformation/FormOfPaymentReference element to specify the card ID and/or the SCA data.

The identifier of the payment card can be found in the Retrieve Itinerary API response in the following location: GetReservationRS/Reservation/OpenReservationElements/OpenReservationElement/@id

The identifier of the Strong Customer Authentication data can be in the Retrieve Itinerary API response in the following location: GetReservationRS/Reservation/OpenReservationElements/OpenReservationElement/FormOfPayment/PaymentCard/StrongCustomerAuthentication/@Id

Once this data is retrieved, ensure to add the card security code to the /EnhancedHotelBookRQ/PaymentInformation/FormOfPaymentReference/@cardSecurityCode element.

Note: Enhanced Hotel Book supports referencing payment card and/or SCA data elements for both legacy GDS and CSL hotel bookings.