---
title: "Cancel experience booking"
method: POST
path: "/experiences/bookings/{bookingId}/cancel"
tags: ["Bookings"]
---

# Cancel experience booking

`POST /experiences/bookings/{bookingId}/cancel`

## Request

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

## Overview

Cancel a confirmed experience booking and trigger any applicable refund.

## When to Use

- **Guest-initiated cancellation** - After the guest confirms via the cancel-preview screen

## What You Get

- **`status`** - Booking status after cancellation
- **`providerStatus`** - Raw upstream provider status, when available
- **`refund`** - Present when a refund was calculated; `refundPending` indicates it hasn't settled yet

## Quick Start

POST with the `bookingId` from `POST /experiences/bookings`. Call `GET /experiences/bookings/{bookingId}/cancel-preview` first to show the guest the refund amount.

## Error codes

Product-operation codes are listed below. Shared authentication/access/rate-limit middleware can return common codes such as 401, 40301 or 4290. HTTP status and error code are separate; do not parse message text.

| Code | Meaning |
| --- | --- |
| 75101 | booking not found |
| 75102 | this booking has already been cancelled |
| 75103 | cancellation is not allowed for this booking |
| 75104 | the activity has already started |
| 75105 | invalid cancellation request |
| 75106 | cancellation provider request failed |
| 75107 | cancellation provider request timed out |
| 75108 | cancellation request is unauthorized |
| 75109 | cancellation request is forbidden |
| 75110 | cancellation service is temporarily unavailable |
| 75199 | failed to process cancellation |

## Path parameters

- `bookingId` string, required

## Response `200`

Booking cancelled

- ExperienceCancelEnvelope
  - `data` ExperienceCancelData, required
    - `bookingId` string
    - `status` string
    - `providerStatus` string, nullable
    - `refundPending` boolean, nullable
    - `refund` ExperienceCancellationRefundResponse
      - `cancellationFee` number
      - `refundAmount` number
      - `refundType` string
      - `estimateConfidence` string
      - `currency` string
      - `sellingPrice` number

## Other responses

- `400`: Invalid booking id, already-cancelled booking, cancellation not allowed, or activity already started. A cancellation-not-allowed error does not necessarily mean non-refundable.
- `401`: Authentication failed. Shared API-key middleware uses code 401; product handlers can use their operation-specific unauthorized code listed on the endpoint.
- `403`: Access denied. Shared access middleware uses common codes; product-specific forbidden codes are listed on the endpoint.
- `404`: Booking not found or does not belong to this account. Code 75101.
- `429`: Shared Dispatcher request limit exceeded. Code 4290; this is not an Experiences operation code.
- `500`: Operation failed. Code 75199.
- `502`: Dependency failure, or an unclassified operation failure. Inspect the operation-specific code.
- `503`: Service temporarily unavailable. Code 75110.
- `504`: Dependency request timed out. Code 75107.

---

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