Hotel Booking Request

Method

POST

Endpoint

The endpoint to use is:

https://api.holidayextras.co.uk/v1/hotel/LocationCode

For example, for Mercure at London Heathrow the endpoint is:

https://api.holidayextras.co.uk/v1/hotel/LHRMEA

Request Parameters

The parameters must be sent in the body of the request, as x-www-form-urlencoded data.

NB: All parameter names are case sensitive.

Name Data Type Format Mandatory? Additional Information
ABTANumber String [A-Z0-9] 5 chars Y This is also known as an ‘agent code’.
This will be confirmed to you by your Account Manager during set up.
Password String [A-Z0-9] 5 chars N* Password required for retail agent requests - intermediaries do not require a password.
This will be confirmed to you by your Account Manager during set up.
Initials String [A-Z] 3 chars N The initials of the Operator / Agent.
key String [A-Z] Y This will be assigned to you by your Account Manager during set up.
token String [0-9] 9 chars Y This is the same token used in the availability request.
ArrivalDate Date YYYY-MM-DD Y Date customer arrives at hotel.
Nights Integer 1, 2, 3, etc Y Number of nights the customer wants to stay in the hotel. NB: For European products it is only possible to book one night stays.
RoomCode String [A-Z0-9] 3 chars Y See RoomCodes for a list of valid codes.
Adults Integer [1-5] 1 char Y The number of adults occupying the room.
Children Integer [0-4] 1 char Y The number of children occupying the room.
ParkingDays Integer [0-9] 2 chars Y NB: The maximum duration accepted for ParkingDays is 30.
Title String [A-Z] 4 chars Y Title of lead passenger
Initial String [A-Z] 1 chars Y Initial of lead passenger
Surname String [A-Z] 20 chars Y Surname of lead passenger
Address[] String [A-Z0-9] 25 chars Y First line of address (house name / number and road) of lead passenger. If you require more than 1 address line, then you can replicate this field and increment the number in square brackets, i.e. “Address[1]” for address line 2, and so on. NB: This field can be set to NA
Town String [A-Z] 20 chars Y Town of address. NB: This field can be set to NA
County String [A-Z] 20 chars Y County of address. NB: This field can be set to NA
PostCode String [A-Z0-9] 10 chars Y Post code of address. NB: This field can be set to NA
DayPhone Integer [0-9] 20 chars max N The customer’s telephone number.
Email String [A-Z0-9] 50 chars Y The email address of customer.
CustomerRef String [A-Z0-9] 20 chars N Enter your Customer Reference to help match bookings for accounting purposes.
Remarks String [A-Z0-9] 60 chars N Pass in Remarks for notification such as COT REQUESTED in ROOM
Waiver Boolean [0,1] Y Defaults to 0 if not supplied.
DataProtection String [Y,N] N Does the customer consent to receiving offers from Holiday Extras? Y = Yes, will receive offers, N = No, customer data is protected. Defaults to No if not supplied.
PriceCheckFlag String [Y] Y Indicates a price check will be carried out prior to booking. If the price is lower in the system the booking will be made as the customer will benefit from a saving. If the price has changed and is higher than the price stated on availability, an error will return to explain that the price has increased, the booking can still be made but the customer must confirm that they will pay the higher amount. You should then resubmit the request changing the PriceCheckPrice with the new price.
PriceCheckPrice Float [0-9] Y Price of the product, received from the availability request or price check.
System String [A-Z] 3 chars Y* For European products, you need to pass in the value of System=ABG (the default is System=ABC, which is UK products only).
lang String [A-Z] 2 chars Y* Required for requests for European products. (Values available are en, de, it, es, pt and nl.)
Supplements/Code String [A-Z0-9] 5 chars N Product code of the upgrade to book. See below for more info on booking upgrades
Supplements/Date String YYYY-MM-DD Y The date to book the upgrade for. This should be brought forward from the upgrade availability request.
Supplements/Quantity Integer [0-9]1 char Y* For per room/booking upgrades, specify the required quantity
Supplements/Adults Integer [0-9]1 char Y* For per person upgrades, specify the number of adult passes
Supplements/Children Integer [0-9]1 char Y* For per person upgrades, specify the number of child passes
Supplements/TotalPrice Float [0-9] Y Mandatory for all upgrades. The total price of the upgrade, accounting for total quantity
Supplements/LoungeArrival String YYYY-MM-DD HH:mm Y* Mandatory for Lounge upgrades. Specifies the time the client wishes to enter the lounge

Booking Upgrades

It is possible to booking upgrade items at the same time as making a core product booking. Once the core product has been selected you must make an Upgrade availability request. Use the information in the response to pick the upgrades desired for the product. In the booking request any number of Supplements tags may be added but each must be for a unique upgrade. Multiple Supplements can be added in the request using the square bracket([]) notation e.g.

POST /v1/hotel/LGWSOF HTTP/1.1
Host: api.holidayextras.co.uk
Content-Type: application/x-www-form-urlencoded

ABTANumber=YourABTANumber&Password=YourPassword&Initials=YourInitials&key=YourKey&token=YourToken&ArrivalDate=2020-11-09&ArrivalTime=12:30&DepartDate=2020-11-17&DepartTime=13:45&Title=Mr&Initial=T&Surname=Test&Address=Holiday Extras Ltd&Address=Ashford Road&Town=Hythe&County=Kent&PostCode=CT214JF&Email=test@test.com&PriceCheckFlag=Y&PriceCheckPrice=50.05&CarColour=White&CarMake=Range Rover&CarModel=Vogue&Registration=TE17 STS&ReturnFlight=VIR19&Supplements[0][Code]=HXOST1&Supplements[0][Quantity]=1&Supplements[0][Date]=2020-11-09&Supplements[0][TotalPrice]=1.99&Supplements[1][Code]=STNSFS&Supplements[1][Date]=2020-11-09&Supplements[1][Adults]=2&Supplements[1][Children]=1&Supplements[1][TotalPrice]=21.00

For per Room or per Booking upgrades a Quantity must be supplied. For per Person upgrades the number of Adult and Children passes must be supplied. Depending on the upgrade it may also be necessary to supplier the number of Infants.

Pricing

A TotalPrice must be included with each supplement node. This should be calculated as follows;

  • Per Room or per Booking - Quantity x Price
  • Per Person - (Adults x AdPrice) + (Children x ChPrice)

*NOTE* When booking upgrades the cost of the upgrades should not be added to the PriceCheckPrice. This should only reflect the price of the core product.

FastTrack

When booking fast track passes you will receive links to the client’s fast track passes in the booking response. These can be added to your own confirmation emails and will be required by the client to use their passes.

Multiple rooms on same booking

Currently, we can only accept a maximum of 2 rooms per booking. If the customer needs more, you will need to make multiple requests. If an intermediary account, you should note that this would lead to multiple transactions on the credit card, and multiple charges, and therefore we advise against it.

The additional parameters for including a second room are:

Name Data Type Format Mandatory? Additional Information
SecondRoomType String [A-Z0-9] 2 chars N* This parameter is mandatory if the customer wishes to book two rooms at the same time. The room codes are as per Room Codes.
SecondRoomCode String Room Codes N NB: Please note that the room codes differ between availability and booking requests.
SecondRoomAdults Integer [1-5] 1 char N The number of adults occupying the second room.
SecondRoomChildren Integer [0-4] 1 char N The number of children occupying the second room.

UK Hotels with parking

The additional parameters for hotel with parking (where parking > 0 days) are:

Name Data Type Format Mandatory?
CarDropoffDate Date YYYY-MM-DD Y
CarDropoffTime Time HHMM Y
CarPickupDate Date YYYY-MM-DD Y
CarPickupTime Time HHMM Y
ReturnFlight String [A-Z0-9] 10 chars N
TerminalCode String [A-Z0-9] 2 chars N
Registration String [A-Z0-9] 20 chars N
CarMake String [A-Z0-9] 20 chars N
CarModel String [A-Z0-9] 20 chars N
CarColour String [A-Z0-9] 20 chars N

Payment

In the UK, we are PCI DSS compliant and so we do not accept customers’ payment details being passed to us via the API. Further details can be found in our section on Payment.

Please contact your Account Manager if you have any questions concerning payment.

Booking Terms and Conditions

It is important that the customer has access to the Terms and Conditions at the time of placing their booking and after. We highly recommend that these are made clear to the customer before booking.

For European products, please use the following link:

http://www.holidayextras.de/images/de-hx/pdf/agb.pdf

If you require translations of Terms and Conditions into other languages, you can simply change /de-hx/ (German) into nl-hx (Dutch), it-hex (Italian), pt-hx (Portuguese), fr-hx (French), es-hx (Spanish) or en-hx (English).

Hotel Booking Response

The hotel booking response will confirm that a booking has been placed in our system.

For a detailed explanation of the fields returned, please see below:

Field Additional Information
Booking/BookingRef This is the reference for this booking. It must be referred to in all communication with us concerning this booking. NB: Our booking references are up to 12 char alphanumeric (including 1/I and 0/O/Q).
Booking/AgentComm Commission you have earned from this booking.
Itinerary This section confirms details of the hotel on the booking.
Room This section confirms details of the room booked at the hotel.
ClientDetails Confirmation of the customer’s details that were sent in the booking request.
Pricing Confirmation of the price paid by the customer for the hotel room.
CurrentSupplements/Code Upgrade Code
CurrentSupplements/Name Name of the upgrade
CurrentSupplements/Price Price Paid for the upgrade
CurrentSupplements/NonDiscPrice The original price of the upgrade before any discounts
CurrentSupplements/Per The pricing basis for the product (booking/room/person)
CurrentSupplements/Adults The number of adult passes purchased
CurrentSupplements/Children The number of child passes purchased
CurrentSupplements/Date The date the upgrade has been purchased for
CurrentSupplements/Remarks Internal notes
CurrentSupplements/Canx Whether the upgrade can be cancelled
API_Header/Request A list of parameters that were sent in the booking request.

Booking Confirmation

We expect partners to create their own booking confirmations to send to customers, using the information provided in the booking response.

However, we also have capability to send booking confirmation emails ourselves on behalf of partners. This feature is not available as standard, and so if you wish to enable this please speak to your Account Manager.

PdfUrl

The PdfUrl field contains a URL that can be used to retrieve a PDF copy of the confirmation email. Note that you will need to append the fields ABTANumber, Password and key to the link in order to authenticate.

Example:

https://api.holidayextras.co.uk/sandbox/v1/confirmation?email=test%40holidayextras.com&booking_ref=HPABCDE&product_type=hotels&ABTANumber=WT314&Password=redacted&key=YourKey

Worked Examples

Below are worked examples of both the request and response for booking hotels.

UK Hotel Booking - Room Only

Request

https://api.holidayextras.co.uk/v1/hotel/LHRMEA
<Request>
  <ABTANumber>YourABTANumber</ABTANumber>
  <Password>YourPassword</Password>
  <key>YourKey</key>
  <token>YourToken</token>
  <ArrivalDate>2017-12-01</ArrivalDate>
  <Nights>1</Nights>
  <RoomCode>DBL</RoomCode>
  <ParkingDays>0</ParkingDays>
  <Adults>2</Adults>
  <Children>0</Children>
  <Title>Mr</Title>
  <Initial>T</Initial>
  <Surname>TEST</Surname>
  <Address >1 Test Street</Address >
  <Town>Testville</Town>
  <County>Testshire</County>
  <Postcode>TE1 STS</Postcode>
  <DayPhone>01234567890</DayPhone>
  <Email>test@test.com</Email>
  <DataProtection>N</DataProtection>
  <PriceCheckFlag>Y</PriceCheckFlag>
  <PriceCheckPrice>55.00</PriceCheckPrice>
  <v>1</v>
</Request>

Response

<?xml version="1.0"?>
<API_Reply Product="HotelWithParking" RequestCode="5" Result="OK">
    <Booking>
        <BookingRef>YourBookingRef</BookingRef>
        <AgentComm>6.53</AgentComm>
        <VATonComm>0.00</VATonComm>
        <MoreInfoURL>/v1/booking/YourBookingRef</MoreInfoURL>
        <PdfUrl>/v1/confirmation?email=test@test.com&booking_ref=HPABCDE&product_type=hotels</PdfUrl>
    </Booking>
    <Hotel/>
    <Itinerary>
        <TotalPrice>55.00</TotalPrice>
        <ArrivalDate>2017-12-01</ArrivalDate>
        <Nights>1</Nights>
        <BoardBasis>RO</BoardBasis>
        <NonSmoking>N</NonSmoking>
        <ReturnFlight/>
        <TerminalCode/>
        <Code>LHRMEA</Code>
        <Name>Mercure</Name>
        <ParkingDays>0</ParkingDays>
        <ParkingSpaces>0</ParkingSpaces>
    </Itinerary>
    <Room>
        <Adults>2</Adults>
        <Children>0</Children>
        <Infants>0</Infants>
        <Code>DBL</Code>
    </Room>
    <CarDetails>
        <Registration/>
        <CarMake/>
        <CarModel/>
        <CarColour/>
    </CarDetails>
    <ClientDetails>
        <Title>MR</Title>
        <Initial>T</Initial>
        <Surname>TEST</Surname>
        <Email>test@test.com</Email>
        <Address/>
        <Town/>
        <County/>
        <Postcode/>
        <EvePhone/>
    </ClientDetails>
    <API_Header>
        <Request>
            <ABTANumber>YourABTANumber</ABTANumber>
            <Password>YourPassword</Password>
            <key>YourKey</key>
            <token>YourToken</token>
            <ArrivalDate>2017-12-01</ArrivalDate>
            <Nights>1</Nights>
            <RoomCode>DBL</RoomCode>
            <ParkingDays>0</ParkingDays>
            <Adults>2</Adults>
            <Children>0</Children>
            <Title>Mr</Title>
            <Initial>T</Initial>
            <Surname>TEST</Surname>
            <Address >1 Test Street</Address >
            <Town>Testville</Town>
            <County>Testshire</County>
            <Postcode>TE1 STS</Postcode>
            <DayPhone>01234567890</DayPhone>
            <Email>test@test.com</Email>
            <DataProtection>N</DataProtection>
            <PriceCheckFlag>Y</PriceCheckFlag>
            <PriceCheckPrice>55.00</PriceCheckPrice>
            <v>1</v>
        </Request>
    </API_Header>
</API_Reply>

European Hotel Booking

Request

https://api.holidayextras.co.uk/v1/hotel/MUCLAN
<Request>
  <ABTANumber>YourABTANumber</ABTANumber>
  <Password>YourPassword</Password>
  <key>YourKey</key>
  <token>YourToken</token>
  <ArrivalDate>2017-12-01</ArrivalDate>
  <Nights>1</Nights>
  <RoomCode>DZ</RoomCode>
  <ParkingDays>0</ParkingDays>
  <Adults>2</Adults>
  <Children>0</Children>
  <Title>Mr</Title>
  <Initial>T</Initial>
  <Surname>TEST</Surname>
  <Address >1 Test Street</Address >
  <Town>Testville</Town>
  <County>Testshire</County>
  <Postcode>TE1 STS</Postcode>
  <DayPhone>01234567890</DayPhone>
  <Email>test@test.com</Email>
  <DataProtection>N</DataProtection>
  <PriceCheckFlag>Y</PriceCheckFlag>
  <PriceCheckPrice>120.00</PriceCheckPrice>
  <v>1</v>
</Request>

Response

<?xml version="1.0"?>
<API_Reply Product="HotelWithParking" RequestCode="4" Result="OK">
  <Booking>
    <BookingRef>YourBookingRef</BookingRef>
    <MoreInfoURL>/v1/booking/YourBookingRef.de</MoreInfoURL>
    <PdfUrl>/v1/confirmation?email=test%40test.com&amp;booking_ref=FRABCDE&amp;product_type=hotels</PdfUrl>
  </Booking>
  <Hotel/>
  <Itinerary>
    <ArrivalDate>2017-12-01</ArrivalDate>
    <Nights>1</Nights>
    <BoardBasis>F</BoardBasis>
    <NonSmoking>N</NonSmoking>
    <ParkingDays>0</ParkingDays>
    <ParkingSpaces>0</ParkingSpaces>
    <Code>MUCLAN</Code>
    <Name>Schweigers Landgasthof</Name>
  </Itinerary>
  <Room>
    <Adults>2</Adults>
    <Children>0</Children>
    <Infants>0</Infants>
    <Code>DZ</Code>
  </Room>
  <ClientDetails>
    <Title>Herr</Title>
    <Initial>T</Initial>
    <Surname>TEST</Surname>
    <Email>TEST@TEST.COM</Email>
    <Town>TESTVILLE</Town>
    <Postcode>TE1 STS</Postcode>
    <DayPhone>01234567890</DayPhone>
    <Remarks/>
    <Address0>1 Test Street</Address0>
    <Address1>TBC</Address1>
    <DataProtection>N</DataProtection>
    <County>TESTSHIRE</County>
  </ClientDetails>
  <Pricing>
    <Price>120.00</Price>
  </Pricing>
  <API_Header>
    <Request>
      <ABTANumber>YourABTANumber</ABTANumber>
      <Password>YourPassword</Password>
      <key>YourKey</key>
      <token>YourToken</token>
      <ArrivalDate>2017-12-01</ArrivalDate>
      <Nights>1</Nights>
      <RoomCode>DBL</RoomCode>
      <ParkingDays>0</ParkingDays>
      <Adults>2</Adults>
      <Children>0</Children>
      <Title>Mr</Title>
      <Initial>T</Initial>
      <Surname>TEST</Surname>
      <Address0>1 Test Street</Address0>
      <Town>Testville</Town>
      <County>Testshire</County>
      <Postcode>TE1 STS</Postcode>
      <DayPhone>01234567890</DayPhone>
      <Email>test@test.com</Email>
      <DataProtection>N</DataProtection>
      <PriceCheckFlag>Y</PriceCheckFlag>
      <PriceCheckPrice>120.00</PriceCheckPrice>
      <System>ABG</System>
      <lang>de</lang>
      <v>1</v>
    </Request>
  </API_Header>
</API_Reply>

UK Hotel booking with Upgrades

Request

https://api.holidayextras.co.uk/v1/hotel/LGWSOF
<Request>
  <ABTANumber>YourABTANumber</ABTANumber>
  <Password>YourPassword</Password>
  <key>YourKey</key>
  <token>YourToken</token>
  <ArrivalDate>2020-11-10</ArrivalDate>
  <Nights>1</Nights>
  <RoomCode>DBL</RoomCode>
  <ParkingDays>0</ParkingDays>
  <Adults>2</Adults>
  <Children>0</Children>
  <Title>Mr</Title>
  <Initial>T</Initial>
  <Surname>TEST</Surname>
  <Address >1 Test Street</Address >
  <Town>Testville</Town>
  <County>Testshire</County>
  <Postcode>TE1 STS</Postcode>
  <DayPhone>01234567890</DayPhone>
  <Email>test@test.com</Email>
  <DataProtection>N</DataProtection>
  <PriceCheckFlag>Y</PriceCheckFlag>
  <PriceCheckPrice>135.00</PriceCheckPrice>
  <Supplements>
    <Code>LGWSOE</Code>
    <Date>2020-11-10</Date>
    <Quantity>1</Quantity>
    </Adults>
    </Children>
    <TotalPrice>40.00</TotalPrice>
  </Supplements>
  <Supplements>
    <Code>LGWASC</Code>
    <Date>2020-11-11</Date>
    <LoungeArrival>2020-11-11 12:30</LoungeArrival>
    </Quantity>
    <Adults>2</Adults>
    <Children>0</Children>
    <TotalPrice>56.00</TotalPrice>
  </Supplements>
  <v>1</v>
</Request>

Response

<?xml version="1.0"?>
<API_Reply Product="HotelWithParking" RequestCode="5" Result="OK">
  <Booking>
    <BookingRef>YourBookingRef</BookingRef>
    <AgentComm>13.45</AgentComm>
    <VATonComm>0.00</VATonComm>
    <MoreInfoURL>/v1/booking/YourBookingRef</MoreInfoURL>
  </Booking>
  <Hotel/>
  <Itinerary>
    <TotalPrice>255.55</TotalPrice>
    <ArrivalDate>2020-11-10</ArrivalDate>
    <Nights>1</Nights>
    <BoardBasis>RO</BoardBasis>
    <NonSmoking>N</NonSmoking>
    <ReturnFlight/>
    <TerminalCode/>
    <Code>LGWSOF</Code>
    <Name>Sofitel</Name>
    <ParkingDays>0</ParkingDays>
    <ParkingSpaces>0</ParkingSpaces>
  </Itinerary>
  <Room>
    <Adults>2</Adults>
    <Children>0</Children>
    <Infants>0</Infants>
    <Code>DBL</Code>
  </Room>
  <CarDetails>
    <Registration/>
    <CarMake/>
    <CarModel/>
    <CarColour/>
  </CarDetails>
  <ClientDetails>
    <Title>MR</Title>
    <Initial>T</Initial>
    <Surname>TEST</Surname>
    <Email>test@test.com</Email>
    <Address/>
    <Town/>
    <County/>
    <Postcode/>
    <EvePhone>01234567890</EvePhone>
  </ClientDetails>
  <CurrentSupplements>
    <Code>LGWSOE</Code>
    <Name>Luxury room upgrade</Name>
    <Price>66.50</Price>
    <NonDiscPrice>66.50</NonDiscPrice>
    <Per>room</Per>
    <Adults>0</Adults>
    <Children>0</Children>
    <Date>2020-11-10</Date>
    <Remarks/>
    <Canx>Y</Canx>
  </CurrentSupplements>
  <CurrentSupplements>
    <Code>LGWASC</Code>
    <Name>Club Aspire North Lounge</Name>
    <Price>47.50</Price>
    <NonDiscPrice>47.50</NonDiscPrice>
    <Per>person</Per>
    <Adults>2</Adults>
    <Children>0</Children>
    <Date>2020-11-11</Date>
    <Remarks/>
    <Canx>Y</Canx>
  </CurrentSupplements>
  <API_Header>
    <Request>
      <ABTANumber>YourABTANumber</ABTANumber>
      <Password>YourPassword</Password>
      <key>YourKey</key>
      <token>YourToken</token>
      <ArrivalDate>2020-11-10</ArrivalDate>
      <ArrivalTime>12:30</ArrivalTime>
      <Title>Mr</Title>
      <Initial>T</Initial>
      <Surname>Test</Surname>
      <Address>Holiday Extras Ltd</Address>
      <Address>Ashford Road</Address>
      <Town>Hythe</Town>
      <County>Kent</County>
      <PostCode>CT214JF</PostCode>
      <Email>test@test.com</Email>
      <PriceCheckFlag>Y</PriceCheckFlag>
      <PriceCheckPrice>135.00</PriceCheckPrice>
      <Adults>2</Adults>
      <Children>0</Children>
      <Nights>1</Nights>
      <RoomCode>DBL</RoomCode>
      <ParkingDays>0</ParkingDays>
      <Supplements>
        <Code>LGWSOE</Code>
        <Date>2020-11-10</Date>
        <Quantity>1</Quantity>
        <TotalPrice>70.00</TotalPrice>
      </Supplements>
      <Supplements>
        <Code>LGWASC</Code>
        <Date>2020-11-11</Date>
        <Adults>2</Adults>
        <Children>0</Children>
        <TotalPrice>56.00</TotalPrice>
      </Supplements>
      <v>1</v>
    </Request>
  </API_Header>
</API_Reply>