Cancellation policy object
The dated cancellation terms on search results, quotes, and reservations.
The same object appears as cancellationPolicy on search results, quotes, and reservations. Cancellation policies explains how OnSeason picks and dates the terms.
Example
{
"policyID": "2f8d6b1a-9c3e-4d7f-8a1b-5e6c7d8f9a0b",
"name": "Strict",
"version": 1,
"source": "TENANT",
"salesChannel": "acme",
"timeZone": "Europe/Paris",
"fixedAt": "2026-11-10T10:00:00.000Z",
"refundable": true,
"refundableTag": "RFN",
"freeCancellationUntil": "2026-11-21T14:00:00.000Z",
"penalties": [
{ "from": "2026-11-21T14:00:00.000Z", "percentage": 50, "amount": 243, "currency": "EUR" },
{ "from": "2026-11-28T14:00:00.000Z", "percentage": 100, "amount": 486, "currency": "EUR" }
],
"description": "Full refund if cancelled before 2026-11-21 15:00 (Europe/Paris). 50% refund (243.00 EUR) if cancelled before 2026-11-28 15:00 (Europe/Paris). No refund after that."
}Fields
| Field | Type | Description |
|---|---|---|
policyID | UUID or null | The owner's policy. null when source is DEFAULT. |
name | string | Policy name, such as Moderate or Strict. Non-refundable when source is DEFAULT. |
version | integer or null | Version of the policy's refund rules. null when source is DEFAULT. |
source | enum | Where the policy came from. See below. |
salesChannel | string | The sales channel the terms apply to: your channel name in lowercase. |
timeZone | string | IANA timezone the deadlines were set in: the property's zone. |
fixedAt | date-time | When the terms were fixed. For a quote and a reservation, this is the time of the quote. For a search result, the time of the search. |
refundable | boolean | false when cancelling already refunds nothing. |
refundableTag | enum | RFN (refundable) or NRFN (non-refundable). Same fact as refundable. |
freeCancellationUntil | date-time or null | Cancelling before this moment costs nothing. null when free cancellation was already over at fixedAt. |
penalties | array | What cancelling costs from each moment. See below. |
description | string | Plain-English summary with the deadlines in the property's local time. Ready to show to the guest. |
Penalty step
| Field | Type | Description |
|---|---|---|
from | date-time | From this moment, cancelling costs this step. |
percentage | number | Share of the total charged. |
amount | number | percentage of the total, in currency. |
currency | string | Currency of amount. |
Steps are in time order and the percentage only rises. The last step is always 100%. When a charge is already due at fixedAt, the first step starts at fixedAt.
The total behind amount depends on where the object appears:
| Where | Total |
|---|---|
| Search result | totalPrice when present, otherwise avgNightlyPrice times the nights |
| Quote | The quote's totalPrice |
| Reservation | The reservation's totalPrice |
Source
source | The policy is |
|---|---|
LISTING_CHANNEL | The owner's policy for this listing on your channel. |
LISTING | The owner's policy for this listing on every channel. |
TENANT_CHANNEL | The owner's policy for all their listings on your channel. |
TENANT | The owner's default policy. |
CHANNEL_DEFAULT | Your channel's default policy, agreed with OnSeason. |
DEFAULT | No policy is configured. The stay is non-refundable. |