Understand the car rental pricing fields returned throughout the Search, look and book flow and how to use them to display prices, interpret payment requirements, and calculate the final order price.
Car rental pricing information evolves as the traveller moves through the booking flow.
Use:
- /cars/search to retrieve the initial price for each available car rental offer.
- /cars/availability to validate the selected offer and retrieve its latest pricing, payment requirements, optional products, and insurance.
- /orders/preview to calculate the final order price after the traveller selects an offer and any optional products or insurance.
The pricing structure differs between endpoints. Do not assume that a price field returned by one endpoint is available or has the same structure in another endpoint.
| Stage | Endpoint | Main pricing information |
|---|---|---|
| Search | /cars/search | total, currency, credit_card_required, extra_charges |
| Availability | /cars/availability | base, total, credit_card_required, extra_charges, optional product and insurance prices |
| Order preview | /orders/preview | base, total, extra_charges, selected product prices, display and pay amounts, payment schedule |
Use /cars/search to retrieve and display the initial price of each available offer.
The price object contains:
total— Total price of the car rental offer, including all extra charges.currency— Currency of the returned price.credit_card_required— Indicates whether a credit card is required as a guarantee for the vehicle.extra_charges— Breakdown of taxes and fees included in the total price.
For example:
{
"price": {
"total": 121.90,
"currency": "EUR",
"credit_card_required": false,
"extra_charges": [
{
"charge": "aged_driver_fee",
"total_amount": 21.90
},
{
"charge": "one_way_fee",
"total_amount": 50.00
}
]
}
}Use the price returned by /cars/search for the search results associated with that response. Before proceeding with a direct booking, validate the selected offer using /cars/availability.
Use /cars/availability to validate the selected offer before booking.
The endpoint returns the latest pricing for the selected offer and introduces additional information required by the booking flow.
The main price object contains:
base— Base price of the vehicle.total— Total price of the vehicle.credit_card_required— Whether a credit card is required as a guarantee.extra_charges— Breakdown of taxes and fees included in the drive-away price.
For example:
{
"price": {
"base": 74.40,
"total": 194.40,
"credit_card_required": false,
"extra_charges": [
{
"charge": "aged_driver_fee",
"total_amount": 120.00
}
]
}
}price.base represents the base price of the vehicle before the additional charges included in the drive-away price.
Use base to understand the underlying vehicle price and use extra_charges to identify the additional taxes and fees included in total.
Do not assume that base is the final amount payable by the traveller.
price.total represents the total vehicle price.
Use it together with extra_charges to understand the complete vehicle price returned for the selected offer.
Extra charges provide a breakdown of additional taxes and fees associated with the car rental price.
The structure changes as the traveller moves through the booking flow.
In /cars/search and /cars/availability, price.extra_charges is an array containing charges included in the drive-away price.
Each item contains:
charge— Type of charge.total_amount— Total amount for the charge.
For example:
{
"extra_charges": [
{
"charge": "one_way_fee",
"total_amount": 15.00
}
]
}/orders/preview provides a more detailed extra-charge structure.
Charges are grouped into:
non_conditional— Charges that will necessarily be paid.conditional— Charges that might apply when a specific condition is met.
Each charge includes separate display and pay amounts.
For example:
{
"extra_charges": {
"non_conditional": [
{
"charge_type": "one_way_fee",
"amount": {
"display": {
"value": 15.00,
"currency": "EUR"
},
"pay": {
"value": 15.00,
"currency": "EUR",
"timing": "pay_online_now"
}
}
}
]
}
}The Preview schema explicitly separates conditional charges from non-conditional charges, with non-conditional charges defined as charges that will necessarily be paid.
As the traveller progresses towards booking, some Cars price objects distinguish between display and pay.
These fields serve different purposes:
display— The amount shown to the traveller in the selected display currency.pay— The amount that must actually be paid, including the applicable payment currency and, where provided, payment timing.
In /orders/preview, this structure is used for the base price, extra charges, optional products, deposits, excess amounts, insurance, and payment schedules.
The schema defines display as the amount shown to the traveller and pay as the amount to be paid, which can be collected online or at the pickup desk.
For example:
{
"base": {
"display": {
"value": 129.99,
"currency": "EUR",
"timing": "pay_online_now"
},
"pay": {
"value": 129.99,
"currency": "EUR",
"timing": "pay_online_now"
}
}
}The display and pay amounts can use different currencies. Do not assume that the traveller-facing display currency is always the same as the payment currency.
Use display when presenting the corresponding amount to the traveller.
The display object contains:
value— Amount to display.currency— Display currency.timing— Payment timing, where returned by the price structure.
Use pay to determine the amount and currency associated with payment.
Depending on the pricing context, pay can include:
value— Amount to be paid.currency— Currency in which the amount is paid.timing— When the amount is due.
Payment timing indicates when an amount must be paid.
Depending on the endpoint and price structure, the following values can be returned:
pay_online_now— The amount is paid online as part of the booking flow.pay_partial_online_now— Part of the price is paid online, with the remaining amount payable later.pay_at_pickup— The amount is paid at the pickup location.
In /cars/availability, the overall payment timing is returned in:
policies.payment.timingIn /orders/preview, payment timing is associated with individual pay amounts and the payment schedule.
/orders/preview provides the payment schedule for the selected car rental.
Use:
policies.payment.dates[]to determine when payments are due and how much is payable on each date.
Each entry contains:
at— Date when the payment is due.amount.display— Traveller-facing amount.amount.pay— Amount that must be paid.
For example:
{
"payment": {
"dates": [
{
"at": "2026-11-01",
"amount": {
"display": {
"value": 129.99,
"currency": "EUR",
"timing": "pay_online_now"
},
"pay": {
"value": 129.99,
"currency": "EUR",
"timing": "pay_online_now"
}
}
}
]
}
}The Preview schema describes this structure as the payment schedule showing when and how much is due.
The credit_card_required field indicates whether a credit card is required as a guarantee for the selected vehicle.
It can return:
true— A credit card is required as a guarantee.false— A credit card is explicitly not required.null— The requirement is unavailable or not applicable.
The requirement is related to the offer's payment model and should not be used on its own to determine when payment is due.
For example, an eligible pay-at-pickup offer can allow a cardless booking when no amount is payable online and credit_card_required is false.
Use credit_card_required together with the applicable payment information when determining whether payment or card details are required during booking.
/cars/availability returns optional products such as additional drivers, child seats, or GPS devices.
Their pricing uses:
products[].price.unit_amountwith separate display and pay amounts.
For example:
{
"id": "14383444201010",
"type": "additional_driver",
"maximum_available": 3,
"mode": "each_per_rental",
"price": {
"unit_amount": {
"display": {
"value": 20.00,
"currency": "GBP"
},
"pay": {
"value": 20.00,
"currency": "GBP",
"timing": "pay_at_pickup"
}
}
}
}Use mode to determine how the product price is calculated.
Supported calculation modes include:
each_per_day— Price per unit, per rental day.per_day— Price per day, regardless of quantity.each_per_rental— Price per unit for the complete rental.per_rental— One price for the complete rental.
When selected optional products are included in /orders/preview, the response provides both:
unit_amount— Price for an individual unit.total_amount— Total price for the selected quantity.
The Preview response explicitly provides pricing and selected quantity for each chosen extra.
When third-party insurance is available, /cars/availability returns the insurance price separately from the vehicle price.
The insurance price object contains:
display— Traveller-facing insurance price.pay— Amount, currency, and timing of the insurance payment.
For example:
{
"insurance": {
"name": "Full Protection",
"price": {
"display": {
"value": 114.24,
"currency": "GBP"
},
"pay": {
"value": 114.24,
"currency": "EUR",
"timing": "pay_online_now"
}
}
}
}If the traveller selects the insurance product, include its quote_reference in /orders/preview. The Preview response then returns the selected insurance and its pricing as part of the validated order.
Third-party insurance can be priced separately from the main vehicle total. Do not assume that price.total includes the selected insurance price.
Before creating a direct car rental order, call /orders/preview to validate the selected offer, optional products, insurance, policies, and final pricing.
The car price object can contain:
base— Base price for the selected car products, excluding extra charges.extra_charges— Conditional and non-conditional additional charges.products— Pricing for selected optional products.total— Total price for the car rental product.
The Preview schema defines total as the total price in the selected display currency, including the base rental price and mandatory vehicle-related charges.
It also explicitly notes that optional extras and third-party products, such as insurance, can be priced separately.
For example:
{
"price": {
"base": {
"display": {
"value": 129.99,
"currency": "EUR",
"timing": "pay_online_now"
},
"pay": {
"value": 129.99,
"currency": "EUR",
"timing": "pay_online_now"
}
},
"extra_charges": {
"non_conditional": [
{
"charge_type": "one_way_fee",
"amount": {
"display": {
"value": 15.00,
"currency": "EUR"
},
"pay": {
"value": 15.00,
"currency": "EUR",
"timing": "pay_online_now"
}
}
}
]
},
"total": {
"value": 144.99,
"currency": "EUR",
"timing": "pay_online_now"
}
}
}Do not calculate the final order price by adding individual fields yourself. Use the pricing returned by /orders/preview as the validated pricing for the selected order configuration.
In /orders/preview, each extra charge includes a charge_type that identifies the type of fee or tax applied to the car rental.
These are some of the charge types that can be returned:
charge_type | Meaning |
|---|---|
aged_driver_fee | Fee that applies based on the driver's age. |
one_way_fee | Fee for returning the car at a different location. |
ap_conc_fee_recov | Airport concession fee recovery. |
city_sales_tax | Local city sales tax. |
concessn_rec_srchg | Concession recovery surcharge. |
loc_dist_sales_tax | Local district sales tax. |
state_mvr_tax | State motor vehicle registration tax. |
state_sales_tax | State sales tax. |
trans_facility_fee | Transportation facility fee. |
Pricing-related information can also include deals and estimated commission.
Where a deal applies, the deal object can provide:
discount_percentage— Discount percentage applied.public_price— Original price before the discount.tags— Deal types associated with the offer.
Use deal information to explain applicable discounts without replacing the actual offer price returned by the endpoint.
The estimated_commission field represents an estimate of the commission the partner may earn if the traveller books the car. This field:
- Is returned only when the predicted commission feature is enabled for the partner.
- Can be omitted when the feature is unavailable or a reliable estimate cannot be produced.
- Is an estimated value and should not be treated as part of the traveller-facing vehicle price.
✅ Use the price returned for the current stage of the flow — Pricing structures differ between /cars/search, /cars/availability, and /orders/preview.
✅ Validate the selected offer before booking — Use /cars/availability to retrieve the latest pricing and availability before proceeding with a direct booking.
✅ Use display for traveller-facing amounts where it is returned — Do not assume the display and payment currencies are the same.
✅ Use pay for payment amounts — Check its currency and payment timing rather than deriving payment information from the display price.
✅ Check payment timing — Use the relevant payment policy or pay.timing to determine when each amount is due.
✅ Treat optional products and insurance separately — Their prices can be returned separately from the main vehicle total.
✅ Use /orders/preview before creating an order — Preview validates the selected configuration and returns the final pricing and payment schedule used by the booking flow.
✅ Do not treat estimated_commission as traveller-facing pricing — It is a separate estimated partner value.
- Follow the Car rentals tutorial to implement the complete Search, look and book flow.
- See the Check car availability guide for guidance on validating a selected offer.
- Review the Car rental API reference for details on search pricing fields, availability, optional product, and insurance pricing.
- Review the /orders/preview API reference for final order pricing and payment schedules.