Add-ons
Offer optional features customers can activate on their subscriptions for an additional price.
Add-ons are optional features with their own price and consumption model that customers activate on their subscriptions. They extend a subscription without modifying the base plan — think SSO, SMS channels, or premium support.
How add-ons work
| Aspect | Description |
|---|---|
| Pricing | Fixed base price per billing period, prorated on activation |
| Charge on activation | Immediate charge for remaining days in current period |
| Recurring billing | Base price added to the plan's invoice each cycle |
| Deactivation | No refund — the feature stops immediately |
| Feature access | The add-on's feature appears alongside plan features |
Each add-on maps to exactly one feature. When activated, that feature becomes available through features.get, features.check, and features.list — no different from a plan feature.
Consumption models
Add-ons declare their own consumption model. Boolean add-ons are compatible with any plan. All other models require matching the plan's model.
| Model | Description | Compatible Plans | Example |
|---|---|---|---|
| Boolean | Unlocks access, no usage tracking | All plans | SSO, HIPAA compliance |
| Metered | Included units + overage at period end | Metered plans | SMS: 1000 included, $0.03/extra |
| Credits | Usage consumes from the plan's credit pool | Credits plans | AI summaries: 5 credits/use |
| Balance | Usage deducts from the plan's balance pool | Balance plans | Image processing: $0.015/unit |
Credits and balance add-ons consume from the plan's shared pool — there's no separate pool for the add-on. If the pool runs out, the add-on's feature is blocked too.
Create add-ons in the dashboard
Go to Add-ons and click Create Add-on. Configure the name, base price, feature, and consumption model. For metered add-ons, set included units and overage rate. For credits, set the credit cost per unit.
The feature dropdown only shows features not already assigned to another add-on. Once created, the add-on is available to any customer whose plan is compatible.
Availability by subscription status
Add-ons can be activated on any subscription with a payment method:
| Status | Can activate add-ons |
|---|---|
| Active | Yes |
| Trialing | Yes — card was captured during trial checkout |
| Free plan | Yes — first purchase prompts for a payment method |
Manage add-ons
Add-ons are managed through the dashboard and the customer portal. Activation and deactivation are not available via the API or SDK.
| Action | Where |
|---|---|
| Create / archive add-ons | Dashboard → Add-ons |
| Activate / deactivate | Dashboard (subscription detail) or Customer Portal |
| List active add-ons | API, SDK, Dashboard, or Customer Portal |
List active add-ons via SDK
const active = await customer.addons.list()Response:
{
"success": true,
"data": [
{
"slug": "sso-access",
"name": "SSO Access",
"basePrice": 5000,
"featureCode": "sso",
"featureName": "Single Sign-On",
"featureType": "boolean",
"consumptionModel": "boolean",
"activatedAt": "2026-03-11T00:00:00.000Z"
}
]
}Pass either a Commet ID (cus_xxx) or your external ID as customerId to identify the customer.
Feature access
Add-on features work exactly like plan features — no special handling needed:
const customer = commet.customer('user_123')
// Check boolean add-on
const sso = await customer.features.get('sso')
// { access: true, type: 'boolean', enabled: true }
// Track metered add-on usage
await customer.usage.track('sms_messages', 50)
// List all features (plan + add-ons combined)
const features = await customer.features.list()Billing behavior
Activation charge
When a customer activates a $50/month add-on on day 11 of a 31-day period (20 days remaining):
| Value | |
|---|---|
| Full price | $50.00 |
| Prorated | $50 × (20/31) = $32.26 |
| Invoice type | addon_activation |
The charge goes through Stripe immediately with its own invoice.
Recurring invoices
Starting from the next full billing cycle, the add-on base price appears as a separate line in the plan's invoice:
Plan Pro (base) $99.00
API Calls: 12,500 (2,500 overage × $0.01) $25.00
Add-ons
SMS Channel (base) $15.00
SMS: 1,800 (800 overage × $0.03) $24.00
SSO $50.00
Subtotal $213.00Multi-currency
Add-on prices are defined in USD. For non-USD subscriptions, the price is converted using the plan's exchange rate — the same mechanism used for plan base prices.
Customer portal
Customers can self-service add-ons from the portal:
- Available add-ons — see compatible add-ons with pricing
- Activate — confirmation dialog with prorated charge preview
- Active add-ons — manage active add-ons
- Deactivate — instant, no refund
Add-ons whose feature already exists in the customer's plan are hidden from the portal automatically.
Learn more
Related
- Consumption Models — Metered, Credits, and Balance explained
- Configure Features — Define features that add-ons can unlock
- Credit Packs — Another way to extend plan capabilities
- Manage Subscriptions — Subscription lifecycle and management
- Customer Portal — Where customers activate add-ons
How is this guide?