---
title: "Give 60 days' notice of cancellation."
method: POST
path: "/api/v1/billing/cancel"
tags: ["Billing"]
---

# Give 60 days' notice of cancellation.

`POST /api/v1/billing/cancel`

## Request

- Base URL: `https://api-dev.fusehealth.com`
- URL: `https://api-dev.fusehealth.com/api/v1/billing/cancel`
- Auth: API key in header `x-api-key`

Gives the Customer Agreement's 60-day notice of cancellation. Records the end
date (`cancelsAt`, 60 days out) and sets the same date on the Stripe subscription; billing,
portal access and patient checkout continue until then, when the subscription ends and the
clinic is deactivated. Idempotent: a second call returns the dates already recorded. The
notice can be withdrawn before the date with `POST /api/v1/billing/cancel/withdraw`.
Write-scoped.

## Response `200`

Notice recorded (or already recorded)

- object
  - `success` boolean
  - `message` string
  - `data` object
    - `cancelsAt` string, date-time
    - `cancellationRequestedAt` string, date-time
    - `noticeDays` integer

## Other responses

- `401`: Missing, invalid, inactive, or expired API key (or JWT)
- `403`: Authenticated but not permitted (insufficient scope, wrong role, or FUSE feature not enabled)
- `404`: Resource not found (or not owned by the key's clinic)
- `409`: The subscription is an unbilled trial (`code: TRIAL_HAS_NO_NOTICE`). An unbilled trial is never charged and expires on its own, so there is nothing to give notice on.
- `502`: The billing provider could not record the date; nothing was changed.

---

[API](https://skmtc.dev/fusehealth/apis/fuse-brand-api-external.md) · [All operations](https://skmtc.dev/fusehealth/apis/fuse-brand-api-external/llms.txt) · [OpenAPI document](https://skmtc.dev/fusehealth/apis/fuse-brand-api-external/revisions/50821832728c?raw)
