---
title: "Create a cancellation policy."
method: POST
path: "/rateplan/v1/cancellation-policies"
tags: ["CancellationPolicy"]
---

# Create a cancellation policy.

`POST /rateplan/v1/cancellation-policies`

## Request

- Base URL: `https://api.apaleo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.apaleo.com/rateplan/v1/cancellation-policies`
- Auth: OAuth 2
  - Implicit: `https://identity.apaleo.com/connect/authorize`
  - Scopes: `settings.manage`, `setup.manage`, `admin`

Create a cancellation policy.<br>You must have at least one of these scopes: 'settings.manage, setup.manage'.<br>For fine-grained clients, you must have this permission: 'core.cancellation_policies.create'.

## Headers

- `Idempotency-Key` string

## Request body

- CreateCancellationPolicyModel
  - `code` string, required: The code for the cancellation policy, used to assemble its id
  - `name` object, required: The name for the cancellation policy
  - `description` object, required: The description for the cancellation policy
  - `propertyId` string, required: The id of the property where the cancellation policy will be created
  - `periodFromReference` PeriodModel
    - `hours` integer, nullable: The number of hours within the period
    - `days` integer, nullable: The number of days within the period
    - `months` integer, nullable: The number of months within the period
  - `reference` 'PriorToArrival' | 'AfterBooking', required: The due date for the cancellation policy will be calculated based on this reference point
  - `fee` FeeDetailsModel, required
    - `vatType` 'Null' | 'VeryReduced' | 'Reduced' | 'Normal' | 'Without' | 'Special' | 'Special1' | 'Special2' | 'ReducedCovid19' | 'NormalCovid19' | 'Mixed', required: VAT that applies for the fee
    - `fixedValue` MonetaryValueModel
      - `amount` number, double, required
      - `currency` string, required
    - `percentValue` PercentValueModel
      - `percent` integer, required: Percent to take from the base. Must be between 0 and 100.
      - `limit` integer, nullable: If set, limits the calculation base to the specified number of time slices, starting from the beginning. If not set, the entire stay will be used as a base.
      - `includeServiceIds` string[], nullable: Services included in the calculation base. If none are set, only charges for the unit will be used. The services are only included, if they are part of the rate plan. Extra services are ignored.

## Response `201`

Cancellation policy successfully created.

- CancellationPolicyCreatedModel
  - `id` string, required: The cancellation policy ID

## Other responses

- `400`: Bad request.
- `401`: You are unauthorized.
- `403`: Forbidden.
- `404`: The Request-URI could not be found.
- `415`: Unsupported media type.
- `422`: Validation errors in the request body or query params.
- `499`: Client closed request.
- `500`: An unexpected error occurred.
- `503`: The server is currently unavailable. Please try later.

---

[API](https://skmtc.dev/apaleo/apis/apaleo-rate-plan-api.md) - [All operations](https://skmtc.dev/apaleo/apis/apaleo-rate-plan-api/llms.txt) - [OpenAPI document](https://skmtc.dev/apaleo/apis/apaleo-rate-plan-api/revisions/9c4f5fec8ed5?raw)
