---
title: "Update an organization's metered subscription plan."
method: PATCH
path: "/v0/organizations/{organization}/plan"
tags: ["organizations", "plan"]
---

# Update an organization's metered subscription plan.

`PATCH /v0/organizations/{organization}/plan`

Schedules or clears a cancel-at-period-end for the organization's metered subscription. Available to organization managers and must be called with a user session JWT, not a user API key.

## Path parameters

- `organization` string, required

## Request body

- JsonUpdatePlan
  - `cancel_at_period_end` boolean, required — Update the subscription's scheduled cancellation. Set to `false` to resume a plan scheduled to cancel at period end, or `true` to schedule it to cancel at the end of the current period. Only applies to metered subscriptions, not licensed (Self-Hosted) plans.

## Response `200`

successful operation

- JsonPlan
  - `cancel_at_period_end` boolean, required — Whether the subscription is set to cancel at the end of the current period (the org keeps access until `current_period_end`, then downgrades to Free).
  - `card` JsonCardDetails, required
    - `brand` 'amex' | 'diners' | 'discover' | 'jcb' | 'mastercard' | 'unionpay' | 'visa' | 'unknown', required
    - `exp_month` integer, required
    - `exp_year` integer, required
    - `last_four` string, required
  - `created` string, date-time, required
  - `current_period_end` string, date-time, required
  - `current_period_start` string, date-time, required
  - `customer` JsonCustomer, required
    - `email` string, required
    - `name` string, required
    - `uuid` string, uuid, required
  - `level` 'free' | 'pro' | 'team' | 'enterprise', required
  - `license` JsonLicense
    - `entitlements` integer, required
    - `expiration` string, date-time, required
    - `issued_at` string, date-time, required
    - `key` string, required
    - `level` 'free' | 'pro' | 'team' | 'enterprise', required
    - `organization` string, uuid, required
  - `organization` string, uuid, required
  - `status` 'active' | 'canceled' | 'incomplete' | 'incomplete_expired' | 'past_due' | 'paused' | 'trialing' | 'unpaid', required
  - `tiers` JsonPriceTier[], nullable — The tiered price ladder for this plan, ordered ascending by `up_to`. Populated for the Pro tiered active-series price; `None` for flat-priced or licensed plans.
    - `flat_amount` integer
    - `unit_amount` integer
    - `up_to` integer, nullable — Inclusive upper bound (active-series count) for this tier. `None` is the unbounded top tier, presented as "Get in Touch".
  - `unit_amount` integer, required

## Other responses

- `4XX` — Error
- `5XX` — Error

---

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