Understand how payment schedules represent when and how much is charged for a booking, using data returned in /orders/preview for accommodation and car rental (v3.2).
- What payment schedules are.
- How schedules are structured in /orders/preview.
- Key fields and concepts (dates, pay, display)
- Accommodation vs car rental differences.
- Worked examples.
- UI and integration guidance.
Payment schedules define the full breakdown of payments across a booking lifecycle.
A single order may involve multiple payment events, depending on:
- Payment timing (see Payment timings guide)
- Supplier or property policies.
- Taxes, deposits, and extra charges.
- Payment method rules.
Use payment schedules data to:
✓ Show exact payment breakdowns across time.
✓ Separate upfront vs later charges.
✓ Display all booking-related costs transparently.
✓ Prevent unexpected charges at checkout or fulfilment.
In /orders/preview, payment timing is expanded into a schedule of payment events, that defines when and how much is charged.
- Each payment timing contains a
datesarray. - Each item in
datesrepresents a single payment event.
- Each event includes:
at→ when the payment occurs.price(accommodation) oramount(car) → how much is charged.
Each monetary value may include:
pay→ the actual amount that will be charged.display→ the amount shown to the traveller (may differ due to currency or rounding).
- A schedule may include multiple payment events.
- The sum of all
payvalues represents the total collected via the API. - Some charges may be excluded due to legal or supplier constraints.
The sum of all payment events in dates represents the total amount collected through the API.
Some additional charges (for example, tourist taxes, deposits, etc) may not be included in this total and are paid at the property or pickup.
The method_required field indicates whether a payment method must be provided at booking time.
true→ the traveller must provide a payment method (even if no charge is made at booking).false→ no payment method is required at booking.
- Guaranteeing bookings without upfront payment.
- Deferred charging models.
- Supplier-managed payments.
See the payment methods section for more details.
Some charges are handled separately due to legal or supplier rules.
Examples include:
- Tourist taxes (legal requirement)
- Security deposits.
- Damage excess.
- Fuel or service fees.
These:
- May not be included in upfront payment events.
- May appear as separate schedule entries.
- May be collected at property or pick-up.
Refer to the Accommodation pricing section for more details.
| Aspect | Accommodation | Car rental |
|---|---|---|
| Payment structure | Grouped by timing object | Attached per price component |
| Data location | payment.dates | price.*.pay/display.timing |
| Evaluation model | Schedule-level | Field-level |
| Complexity | Policy-driven | Component-driven |
Accommodation schedules are returned in:
data.accommodation.general_policies.payment
In the following orders/preview response taken as example, there are 2 events "2025-01-18" (booking date) and "2025-02-10" (checkin date) together with price to pay each date:
{
"accommodation": {
"general_policies": {
"payment": {
"pay_online_now": {
"method_required": true,
"dates": [
{
"at": "2025-01-18",
"price": {
"accommodation_currency": 200.64,
"booker_currency": 200.64
}
},
{
"at": "2025-02-10",
"price": {
"accommodation_currency": 5.14,
"booker_currency": 5.14
}
}
]
}
}
}
}
}Interpretation:
- Full amount is charged at booking.
- Any other additional payments such as extra charges are collected at checkin.
In this orders/preview response, there are 3 date events "2025-01-18" (booking date), "2025-02-02" (payment date) and "2025-02-10" (checkin date):
{
"accommodation": {
"general_policies": {
"payment": {
"pay_online_later": {
"method_required": true,
"dates": [
{
"at": "2025-01-18",
"price": {
"accommodation_currency": 0.00,
"booker_currency": 0.00
}
},
{
"at": "2025-02-02",
"price": {
"accommodation_currency": 200.64,
"booker_currency": 200.64
}
},
{
"at": "2025-02-10",
"price": {
"accommodation_currency": 5.14,
"booker_currency": 5.14
}
}
],
"methods": {
"cards": [1, 2, 3, 4, ...]
}
}
}
}
}
}Interpretation:
- At booking: no charge.
- Before cancellation deadline: full amount is charged.
- Check-in: extra charges (if applicable)
Not supported for certain credit card types (see payment timings details).
In the following orders/preview response taken as example, there are 2 date items "2026-11-18" (booking date) and "2026-12-01" (checkin date):
{
"accommodation": {
"general_policies": {
"payment": {
"pay_at_the_property": {
"method_required": true,
"dates": [
{
"at": "2026-11-18",
"price": {
"accommodation_currency": 0.00,
"booker_currency": 0.00
}
},
{
"at": "2026-12-01",
"price": {
"accommodation_currency": 205.78,
"booker_currency": 205.78
}
}
],
"methods": {
"cards": [1, 2, 3, 4, ...]
}
}
}
}
}
}
Interpretation:
- At booking: no charge
- At check-in: full amount is paid at the property.
There are cases when the property sets a prepayment policy, scheduling an instalment between the booking and checkin date.
Example:
{
"general_policies": {
"payment": {
"pay_at_the_property": {
"method_required": true,
"dates": [
{
"at": "2026-11-18",
"price": {
"accommodation_currency": 0.00,
"booker_currency": 0.00
}
},
{
"at": "2026-11-30",
"price": {
"accommodation_currency": 57.27,
"booker_currency": 57.27
}
},
{
"at": "2026-12-01",
"price": {
"accommodation_currency": 76.29,
"booker_currency": 76.29
}
}
]
}
}
}
}
Interpretation:
- At booking: no charge.
- Before arrival: partial prepayment.
- At check-in: remaining balance.
This flexible split is controlled by property policy.
Car rental does not group payments into timing objects.
Instead, timing is defined at field level.
Timing appears in:
price.baseprice.totalextra_chargespolicies.payment.dates(deposit, excess, etc.)
- Each monetary field must be evaluated independently.
- There is no global schedule object for car rental payments.
{
"request_id": "01fr9ez700exycb98w90w5r9sh",
"data": {
"car": {
"offer": 123456789,
"currency": {
"booker": "EUR",
"payment": "EUR"
},
"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.0,
"currency": "EUR"
},
"pay": {
"value": 15.0,
"currency": "EUR",
"timing": "pay_online_now"
}
}
}
]
}
],
"total": {
"value": 144.99,
"currency": "EUR",
"timing": "pay_online_now"
}
},
"policies": {
"cancellation": {
"details": {
"context": "before_pickup",
"duration": "PT48H"
},
"type": "free_cancellation"
},
"damage_excess": {
"amount": {
"display": {
"value": 1000.0,
"currency": "EUR",
"timing": "pay_at_pickup"
},
"pay": {
"value": 1000.0,
"currency": "EUR",
"timing": "pay_at_pickup"
}
}
},
"deposit": {
"amount": {
"display": {
"value": 200.0,
"currency": "EUR",
"timing": "pay_at_pickup"
},
"pay": {
"value": 200.0,
"currency": "EUR",
"timing": "pay_at_pickup"
}
}
},
"fuel_policy": "return_same",
"mileage": {
"distance_limit": 300.0,
"distance_unit": "kilometers",
"type": "limited"
},
"payment": {
"dates": [
{
"at": "2026-04-20",
"amount": {
"display": {
"value": 169.99,
"currency": "EUR",
"timing": "pay_online_now"
},
"pay": {
"value": 169.99,
"currency": "EUR",
"timing": "pay_online_now"
}
}
}
]
}
},
...
In many rentals, the total cost is split. In the example below, the rental price is paid online, but the damage excess are handled at the desk.
{
"price": {
"total": {
"value": 129.99,
"currency": "EUR",
"timing": "pay_online_now"
}
},
"policies": {
"damage_excess": {
"amount": {
"display": {
"value": 300.00,
"currency": "EUR",
"timing": "pay_at_pickup"
},
"pay": {
"value": 300.00,
"currency": "EUR",
"timing": "pay_at_pickup"
}
}
}
}Interpretation:
Immediate Payment (pay_online_now)
- The
price.totalshows €129.99. - Charged when booking online.
- Since the timing is
pay_online_now, the checkout UI should trigger a payment gateway (credit card, digital wallet, etc.) for this amount immediately.
Counter information (pay_at_pickup)
- Not charged online.
- Traveller must provide a card at the rental desk.
- The
damage.excessshows €300.00. - The UI should inform the traveller that they need to have a credit card available at the rental desk for a pre-authorisation, but this amount is not charged during the online checkout.
For additional information: