> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.recurrente.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.recurrente.com/_mcp/server.

# Cita cancelada

POST 

Se emite cuando se cancela una cita. `cancelled_by` dice quién: `customer`, `merchant` o `system` (hora apartada que nadie pagó, o cita movida).

Reference: https://docs.recurrente.com/referencia-api/api-reference/webhook-events/booking-cancel-webhook

## Request

### Payload

- `event_type` (string, required) — Tipo exacto del evento enviado por Recurrente.
- `id` (string, required)
- `status` (enum, required) — `pending` mientras el cliente paga o el negocio decide; `confirmed` cuando la hora es del cliente.
  - Allowed values: `pending`, `confirmed`, `checked_in`, `completed`, `cancelled`, `no_show`
- `api_version` (string, required)
- `connected` (boolean, optional, nullable) — Presente como `true` cuando el evento proviene de una cuenta conectada.
- `account_id` (string, optional, nullable) — Cuenta (sucursal) de la cita.
- `source` (enum, optional) — Por dónde entró la reserva.
  - Allowed values: `storefront`, `dashboard`, `api`, `mcp`, `cliq`, `whatsapp`, `waitlist`, `ical`
- `starts_at` (datetime, optional)
- `ends_at` (datetime, optional)
- `customer` (BookingWebhookCustomer, optional)
- `segments` (list of BookingSegment, optional) — Los tramos de la cita, uno por servicio (dos si el servicio tiene tiempo de proceso). Vacío en un lugar de una clase.
- `staff_member_id` (string, optional, nullable)
- `resource_id` (string, optional, nullable)
- `class_session_id` (string, optional, nullable) — La sesión, si la cita es un lugar en una clase.
- `stay` (BookingStay, optional, nullable) — Las noches en una habitación, si la reserva es una estadía de alojamiento.
- `payment_policy` (enum, optional)
  - Allowed values: `none`, `card_on_file`, `deposit`, `full`
- `currency` (string, optional)
- `total_in_cents` (integer, optional) — Lo que cuesta la cita.
- `paid_in_cents` (integer, optional) — Lo que el cliente ya pagó (anticipo, total o protección).
- `balance_in_cents` (integer, optional) — Lo que falta cobrar el día de la cita. 0 en una sesión de paquete o un saldo cobrado afuera.
- `balance_paid_outside_at` (datetime, optional, nullable) — Cuándo el negocio marcó el saldo como cobrado fuera de Recurrente.
- `checkout_id` (string, optional, nullable)
- `checkout_url` (string, optional, nullable) — Donde el cliente paga lo que la política pide, o deja su tarjeta.
- `balance_checkout_id` (string, optional, nullable)
- `balance_checkout_url` (string, optional, nullable) — El link del saldo, después de `POST /bookings/{booking_id}/balance_charge`.
- `no_show_fee_checkout_id` (string, optional, nullable) — El checkout del cargo por inasistencia, cobrado o rechazado.
- `booking_series_id` (string, optional, nullable) — La serie que la reservó, si se repite.
- `access_url` (string, optional) — La página del cliente para ver, pagar o cancelar su cita (link firmado).
- `customer_note` (string, optional, nullable)
- `merchant_note` (string, optional, nullable)
- `accepted_at` (datetime, optional, nullable)
- `hold_expires_at` (datetime, optional, nullable) — Hasta cuándo se aparta la hora si nadie paga.
- `cancelled_by` (enum, optional, nullable)
  - Allowed values: `customer`, `merchant`, `system`
- `cancellation_reason` (string, optional, nullable)
- `rescheduled_from_id` (string, optional, nullable) — La cita que esta reemplazó al moverse de hora.
- `metadata` (BookingWebhookMetadata, optional)
- `created_at` (datetime, optional)

## Types

### BookingWebhookCustomer

- `id` (string, optional)
- `name` (string, optional, nullable)
- `email` (string, optional, nullable)
- `phone` (string, optional, nullable)

### BookingSegment

- `service_id` (string, optional)
- `product_id` (string, optional)
- `product_variant_id` (string, optional, nullable)
- `staff_member_id` (string, optional, nullable)
- `resource_id` (string, optional, nullable)
- `kind` (enum, optional)
  - Allowed values: `service`, `processing_final`, `stay`, `class_session`
- `starts_at` (datetime, optional)
- `ends_at` (datetime, optional)

### BookingStay

Las noches de una estadía en una habitación.

- `room_type_id` (string, optional) — El tipo de habitación (servicio `kind: lodging`).
- `unit_id` (string, optional, nullable) — La habitación.
- `unit_name` (string, optional, nullable)
- `check_in_on` (date, optional)
- `check_out_on` (date, optional)
- `nights` (integer, optional)
- `guests` (integer, optional)
- `service_tab_id` (string, optional, nullable) — La cuenta abierta que el check-in abrió para los consumos.
- `registered_guests` (list of RegisteredGuest, optional) — El registro de huéspedes (INGUAT).
- `guests_registered_at` (datetime, optional, nullable)

### BookingWebhookMetadata

### RegisteredGuest

- `name` (string, optional)
- `document` (string, optional)
- `nationality` (string, optional)