> ## Documentation Index
> Fetch the complete documentation index at: https://restoo.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Cancellation Flow

> How to cancel a booking, check for penalties, and handle cancellation policies.

Cancelling a booking is a two-step process: first retrieve the cancellation quote to know the financial consequences, then submit the cancellation with a reason.

***

## Which bookings can be cancelled

Four statuses accept cancellation: `CONFIRMED`, `REQUESTED`,
`PENDING_MERCHANT_CONFIRMATION` and `PENDING_WAIT_LIST_BOOKING`. Any other
returns HTTP 409 `STATUS_NOT_VALID_TO_UPDATE_PUBLIC_BOOKING`.

Leaving the wait list is this same endpoint — a `PENDING_WAIT_LIST_BOOKING`
booking cancels like any other. Word it differently for the customer, though:
they are giving up a place in a queue, not cancelling a table they had.

***

## Overview

```mermaid theme={null}
flowchart TD
    A(["Customer wants to cancel"]) --> B

    B["Get Cancel Booking Details"]
    B --> C{"cancellationPolicyQuote is null?"}

    C -- Yes --> D["No cancellation policy Cancel freely"]
    C -- No --> E{"isPenalizable?"}

    E -- No --> F["Show cancellationDeadlineAt No charge yet"]
    E -- Yes --> G["Show cancellationFeeAmount Get customer confirmation"]

    F --> H{"Customer confirms?"}
    G --> H
    D --> H

    H -- Yes --> I["Cancel Booking"]
    H -- No --> Z2(["Abandoned"])

    I --> Z(["Booking CANCELED"])

    style A fill:#28a745,stroke:#1e7e34,color:#ffffff
    style Z fill:#28a745,stroke:#1e7e34,color:#ffffff
    style Z2 fill:#e9e9e9,stroke:#999999,color:#000000
```

***

## Step 1 — Get the cancellation quote

**Endpoint:** [`Get Cancel Booking Details`](/booking-channel-api/methods/bookings/cancel-details)

Read-only — no changes are made to the booking.

If `cancellationPolicyQuote` is `null`, the booking has no cancellation policy and the customer can cancel freely.

If `cancellationPolicyQuote` is present, check `isPenalizable` to determine what to show the customer:

* **`isPenalizable: false`** — no charge applies yet. Show `cancellationDeadlineAt` so the customer knows how long they have to cancel for free.
* **`isPenalizable: true`** — a penalty applies. Show `cancellationFeeAmount` and obtain the customer's confirmation before proceeding.

<Warning>
  Penalty conditions change over time. If significant time passes between
  showing the quote and the customer confirming, refresh the quote before
  submitting the cancellation.
</Warning>

***

## Step 2 — Cancel the booking

**Endpoint:** [`Cancel Booking`](/booking-channel-api/methods/bookings/cancel)

Submits the cancellation. Requires a `cancelReason` — see the endpoint reference for the list of accepted values.
