> ## Documentation Index
> Fetch the complete documentation index at: https://commet.co/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Manage Plans

> Create and manage pricing plans in Commet that automatically generate subscriptions.

Plans are pre-configured billing packages that combine pricing, features, and billing intervals. Assign a plan to a customer and Commet creates the subscription, customer portal, and recurring invoices automatically.

## Plan components

| Component | Description | Example |
| - | - | - |
| **Name & Description** | Customer-facing display information | "Pro Plan — For growing teams" |
| **Consumption Model** | How customers consume and pay for features | Metered, Credits, or Balance |
| **Prices** | Pricing options by billing interval | $99/month, $899/year |
| **Features** | What's included — boolean, metered, or seat-based | API Calls (10k), SSO, 5 Seats |
| **Trial Days** | Optional free trial period per interval | 14 days |
| **Visibility** | Public (pricing page) or private (internal use) | Public or Private |

## Free plans

A free plan has a price of \$0 and no billing cycle. Customers are activated immediately without checkout. Free plans have one restriction: **overage cannot be configured**. Features on a free plan always block usage at the included limit. See [How Do Free Plans Work](https://commet.co/docs/how-do-free-plans-work-without-payment.md) for details.

## Create a plan in the dashboard

Go to **Plans** and click **Create Plan**. Fill in each component from the table above, then save. For detailed feature configuration, see [Configure Features](https://commet.co/docs/configure-features.md).

## Retrieve plans via SDK

**TypeScript**

```typescript theme={null}
const plans = await commet.plans.list()
```

**Python**

```python theme={null}
plans = commet.plans.list()
```

**Go**

```go theme={null}
plans, err := client.Plans.List(ctx, nil)
```

**Java**

```java theme={null}
var plans = commet.plans().list();
```

**PHP**

```php theme={null}
$plans = $commet->plans->list();
```

**cURL**

```bash theme={null}
curl https://commet.co/api/v1/plans \
  -H "x-api-key: $COMMET_API_KEY"
```

Include private plans:

**TypeScript**

```typescript theme={null}
const plans = await commet.plans.list({ includePrivate: 'true' })
```

**Python**

```python theme={null}
plans = commet.plans.list(include_private="true")
```

**Go**

```go theme={null}
includePrivate := "true"
plans, err := client.Plans.List(ctx, &commet.ListPlansParams{
    IncludePrivate: &includePrivate,
})
```

**Java**

```java theme={null}
var plans = commet.plans().list(
    ListPlansParams.builder().includePrivate("true").build()
);
```

**PHP**

```php theme={null}
$plans = $commet->plans->list(includePrivate: 'true');
```

**cURL**

```bash theme={null}
curl "https://commet.co/api/v1/plans?includePrivate=true" \
  -H "x-api-key: $COMMET_API_KEY"
```

Get a specific plan:

**TypeScript**

```typescript theme={null}
const plan = await commet.plans.get({ id: 'pln_xxx' })
```

**Python**

```python theme={null}
plan = commet.plans.get("pln_xxx")
```

**Go**

```go theme={null}
plan, err := client.Plans.Get(ctx, "pln_xxx")
```

**Java**

```java theme={null}
var plan = commet.plans().get("pln_xxx");
```

**PHP**

```php theme={null}
$plan = $commet->plans->get('pln_xxx');
```

**cURL**

```bash theme={null}
curl https://commet.co/api/v1/plans/pln_xxx \
  -H "x-api-key: $COMMET_API_KEY"
```

## Learn more

* [How Does Billing Work](https://commet.co/docs/how-does-billing-work.md)
* [How Do Free Plans Work Without Payment](https://commet.co/docs/how-do-free-plans-work-without-payment.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.