---
title: "Cancel a booking"
method: POST
path: "/flights/bookings/{bookingId}/cancellations"
tags: ["Flight Bookings"]
---

# Cancel a booking

`POST /flights/bookings/{bookingId}/cancellations`

## Request

- Base URL: `https://api.liteapi.travel/v3.0`
- URL: `https://api.liteapi.travel/v3.0/flights/bookings/{bookingId}/cancellations`
- Auth: API key in header `X-API-Key`

## Overview

**Cancels a flight booking.** Submits cancellation for an existing booking and returns the cancellation outcome. Call `GET /flights/bookings/{bookingId}/cancellations` first to preview the financial impact without committing.

If cancellation is accepted but not yet confirmed, this endpoint returns **HTTP 202** with `status: CONFIRMED` (the booking is unchanged until the airline finalizes). Retries while cancellation is still pending are idempotent. While cancellation is awaiting confirmation, a subsequent `GET /flights/bookings/{bookingId}` includes `cancelIntentAt` (timestamp of the cancel request). When cancellation completes, the response is **HTTP 200** with a final status of `CANCELLED` or `CANCELLED_WITH_CHARGES`. All asynchronous cancellation updates are delivered as webhook events — subscribe to flight booking webhooks to receive final confirmation and status changes.

## When to Use

- **Confirmed cancellation** — Cancel the booking with the airline after the cancel quote has been reviewed and agreed

## What You Get

- **`bookingId`** — The LiteAPI booking identifier
- **`status`** — Current booking status: `CONFIRMED` while cancellation is awaiting airline confirmation (HTTP 202), or final `CANCELLED` / `CANCELLED_WITH_CHARGES` (HTTP 200)
- **`cancellation_fee`** — Total cancellation penalty; often `0` on idempotent pending retries
- **`refund_amount`** — Amount to be returned (if any)
- **`currency`** — Currency of the fee and refund amounts
- **`destination`** — Where refunded money goes (`original_payment`, `agency_deposit`, `voucher`, etc.)
- **`vouchers[]`** — Airline travel vouchers when issued in lieu of cash; omitted when absent

## Key Features

- **Hotel-parity response** — Flat `data` object with `bookingId`, `status`, `cancellation_fee`, `refund_amount`, `currency`, plus optional `destination` / `vouchers`
- **Pending cancel intent** — HTTP 202 when the airline accepts the cancel but has not confirmed it yet; booking stays `CONFIRMED` until cancellation is finalized, and `GET /flights/bookings/{bookingId}` returns `cancelIntentAt`
- **Fee-based final status** — When cancellation completes (HTTP 200), the final `status` depends on `cancellation_fee`: if the fee is `0`, the booking is fully cancelled (`CANCELLED`); if the fee is greater than `0`, the booking is cancelled with charges retained (`CANCELLED_WITH_CHARGES`)

## Quick Start

Provide the `bookingId` from `POST /flights/bookings` in the URL path. No request body is required.

## Path parameters

- `bookingId` string, required

## Response `200`

Cancellation confirmed with a final status

- object
  - `data` object: Cancellation result
    - `bookingId` string, required: The LiteAPI booking identifier
    - `status` 'CANCELLED' | 'CANCELLED_WITH_CHARGES', required: Final cancellation status
    - `cancellation_fee` number, required: Total cancellation penalty with margin applied
    - `refund_amount` number, required: Amount refunded or to be refunded with margin applied
    - `currency` string, required: Currency of cancellation_fee and refund_amount
    - `destination` 'original_payment' | 'agency_deposit' | 'voucher' | 'bsp_settlement' | 'manual' | 'unknown', nullable: Where refunded money goes (original_payment, agency_deposit, voucher, etc.)
    - `vouchers` object[], nullable: Airline travel vouchers when destination is voucher. Omitted when absent.
      - `voucherId` string: Provider voucher identifier
      - `code` string: Airline credit / voucher code
      - `airline` string: Issuing airline IATA code
      - `pricing` object, nullable: Voucher face value with margin applied on display
        - `display` object: Customer-facing voucher value in the display currency
          - `amount` number: Voucher face value in the display currency (margin applied)
          - `currency` string: ISO 4217 currency code for the voucher display amount
      - `validFrom` string: Voucher validity start date (YYYY-MM-DD)
      - `expiresAt` string: Voucher expiry date (YYYY-MM-DD)
      - `passengerNames` string[]: Passenger names the voucher applies to
      - `notes` string: Provider notes / restrictions

## Other responses

- `202`: Cancel requested; awaiting airline confirmation. Booking remains CONFIRMED until cancellation is finalized. Idempotent while cancellation is still pending.
- `400`: Bad request — invalid booking ID format
- `401`: Unauthorized
- `404`: Booking not found
- `409`: Booking cannot be cancelled in its current state
- `500`: Internal server error
- `502`: Provider error

---

[API](https://skmtc.dev/liteapi/apis/api-flights.md) - [All operations](https://skmtc.dev/liteapi/apis/api-flights/llms.txt) - [OpenAPI document](https://skmtc.dev/liteapi/apis/api-flights/revisions/7ccb4b3a8bde?raw)
