# Cancel Reservation

## POST /reservations/{bookingReferenceId}/cancellation

> Cancel an existing confirmed reservation. This endpoint allows you to cancel a confirmed reservation that has a free cancellation policy.\
> \
> \*\*Important Business Rules:\*\*\
> \- Only reservations with \`policyType: "free-cancellation"\` can be cancelled via this endpoint\
> \- Non-refundable reservations (\`policyType: "non-refundable"\`) cannot be cancelled and will result in a 400 error\
> \- Cancellation must be requested within the free cancellation period (before \`freeCancellationUntilDays\` prior to check-in)\
> \- Attempts to cancel outside the cancellation period will result in a 400 error\
> \- Pending reservations (not yet confirmed) will return a 404 error\
> \- Already cancelled reservations will return a 404 error\
> \
> \*\*Cancellation Policy Calculation:\*\*\
> The cancellation deadline is calculated in the property's local timezone based on the \`freeCancellationUntilDays\` value from the cancellation policy. For example, if a reservation has a check-in date of 2024-01-15 and \`freeCancellationUntilDays: 7\`, the last day to cancel is 2024-01-08 (in the property's timezone).\
> \
> \*\*Successful Cancellation:\*\*\
> A 200 response indicates the cancellation was successful. The reservation status will be updated to "Cancelled".

```json
{"openapi":"3.0.0","info":{"title":"Channels Plus Channel API","version":"0.0.1"},"paths":{"/reservations/{bookingReferenceId}/cancellation":{"post":{"operationId":"cancelReservation","description":"Cancel an existing confirmed reservation. This endpoint allows you to cancel a confirmed reservation that has a free cancellation policy.\n\n**Important Business Rules:**\n- Only reservations with `policyType: \"free-cancellation\"` can be cancelled via this endpoint\n- Non-refundable reservations (`policyType: \"non-refundable\"`) cannot be cancelled and will result in a 400 error\n- Cancellation must be requested within the free cancellation period (before `freeCancellationUntilDays` prior to check-in)\n- Attempts to cancel outside the cancellation period will result in a 400 error\n- Pending reservations (not yet confirmed) will return a 404 error\n- Already cancelled reservations will return a 404 error\n\n**Cancellation Policy Calculation:**\nThe cancellation deadline is calculated in the property's local timezone based on the `freeCancellationUntilDays` value from the cancellation policy. For example, if a reservation has a check-in date of 2024-01-15 and `freeCancellationUntilDays: 7`, the last day to cancel is 2024-01-08 (in the property's timezone).\n\n**Successful Cancellation:**\nA 200 response indicates the cancellation was successful. The reservation status will be updated to \"Cancelled\".","parameters":[{"$ref":"#/components/parameters/SmApiId"},{"$ref":"#/components/parameters/SmApiKey"},{"name":"bookingReferenceId","description":"The unique identifier of the reservation to be cancelled","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response. The reservation has been cancelled successfully. Note that a successful cancellation does not necessarily mean a full refund will be issued. Refunds are subject to the property's cancellation policy.","headers":{}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/ServerError"}}}}},"components":{"parameters":{"SmApiId":{"name":"x-sm-api-id","description":"The api id for channel","required":true,"in":"header","schema":{"type":"string"}},"SmApiKey":{"name":"x-sm-api-key","description":"The api key for channel","required":true,"in":"header","schema":{"type":"string"}}},"responses":{"BadRequest":{"description":"Invalid request","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"The specified resource was not found","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ServerError":{"description":"Unexpected error occurred","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","required":["errors"],"properties":{"errors":{"minItems":1,"type":"array","description":"An array of error objects, for most errors, this array would only contain one error object. An errors array must contain at least one error object.","items":{"type":"object","required":["code"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"meta":{"type":"object"}}}}}}}}}
```

{% hint style="success" icon="sparkles" %}

## Still have questions?

Use the <i class="fa-gitbook-assistant">:gitbook-assistant:</i> **Ask** button at the top of the page to chat with our AI assistant — it can help you navigate the guide, understand requirements, and troubleshoot issues.

If you need more support, visit [Integration Support](/integration-support/integration-support.md).
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.siteminder.com/channels-plus-api/reference/cancel-reservation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
