---
title: "Cancel a hotel booking"
method: POST
path: "/hotels/cancel"
tags: ["hotels"]
---

# Cancel a hotel booking

`POST /hotels/cancel`

## Request

- Base URL: `https://letsfg.co/developers/api/v1`
- URL: `https://letsfg.co/developers/api/v1/hotels/cancel`
- Auth: API key in header `X-API-Key`

Only this account’s own bookings (404 otherwise). A refundable rate cancelled before its free_cancellation_until comes back in full: the captured payment is refunded, or a hold not yet captured is released. A cancellation that would cost money (a non-refundable rate, or past the free window) is refused with 409; the supplier ladder is in the booking terms. Can take over a minute — if the request times out, do NOT assume it failed; re-check before retrying.

## Request body

- HotelCancelRequest
  - `confirmation` string, required: The `confirmation` from a succeeded booking.

## Response `200`

Cancelled; `refund` says what happened to the guest payment.

- HotelCancelResponse: The supplier cancellation result, plus `refund`: what happened to the guest payment.
  - `confirmation` string
  - `charge` string: The supplier cancellation charge (0.00 on a free cancellation).
  - `refund` object
    - `status` 'refunded' | 'released' | 'none' | 'failed' | 'unknown': refunded: the captured payment was refunded. released: the hold was not yet captured and is released. failed or unknown: LetsFG completes it by hand.
    - `amount` number
    - `currency` string
    - `note` string

## Other responses

- `404`: No hotel booking with that confirmation on this account.
- `409`: The supplier would charge for this cancellation, so it was refused. Nothing changed.

---

[API](https://skmtc.dev/letsfg/apis/letsfg-public-developer-api.md) · [All operations](https://skmtc.dev/letsfg/apis/letsfg-public-developer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/letsfg/apis/letsfg-public-developer-api/revisions/516ab6ba1d2e?raw)
