Pricing in /orders endpoints
Discover how to retrieve and display product pricing information on orders pages effectively.
Pricing details in the order/preview
The /orders/preview endpoint provides detailed pricing information for the products included in the response.
Your application must present this information to travellers in a clear and consistent manner, adhering to all relevant laws and regulations, enabling them to make informed decisions before placing their orders.
Key fields
The product.price
object in the /orders/preview response includes the following key components:
Field | Description |
---|---|
Base price | The fundamental price that excludes any extra_charges . |
extra_charges | Additional costs that are applied to the base price, categorised as follows: - non-conditional : Charges that must be unconditionally paid and are included in the total price. (Exception: incalculable charges are excluded from the total price).- conditional : Charges that only apply in certain conditions. These are always excluded from the base and total prices. |
total | The final amount the traveller needs to pay for the product calculated as the book price plus any non-conditional extra_charges .- The total price is returned in both, the accommodation and booker currencies, which may differ slightly based on the currency used. |
Currency representation:
- All prices and amounts are displayed in both the
accommodation_currency
and thebooker_currency
. - If
currency
is not included in the request, thebooker_currency
value isnull
.
Example 1 - Different currencies
In the following example, the user is located in England, hence the booker currency
defaults to Pounds (GBR).
The accommodation is priced in Euros (EUR) as this is located in Spain so the accommodation currency
presents the amount in Euros (EUR).
{ ... "accommodation": { "id": xxxxxxxx, "currency": { "accommodation": "EUR", "booker": "GBP" }, "price": { "base": { "accommodation_currency": 82.57, "booker_currency": 70.85 }, "extra_charges": { "conditional": [], "non_conditional": [ { "charge": 21, "total_amount": { "accommodation_currency": 7.43, "booker_currency": 6.38 } }, { "charge": 22, "total_amount": { "accommodation_currency": 2.00, "booker_currency": 1.72 } } ] }, "total": { "accommodation_currency": 92.00, "booker_currency": 78.95 }
Example 2 - Extra charges
The products.price
object offers similar pricing details for each product within the order, including a detailed breakdown of extra_charges (including conditional and non conditional)
- All extra charges are grouped by charge type, that is identified by an Id. Examples of extra charges are: VAT, City Tax, etc.
- In the following example the extra charge types are identified with these ids: 3, 142, 21 and 22.
"id": "1000420_95127794_2_0_0", "policies": { "cancellation": [ { "from": "now", "price": { "accommodation_currency": 170, "booker_currency": null } } ], "meal_plan": { "meals": [], "plan": "no_plan" } }, "price": { "base": { "accommodation_currency": 162.98, "booker_currency": null }, "extra_charges": { "conditional": [ { "charge": 3, "condition": 30, "mode": "per_stay", "percentage": null, "total_amount": { "accommodation_currency": 10, "booker_currency": null }, "unit_amount": null } ], "non_conditional": [ { "charge": 142, "mode": "per_person_per_night", "percentage": null, "total_amount": { "accommodation_currency": 6, "booker_currency": null }, "unit_amount": { "accommodation_currency": 3, "booker_currency": null } }, { "charge": 21, "mode": "percentage", "percentage": 9, "total_amount": { "accommodation_currency": 14.67, "booker_currency": null }, "unit_amount": null }, { "charge": 22, "mode": "percentage", "percentage": 7, "total_amount": { "accommodation_currency": 11.41, "booker_currency": null }, "unit_amount": null } ] }, "total": { "accommodation_currency": 195.06, "booker_currency": null } },
→ Call the accommodations/constants endpoint to see the full list of charge type ids so you can identify each one. For this example, the accommodations/constants response retrieves:
{ "id": 3, "name": { "en-gb": "Restaurant" }, }, { "id": 21, "name": { "en-gb": "Babysitting/child services" }, { "id": 22, "name": { "en-gb": "Laundry" }, { "id": 142, "name": { "en-gb": "Child safety socket covers" },
How to display price information
On an order preview page
Prices, charges and currency
Display the price of the order using the
price.total
price.Clearly indicate whether the price includes taxes and charges, and whether any additional charges may apply.
Display details of each
non_conditional
charge that applies to the order (using the data from theprices.extra_charges.non-conditional
object). Do not combine charges into your own categories.If the
booker_currency
andaccommodation_currency
are different:- Show the price clearly in both currencies.
- Clearly state that if the exchange rate changes before the traveller completes the booking, they will pay a different price to the one shown.
For example:
Deals
If you display a price that is discounted because a deal is available, you must show details of the deal. For example:
Note that, currently, you cannot obtain deal information from the orders/preview
endpoint; you must obtain it from /accommodations/search or /accommodations/availability. (See Deals)
Conditional or incalculable charges
If the order includes either conditional
charges, or incalculable
non_conditional
charges:
- Show each charge explicitly with an appropriate explanation.
- Indicate clearly that the price is not the total price.
For example:
On an order details page
Commissionable price
Price over which Booking.com would calculate Managed affiliate partner commission. This price is the sum of net_price and all commissionable extra charges.
- This price is not the
total
price as it may not contains all the extra charges. - There are no simple rule to explain which charges are commissionable.
Example:
Charge | Value | Commissionable |
---|---|---|
net_price | 60 | YES |
city_tax | 10 | YES |
vat | 20 | YES |
service charge | 10 | NO |
commissionable_price | 90 | |
total_price | 100 |
Different pricing information across endpoints
The pricing information returned by the /orders/preview endpoint differs slightly from that provided by the /accommodation/ endpoints in the following ways:
Field | Description |
---|---|
extra_charges | The exclusive or inclusive categories used in the /accommodations/* responses are not applicable to the order process. Instead, all exclusive or inclusive charges are defined as non-conditional . |
book price | This value is not included in the response. |
See Prices (/accommodations) for more information.
Price variations
There may be slight discrepancies between the pricing presented in the /accommodations/availability response and that included in preview/order endpoint.
When discrepancies occur:
- The price returned by the preview response should be the one utilised during the booking process.
- It is advisable to notify travellers about these variations.
Example of price discrepancy
Below are examples of two responses with minor price differences:
Here’s a sample response from the /accommodation/availability endpoint:
"price": { "base": 8485200.18, "book": 9622217.00, "extra_charges": { "conditional": [], "excluded": [], "included": [ { "charge": 1, "mode": "percentage", "percentage": 5.00, "total_amount": 424260.01, "unit_amount": null }, { "charge": 21, "mode": "percentage", "percentage": 8.00, "total_amount": 712756.81, "unit_amount": null } ] }, "total": 9622217.00
In this case, the price discrepancy between the two endpoints is 0.20 cents.
Price | accommodation/availability | order/preview |
---|---|---|
Base price | 8485200.18 | 8485200.00 |
Total price | 9622217.00 | 9622216.80 |
- Check the Pricing in accommodation guide to check how this information is disclosed in accommodations endpoints.
- Refer to the Create orders section for instructions on how to use the orders/preview endpoint.
- For a better understanding of the booking process, refer to Try out full guide.