Skip to main content
PATCH
cURL
Update a plan’s name, description, visibility, default status, metadata, overage behavior, what happens to its unused plan credits or plan balance, or its plan credit or plan balance limit. Changing credit or balance rules (overage, unused plan credits or plan balance, their limits, credit purchases or top-ups) publishes a new current version of the plan. New buyers get it; existing subscribers stay on their version until you move them with Change subscription version or Move subscribers to a plan version. Name, description, visibility, default status and metadata apply to the plan directly.

Authorizations

x-api-key
string
header
required

Headers

Idempotency-Key
string

Unique key used to safely retry this write for 24 hours without applying it twice.

Required string length: 1 - 200
Commet-Version
string
default:2026-08-27

API version used by this reference. Send this header to select this contract explicitly.

Path Parameters

id
string
required

Body

application/json
name
string
Minimum string length: 1
description
string | null
metadata
object
isPublic
boolean
unusedPlanCredits
object

Credits plans only. What happens to unused plan credits at each reset. Changing it publishes a new version of the plan; each subscription stays on its version until moved.

planCreditLimit
object | null

Credits plans only. The most plan credits a subscription spends per day or per week; null removes the limit. Changing it publishes a new version of the plan; each subscription stays on its version until moved.

unusedPlanBalance
object

Balance plans only. What happens to unused plan balance at each reset. Changing it publishes a new version of the plan; each subscription stays on its version until moved.

planBalanceLimit
object | null

Balance plans only. The most plan balance a subscription spends per day or per week, in USD cents; null removes the limit. Changing it publishes a new version of the plan; each subscription stays on its version until moved.

blockOnExhaustion
boolean

Credits and balance plans only. false lets usage continue past the plan and purchased amounts and bills the missing amount as overage at the next renewal; a credits plan bills it at the price per credit and needs one. Trials and free plans always stop, so free plans accept only true. Changing it publishes a new version of the plan; each subscription stays on its version until moved.

isDefault
boolean

Make this plan the default plan of its plan group: customers created with that planGroupId start on it, and a paid plan of the group that ends from the customer portal, a revoked payment authorization or exhausted dunning moves to it instead of canceling. Requires a free plan in a plan group; replaces the group's previous default plan. false unmarks it.

Response

Success

id
string
required
name
string
required
code
string
required
description
string | null
required
consumptionModel
enum<string> | null
required
Available options:
metered,
credits,
balance
isPublic
boolean
required
isDefault
boolean
required
isFree
boolean
required
blockOnExhaustion
boolean | null
required

Credits and balance plans: true stops usage when the plan and purchased amounts run out; false lets usage continue and bills the missing amount as overage at the next renewal (credits at the price per credit). Trials and free plans always stop.

unusedPlanCredits
object
required

Credits plans only; null for other consumption models. What happens to unused plan credits at each reset. Purchased credits never expire and never count toward maxPlanCredits.

planCreditLimit
object | null
required

Credits plans only. The most plan credits a subscription spends per day or per week; null means no limit.

unusedPlanBalance
object
required

Balance plans only; null for other consumption models. What happens to unused plan balance at each reset. Purchased balance never expires and never counts toward maxPlanBalance.

planBalanceLimit
object | null
required

Balance plans only. The most plan balance a subscription spends per day or per week, in USD cents; null means no limit.

sortOrder
integer
required
Required range: -9007199254740991 <= x <= 9007199254740991
planGroupId
string | null
required
metadata
object | null
required
createdAt
string<date-time>
required
updatedAt
string<date-time>
required
features
object[]
required
prices
object[]
required
exchangeRates
object[]
required
countries
object[]
required

Countries with their own currency or prices in the current version. Buyers from any other country pay the USD prices.

object
string
required
Allowed value: "plan"
livemode
boolean
required