Cancel & Refunds
Cancel an Experiences booking with a refund quote first, then confirm cancel. Refund amounts match what was charged at booking.
1. Cancel preview
GET /v3.0/experiences/bookings/{bookingId}/cancel-previewExample:
{
"data": {
"bookingId": "tJHcT_KHA",
"cancellable": true,
"policy": {
"cancellationFee": 0,
"refundAmount": 101.25,
"refundType": "FULL",
"estimateConfidence": "HIGH",
"currency": "EUR",
"sellingPrice": 101.25
}
}
}Show refundAmount / cancellationFee before the guest confirms cancel.
2. Cancel
POST /v3.0/experiences/bookings/{bookingId}/cancelPossible outcomes
status | Meaning |
|---|---|
CANCELLATION_REQUESTED | Cancel accepted; final cancel / refund may still be pending (refundPending: true) |
CANCELLED | Cancel completed |
3. After cancel
- Poll
GET /v3.0/experiences/bookings/{bookingId}untilCANCELLED, or - Listen for
experience.book.cancelled
Refunds may complete after the cancel request returns. Treat CANCELLATION_REQUESTED as success for the cancel action, not as “money already returned.”
Errors
| HTTP | Typical case |
|---|---|
| 400 | Booking already cancelled |
| 404 | Unknown bookingId |
| 502 | Temporary failure — retry with backoff |
Best practices
- Always call cancel-preview before cancel in guest UIs
- Be explicit about pending refunds when
refundPendingis true - Use webhooks / polling for final
CANCELLED
Next
Updated about 3 hours ago
Did this page help you?

