Cancel a booking

DELETE
/bookings/{id}

Cancels a booking, cleaning up any in-flight payment so no held stock or dangling payment reference is left behind. Clients should call this proactively when the customer abandons the booking flow or the session times out, rather than relying on server-side reservation expiry.

On success the endpoint returns 204 No Content. What happens depends on how far the booking has progressed:

No payment started → the booking is destroyed; a subsequent GET returns 404.

Payment pending (incl. a held card-terminal reader the customer has not tapped) → any live reader action and its Stripe payment are cancelled, and the Terminal payment state becomes cancelled. Other pending payment types are marked failed. No retry payment is created, and the booking moves to cancelled.

Payment already charged → the booking moves to cancelled but the payment is left untouched; no refund is issued.

Payment processing (an online payment confirming, or a card-terminal reader the customer has tapped whose payment is settling or has already succeeded in Stripe) → 422; retry once the payment resolves.

Path Parameters

id*string

Booking prefixed ID (e.g. bk_mR2nL5pW) or human-readable booking reference (e.g. SWG-4829)

Header Parameters

Idempotency-Key?string

Client-generated key for idempotent writes; the server deduplicates retries within a 24-hour window.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X DELETE "https://example.com/bookings/string" \  -H "Easol-API-Version: 2026-11-01"
Empty
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "code": "string",
    "message": "string"
  }
}