Skip to content
Last updated

Cancellation policies

Learn how cancellation policies work throughout the booking lifecycle and how to retrieve cancellation rules, schedules, and applicable fees for different travel services.


Overview

Cancellation policies determine:

  • whether a traveller can cancel a reservation;
  • when cancellation is permitted;
  • whether a cancellation fee applies; and
  • how that fee is calculated.

The Demand API provides progressively richer cancellation information as the traveller moves through the booking journey.

Booking stage
Endpoint
Information returned
Pre-booking/search
/availability
Cancellation policy type and, where supported, the free cancellation deadline.
Booking/orders/previewComplete cancellation schedule and applicable cancellation fees before the booking is confirmed.
Post-booking/orders/details/*Current cancellation eligibility, cancellation status, latest cancellation schedule, and any fees charged.

Cancellation policy types

Different travel services support different cancellation models.

Travel serviceSupported policies
AccommodationFlexible (free_cancellation), Partially refundable (partially_refundable / special_conditions), Non-refundable
Car rentalFree cancellation, Non-refundable
Standalone car insuranceNo standalone cancellation policy. Eligibility depends on the insurance status and the associated car rental reservation.

Accommodation cancellation policies

Accommodation reservations support three cancellation policy types.

cancellation-policies

Flexible policies

Travellers can cancel free of charge until a specified deadline. Typical examples include:

  • 24–48 hours before check-in.
  • 7 days before arrival.
  • 12:00 on the day of arrival.

The accommodation provider defines the free cancellation deadline, which varies by property and rate.

This policy provides the greatest flexibility for travellers.

Partially refundable (Special conditions)

Bookings can be cancelled, but a cancellation fee always applies.

  • In Demand API v3.1 this policy type is returned as special_conditions.
  • In Demand API v3.2 it is returned as partially_refundable.

Depending on the property's policy, the traveller may be charged:

  • The first night's stay;
  • 50% of the total booking price; or
  • Another amount defined by the accommodation provider.

partially-refund

Unlike flexible policies, the complete cancellation schedule is not available during search.

It becomes available during the booking process through /orders/preview.

Third-party rates accommodation reservations only support flexible and non-refundable cancellation policies.

Non-refundable policies

Travellers pay the full cancellation fee from the moment the reservation is confirmed, unless local regulations require otherwise.

These policies are commonly associated with discounted or promotional rates.

non-refund

There are 3 different fees that can be applied:

policies


Car rental cancellation policies

v3.2 Beta

Booking.com provides a default cancellation policy for most car rentals:

  • If travellers cancel more than 48 hours before the scheduled pick-up time, they receive a full refund.
  • Cancelling within 48 hours of the scheduled pick-up time (including at the rental counter), they receive a refund minus the cost of 3 rental days.
  • Cancelling after the scheduled pick-up time, or if they do not collect the vehicle, no refund is available.

However, always rely on the cancellation policy returned by the API rather than assuming the default policy applies.

The API returns:

  • the cancellation policy type;
  • one or more cancellation windows;
  • whether cancellation is free during each window; and
  • any applicable cancellation fee.

The schedule object is the source of truth for car rental cancellation rules.


Car insurance cancellation policies

v3.2 Beta

Standalone car insurance does not have its own cancellation policy or cancellation schedule.

Instead, cancellation eligibility depends on:

  • the current insurance status; and
  • the associated car rental reservation.

Before allowing travellers to cancel insurance, verify that:

  • An insurance policy exists.
  • The insurance policy has not already been cancelled.
  • The associated car rental reservation is still confirmed.

You can verify these conditions by retrieving the latest car order details.

If the associated car rental reservation is cancelled, the insurance policy is cancelled automatically.


Cancellation fees

Cancellation fees vary depending on the travel service and the applicable cancellation policy.

The Demand API returns the applicable cancellation fees as the traveller progresses through the booking journey.

Travel serviceCancellation fee information
AccommodationCancellation fees become progressively available throughout the booking lifecycle. The complete cancellation schedule is returned by /orders/preview and /orders/details/accommodations.
Car rentalThe applicable fee is returned by /orders/details/cars/live within the policies.cancellation.schedule object.
Car insuranceInsurance policies do not expose a separate cancellation fee schedule.
  • Always display the cancellation fee returned by the API rather than calculating it yourself.
  • Inform your travellers about the applicable fees during the booking process.

Pre-booking

During the search phase, the API returns a simplified view of the cancellation policy.

This allows travellers to understand the available cancellation flexibility before selecting a travel service.

Cancellation fees are not yet disclosed at this stage.

Accommodation

When using the /search or /availability endpoints, the response includes the cancellation policy assigned to each accommodation product.

Response fields

Field
Description

policies.cancellation.type

Cancellation policy applied to the accommodation product.

One of free_cancellation, partially_refundable (special_conditions in v3.1), or non_refundable.

free_cancellation_untilDate and time until which the reservation can be cancelled free of charge. Returns null if free cancellation is not available.

All timestamps are returned in UTC using the ISO 8601 format.

Example 1 - Free cancellation until

On this request, for this property there is a flexible cancellation policy, and travellers can cancel for free until 2025-10-06T21:59:59+00:00


"policies": {
  "cancellation": {
    "free_cancellation_until": "2025-10-06T21:59:59+00:00",
    "schedule": [
      {
        "from": "now",
        "price": 0
      },
      {
        "from": "2025-10-06T22:00:00+00:00",
        "price": 4716.9
      }
    ],
    "type": "free_cancellation"
  }
}

Example 2 - Partially refundable (special conditions)

In this case, the cancellation policy type is "partially_refundable (or special_conditions in v3.1) and the free_cancellation_until field is "null". This means there is no free cancellation and a fee may apply.

"products": [
  {
    "number_available_at_this_price": 10,
    "policies": {
      "cancellation": {
        "free_cancellation_until": null,
        "type": "special_conditions"
      },
      "meal_plan": {
        "meals": [],
        "plan": "no_plan"
      },
      "payment": {
        "timings": [
          "pay_at_the_property",
          "pay_online_later",
          "pay_online_now"
        ]
      }
    },
    "price": {
      "book": 204.00,
      "total": 204.00
    },
    "room": 1050736002
  }
]

At this stage fees are not yet disclosed for special conditions policies. Use the orders/preview endpoint to get further details on fees and schedules.

Example 3 - Non refundable policy

When a product has a "non_refundable" type of policy, the "free_cancellation_until" field returns null, as this is not applicable.

{
  "products": [
    {
      "id": "1000420_95127794_2_0_0",
      "children": [],
      "deal": null,
      "number_of_adults": 2,
      "policies": {
        "cancellation": {
          "free_cancellation_until": null,
          "type": "non_refundable"
        },
        "meal_plan": {
          "meals": [],
          "plan": "no_plan"
        },
        "payment": {
          "timings": [
            "pay_at_the_property"
          ]
        }
      }
    }
  ]
}

Car rentals

v3.2 Beta

When searching for cars using the /search and /availability (Beta) endpoints, you can check a simplified version of the cancellation policy.

Response fields

Field
Description

policies.cancellation.type

Cancellation policy applied to the car.

One of free_cancellation, or non_refundable.

policies.cancellation.detailsInformation describing the free cancellation window.
  • context- The context in which the cancellation policy applies. For example 'before_pickup'
  • duration- The duration until which the cancellation is free. This is in ISO-8601/Duration format.

Example 1 - Free cancellation

On this request, for this car there is a flexible cancellation policy, and travellers can cancel free of charge up to 48 hrs before pick up.


"policies": {
      "cancellation": {
        "type": "free_cancellation",
        "details": {
          "context": "before_pickup",
          "duration": "PT48H"
        }
      },

Example 2 - Non refundable

For non_refundable cancellation policies:

"policies": {
      "cancellation": {
        "type": "non_refundable",
        "details": {
          "context": "null",
          "duration": "null"
        }
      },

Car rentals do not support "special conditions" or "partially_refundable".


Booking - Orders/preview

Once the traveller has selected a product, /orders/preview provides the complete cancellation schedule before the booking is confirmed.

This endpoint is the authoritative source for the cancellation terms presented before booking confirmation.

Accommodation reservations return the cancellation schedule in:

  • data.​accommodation.​products[].​policies.​cancellation

Car rentals return the cancellation schedule in:

  • data.car.policies.cancellation

Refer to the Create orders guide for examples.

Accommodation examples

Response key fields

These are the fields included in the data.accommodation.products.policies.cancellation response:

Field Description
FromWhen a cancellation rule becomes effective.

now means the policy is effective immediately at the time of booking.
priceCancellation fee that applies from that point onwards.

Example 1 - Free cancellation until

In the following example:

"products": [
  {
    "id": "1000420_278556531_2_0_0",
    "deal": null,
    "policies": {
      "cancellation": [
        {
          "from": "now",
          "price": {
            "accommodation_currency": 0,
            "booker_currency": null
          }
        },
        {
          "from": "2026-12-08T23:00:00+00:00",
          "price": {
            "accommodation_currency": 177.65,
            "booker_currency": null
          }
        }
      ]
    }
  }
]
  • from: "now" - Indicates that from the moment of the booking, the traveller must pay the indicated price.

    • Here, the price.accommodation_currency is 0, reflecting a free cancellation policy.
  • The from date specifies the deadline after which travellers will incur a cancellation fee (in this example 177.65)

    • This indicates that travellers can cancel for free until 2026-12-08T23:00:00+00:00.
    • After this point, the indicated cancellation fee applies.

Example 2 - Non refundable

In the following example the from.now field indicates that from the moment of the booking, the traveller must pay the indicated fee for cancellations (170).

{
  "id": "1000420_95127794_2_0_0",
  "policies": {
    "cancellation": [
      {
        "from": "now",
        "price": {
          "accommodation_currency": 170,
          "booker_currency": null
        }
      }
    ]
  },
  "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
        }
      ]
    },
    "total": {
      "accommodation_currency": 195.06,
      "booker_currency": null
    }
  }
}

Post-booking: Orders/details/*

After the booking has been created, retrieve the latest order details to determine:

  • whether cancellation is still possible;
  • the latest cancellation schedule;
  • any applicable cancellation fees; and
  • whether the reservation has already been cancelled.

Accommodation

Example - Active reservation

In this example the cancellation_details field is null because the order has not yet been cancelled, and the check-in date is 2026-08-24.

{
  "accommodation_order_references": [],
  "cancellation_details": null,
  "checkin": "2026-08-24",
  "checkout": "2026-08-26",
  "commission": {...},
  "products": [
    "policies": {
    "cancellation": [
      {
        "from": "2026-08-22T14:22:43+00:00",
        "price": {
          "accommodation_currency": 45.00,
          "booker_currency": 38.35
        }
      }
    ]
  },
  "status": "booked"
}
  • Free cancellation is available until two days before check-in.
  • From 2026-08-22 (UTC), the traveller will be charged the stated amount (38.35)

Example - Cancelled reservation

In this example, there is a fee applied to the cancellation.

{
  "request_id": "01fr9ez700exycb98w90w5r9sh",
  "data": [
    {
      "id": "509430129718799",
      "reservation": "12345678",
      "status": "cancelled",
      "checkin": "2025-12-10",
      "checkout": "2025-12-18",
      "cancellation_details": {
        "at": "2025-12-09T00:00:00+00:00",
        "fee": {
          "accommodation_currency": 170.01,
          "booker_currency": 186.87
        },
        "original_total_price": {
          "accommodation_currency": 170.01,
          "booker_currency": 186.87
        }
      }
    }
  ]
}

Car rental

When using the orders/details/cars/live in Beta version.

{
  "cancellation": {
    "type": "free_cancellation",
    "schedule": [
      {
        "from": "2026-10-14T10:00:00Z",
        "to": "2026-10-17T09:59:59Z",
        "free_cancellation": true,
        "price": null
      },
      {
        "from": "2026-10-17T10:00:00Z",
        "to": "2026-10-19T10:00:00Z",
        "free_cancellation": false,
        "price": {
          "display": {
            "value": 25.00,
            "currency": "USD"
          },
          "pay": {
            "value": 22.73,
            "currency": "EUR",
            "timing": "pay_online_now"
          }
        }
      }
    ]
  }
}

/orders/details/cars/live is currently available in Beta and will replace /orders/details/cars in a future stable release.

In this example:

  • Cancellation is free until 2026-10-17T09:59:59Z.
  • From 2026-10-17T10:00:00Z onwards, a cancellation fee applies.
  • The fee is returned in both the traveller's display currency and the payment currency.

Always use the schedule object to determine whether cancellation is currently allowed and whether fees apply. It contains the most accurate and up-to-date cancellation rules for the reservation.

Example - Car insurance confirmation

{
  "data": [
    {
      "reservation": "11223344",
      "status": "confirmed",
      "insurance": [
        {
          "policy_reference": "1a8192e7-cc40-41a0-9bc1-801d95dc0c23",
          "status": "confirmed"
        }
      ]
    }
  ]
}

In this example:

  • The car rental reservation is still active (confirmed).
  • The insurance policy is also active (confirmed).
  • The insurance policy is therefore still eligible for cancellation.
Important

If the associated car rental reservation is cancelled, the insurance policy is cancelled automatically. There is no separate cancellation window or fee schedule for standalone car insurance.


Best practices

When displaying cancellation information to travellers:

  • Always retrieve the latest cancellation information before allowing a cancellation.
  • Always use the cancellation policy and fees returned by the API rather than calculating them yourself.
  • Display any applicable cancellation fee before the traveller confirms the cancellation.
  • Refresh cancellation information immediately before submitting the cancellation request, as eligibility and fees may change over time.
  • For car rentals, always use the schedule object as the source of truth.
  • For standalone car insurance, verify both the insurance status and the associated car rental reservation status before allowing cancellation.

Curious to know more?
  • For a better understanding of the cancellation process, check the Handling cancellations guide.
  • Refer to the Orders section for instructions on how to use the orders/details and orders/preview endpoints.
  • You can also check the workflow for pre-booking and booking phases in the Try out full guide.