# Update a plan

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.

## Returns

The updated plan object is returned upon success. Otherwise, this call raises [an error](https://docs.stripe.com/api/plans/update.md#errors).

## Parameters

- `active` (boolean, optional)
  Whether the plan is currently available for new subscriptions.

- `metadata` (object, optional)
  Set of [key-value pairs](https://docs.stripe.com/docs/api/metadata.md) 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`.

- `nickname` (string, optional)
  A brief description of the plan, hidden from customers.

- `product` (string, optional)
  The product the plan belongs to. This cannot be changed once it has been used in a subscription or subscription schedule.

- `trial_period_days` (integer, optional)
  Default number of trial days when subscribing a customer to this plan using [`trial_from_plan=true`](https://docs.stripe.com/docs/api.md#create_subscription-trial_from_plan).

```curl
curl https://api.stripe.com/v1/plans/{{PLAN_ID}} \
  -u "<<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2025-09-30.clover" \
  -d "metadata[order_id]"=6735
```

### Response

```json
{
  "id": "plan_NjpIbv3g3ZibnD",
  "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": "prod_NjpI7DbZx6AlWQ",
  "tiers_mode": null,
  "transform_usage": null,
  "trial_period_days": null,
  "usage_type": "licensed"
}
```
