---
title: "Cancel a Team subscription at period end"
method: PATCH
path: "/v1/orgs/{orgId}/billing/subscription"
tags: ["Billing"]
---

# Cancel a Team subscription at period end

`PATCH /v1/orgs/{orgId}/billing/subscription`

Schedules the org to revert to free at the end of the current billing period by setting cancel_at_period_end on its Stripe subscription. Team stays active until the period ends; the plan flips to free on the customer.subscription.deleted webhook.

## Path parameters

- `orgId` string, uuid, required

## Headers

- `Authorization` string

## Request body

- object
  - `cancelAtPeriodEnd` true, required

## Response `200`

Default Response

- object
  - `links` object, required
    - `self` string, uri, required
  - `data` object, required
    - `id` string, uuid, required
    - `type` 'subscription', required
    - `attributes` object, required
      - `plan` object, required
        - `code` union, required
          - 'free'
          - 'free-legacy-v1'
          - 'team-v1'
          - 'business-v1'
          - 'enterprise-v1'
        - `displayName` string, required
      - `status` 'canceling', required
      - `startedAt` string, date-time, nullable, required

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `409` — Conflict
- `500` — Internal Server Error
- `503` — Service Unavailable

---

[API](https://skmtc.net/tessl/apis/tessl-api.md) · [All operations](https://skmtc.net/tessl/apis/tessl-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tessl/tessl-api/versions/fbb186825642/schema)
