---
title: "Cancel subscription at period end"
method: POST
path: "/api/v1/billing/cancel"
tags: ["billing"]
---

# Cancel subscription at period end

`POST /api/v1/billing/cancel`

## Response `200`

Cancellation scheduled

- CancelResponse
  - `cancel_at_period_end` true
  - `subscription_status` 'none' | 'active' | 'past_due' | 'canceled' | 'revoked', required

## Other responses

- `400` — Rejected cancellation
- `429` — Rate limited
- `502` — Provider error

## Changes

- **2026-08-25** `55772030ddd3` — 9 warning
  - removed the optional property `code` from the response with the `400` status
  - removed the optional property `code` from the response with the `429` status
  - removed the optional property `code` from the response with the `502` status
  - removed the optional property `fields` from the response with the `400` status
  - …5 more
- **2026-08-19** `b38f8e603649` — 9 info
  - added the optional property `code` to the response with the `400` status
  - added the optional property `code` to the response with the `429` status
  - added the optional property `code` to the response with the `502` status
  - added the optional property `fields` to the response with the `400` status
  - …5 more

[Change history](https://skmtc.dev/crosmos/apis/crosmos-api/changes/api/v1/billing/cancel/post.md)

---

[API](https://skmtc.dev/crosmos/apis/crosmos-api.md) · [All operations](https://skmtc.dev/crosmos/apis/crosmos-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/crosmos/crosmos-api/revisions/55772030ddd3/schema)
