This article aims to help you understand how to request, calculate and book multi rooms using the Rapid API.
Contents
- Booking Multiples Rooms in a Single Transaction
- Booking Rooms of Differing Room Types
- Booking Multiple Rooms with Multiple Requests
- Booking More than 8 Rooms in a Single Transaction
Booking Multiple Rooms in a Single Transaction
Within the API, partners are allowed to book up to 8 rooms of the same room type (i.e 8 x Deluxe Room) in a single reservation. In this method, ALL the rooms will either be confirmed or not at the time of the booking. It is currently not possible for part of the booking to not be confirmed.
Shopping API
Shop Request
When shopping the API for multiple room availability, you will need to pass a separate occupancy parameter for each room within the same request.
Let’s take an example of 4 rooms in one shopping request, 1 room with 3 adults and 2 rooms with 2 adults.
The occupancy in the shopping request would resemble something like this: occupancy=3&occupancy=2&occupancy=2
Example:
https://test.ean.com/v3/properties/availability?language=en-US&sales_channel=website&checkin=2022-12-23&checkout=2022-12-25&country_code=US¤cy=USD&occupancy=3&occupancy=2&occupancy=2&...[]
Shop Response
The shop API response returns pre-calculated totals on a per room basis.
In this case, if multiple rooms are requested, a multiplier will need to be applied to calculate the total cost as the Rapid API will respond with one occupancy object per unique combination of occupancy searched.
Example (4 rooms):
- &occupancy=2
- &occupancy=2
- &occupancy=2-1,5
- &occupancy=2-3,6
With the above example, Room 1 and 2 are effectively requesting the same room with the same occupancy twice. So the cost of room 1 will still be the same as room 2.
Multi Room Price Display
You will only apply a multiplier when you have requested more than one room of the same occupancy combination.
To display a total price of all room on the UI, add the totals.inclusive cost of the room objects of all rooms requested to display the total price for all 4 rooms.
Calculation
- &occupancy=2
- &occupancy=2
- &occupancy=2-1,5
- &occupancy=2-3,6
Total display price = (Room1{totals.inclusive} * 2) + Room2{totals.inclusive} + Room3{totals.inclusive}]
Example 2
Note: Where property fees are applicable, in a multi room scenario each room will return its own Fees Object as seen in the above example.
As with the room price calculations, to calculate the total property fees payable, add together totals.property_fees of all rooms applying a multiplier to rooms where you have requested more than one room of the same occupancy combination.
Price Check API
You will notice the occupancy pricing returned in the price check will mimic that of the shopping response.
Booking API
Booking Request
Note:
The order for occupancies is the order of the query parameter that is passed in to the availability call. So this order in which the rooms were shopped (i.e. 2| 2| 2-1,5| 2-3,6) is the order that should be applied when assigning traveller names to rooms within the book request body.
Applying this to our example, occupancies order searched is 2| 2| 2-1,5| 2-3,6, with request body of rooms[{A},{B},{C},{D}] will be translated as Room A with 2 adult, room B with 2 Adult , room C with 2 Adult, 2 Children (1,5) and Room D with 2 adults, 2 Children (3,6)
Booking Response
A multi-room booking will not generate separate itinerary ids. A single itinerary ID will be returned for the entire bookings, however, each room booked under the itinerary will have a separate confirmation ID.
Managed Booking API
Each room within a multi room booking can only be cancelled individually. There is no functionality to cancel all room at an itinerary level with a single cancellation call.
Booking Rooms of Differing Room Types
It’s not possible with the EPS API to make a multi-room bookings where the rooms.id and rooms.room_name are different (i.e 2 x Deluxe Room + 1 x Presidential Suite).
While the API is not designed to support multi-room type bookings, some partners have had success by implementing a shopping cart approach using the 'Hold and Resume' feature whereby they make:
- Individual reservation requests (using 'hold=true' in booking request) for each room type in sequence
- Resuming all held bookings once ready to complete the booking
There are inherent risks and complexity associated with this approach.
As such, it is best to use the "available_rooms": indicator returned in the shop response for each rate to understand how much inventory is available to help avoid sold out errors.
Please be aware that in multi room type booking scenarios where some rooms have been successfully booked and some have failed; normal cancellation policies will apply (including non-refundable rooms) and may not be without charge.
Any cancellation requests raised with customer service teams will be on a case by case basis and would be considered on its own normally and not with another itinerary booked at the same time.
Booking Multiple Rooms with Multiple Requests
Whilst it is not recommended as best practice to make multiple single room transactions to later join up locally to create a single booking for your traveller; we do understand partners can at times face limitations that prevent from using our multiple booking feature.
If it is required to integrate in this manner (i.e.: only one '&occupancy=' for each shop call), please be aware that you MUST ensure your logic includes the use of "available_rooms":
returned in shop responses.
Example:
Whilst searching for 2 rooms (1 room per request, same type):
- 2 x Shop request calls are sent
- Followed by 2 x Book calls
If the first Shop response returned "available_rooms": 1
, the second rooms shop response will also probably return the same inventory availability of "available_rooms": 1
.
In this case, if a book request is sent for both rooms, the first Book will take up the 1 available room and the second book will fail.
Booking More than 8 Rooms in a Single Transaction
Please see this article here for guidance on booking more rooms than allowed within the Rapid API.
Comments
0 comments
Please sign in to leave a comment.