The Plan object v1

Attributes

  • idstring

    Unique identifier for the object.

  • activeboolean

    Whether the plan can be used for new purchases.

  • amountnullable integer

    The unit amount in the smallest currency unit to be charged, represented as a whole integer if possible. Only set if billing_scheme=per_unit.

  • currencyenum

    Three-letter ISO currency code, in lowercase. Must be a supported currency.

  • intervalenum

    The frequency at which a subscription is billed. One of day, week, month or year.

    Possible enum values
    day
    month
    week
    year
  • metadatanullable map

    Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.

  • nicknamenullable string

    A brief description of the plan, hidden from customers.

  • productnullable stringExpandable

    The product whose pricing this plan determines.

More attributes

  • objectstring, value is "plan"

  • amount_decimalnullable decimal string

  • billing_schemeenum

  • createdtimestamp

  • interval_countinteger

  • livemodeboolean

  • meternullable string

  • tiersnullable array of objectsIncludable

  • tiers_modenullable enum

  • transform_usagenullable object

  • trial_period_daysnullable integer

  • usage_typeenum

The Plan object
{
"object": "plan",
"active": true,
"amount": 1200,
"amount_decimal": "1200",
"billing_scheme": "per_unit",
"created": 1681851647,
"currency": "usd",
"interval": "month",
"interval_count": 1,
"livemode": false,
"metadata": {},
"nickname": null,
"product": "",
"tiers_mode": null,
"transform_usage": null,
"trial_period_days": null,
"usage_type": "licensed"
}

Create a plan v1

POST /v1/plans

You can now model subscriptions more flexibly using the Prices API. It replaces the Plans API and is backwards compatible to simplify your migration.

Parameters

  • currencyenumRequired

    Three-letter ISO currency code, in lowercase. Must be a supported currency.

  • intervalenumRequired

    Specifies billing frequency. Either day, week, month or year.

    Possible enum values
    day
    month
    week
    year
  • activeboolean

    Whether the plan is currently available for new subscriptions. Defaults to true.

  • amountintegerRequired unless billing_scheme=tiered

    A positive integer in the smallest currency unit (or 0 for a free plan) representing how much to charge on a recurring basis.

  • metadatamap

    Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata.

  • nicknamestring

    A brief description of the plan, hidden from customers.

  • productobject | string

    The product whose pricing the created plan will represent. This can either be the ID of an existing product, or a dictionary containing fields used to create a service product.

More parameters

  • amount_decimaldecimal string

  • billing_schemeenum

  • idstring

  • interval_countinteger

  • meterstring

  • tiersarray of objectsRequired if billing_scheme=tiered

  • tiers_modeenumRequired if billing_scheme=tiered

  • transform_usageobject

  • trial_period_daysinteger

  • usage_typeenum

Returns

Returns the plan object.

curl https://api.stripe.com/v1/plans \
-u "sk_test_...sk_test_...:" \
-H "Stripe-Version: 2026-10-28.endive" \
-d amount=1200 \
-d currency=usd \
-d interval=month \
-d product=
Response
{
"object": "plan",
"active": true,
"amount": 1200,
"amount_decimal": "1200",
"billing_scheme": "per_unit",
"created": 1681851647,
"currency": "usd",
"interval": "month",
"interval_count": 1,
"livemode": false,
"metadata": {},
"nickname": null,
"product": "",
"tiers_mode": null,
"transform_usage": null,
"trial_period_days": null,
"usage_type": "licensed"
}

Update a plan v1

POST /v1/plans/:id

Updates the specified plan by setting the values of the parameters passed. Any parameters not provided are left unchanged. By design, you cannot change a plan’s ID, amount, currency, or billing cycle.

Parameters

  • idstringRequired

    Unique identifier for the object.

  • activeboolean

    Whether the plan is currently available for new subscriptions.

  • metadatamap

    Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata.

  • nicknamestring

    A brief description of the plan, hidden from customers.

More parameters

  • productstring

  • trial_period_daysinteger

Returns

The updated plan object is returned upon success. Otherwise, this call raises an error.

curl https://api.stripe.com/v1/plans/ \
-u "sk_test_...sk_test_...:" \
-H "Stripe-Version: 2026-10-28.endive" \
-d "metadata[order_id]=6735"
Response
{
"object": "plan",
"active": true,
"amount": 1200,
"amount_decimal": "1200",
"billing_scheme": "per_unit",
"created": 1681851647,
"currency": "usd",
"interval": "month",
"interval_count": 1,
"livemode": false,
"metadata": {
"order_id": "6735"
},
"nickname": null,
"product": "",
"tiers_mode": null,
"transform_usage": null,
"trial_period_days": null,
"usage_type": "licensed"
}