Billing Plans
The built-in billing plan catalog — plan keys, intervals, capabilities, and the provider env vars that map real products to each plan.
The plan catalog is the single source of truth for what plans exist, what each
unlocks, and how provider products map to them. It is provider-neutral: the same
catalog works with Stripe, Polar, or Lemon Squeezy. Source:
packages/backend/convex/billing/plans.config.ts.
For concepts and how to add a plan, see Billing Catalog.
Plan catalog
| Plan key | Display name | Interval | Capabilities |
|---|---|---|---|
free | Free | — | (none) |
pro_monthly | Pro | month | feature.pro, workspace.members.invite, workspace.members.limit.10, billing.portal |
pro_yearly | Pro | year | (same as pro_monthly) |
pro_lifetime | Pro Lifetime | lifetime | (same as pro_monthly) |
See Capabilities for what each capability unlocks, and Free, Pro, and Lifetime Plans for how the default tiers behave.
Provider mappings
Each plan is linked to a real provider product through environment variables
(providerPlanEnvMappings). Set only the variables for the provider you use:
| Plan | Stripe | Polar | Lemon Squeezy |
|---|---|---|---|
pro_monthly | STRIPE_PRO_MONTHLY_PRICE_ID | POLAR_PRO_MONTHLY_PRODUCT_ID | LEMON_SQUEEZY_PRO_MONTHLY_VARIANT_ID |
pro_yearly | STRIPE_PRO_YEARLY_PRICE_ID | POLAR_PRO_YEARLY_PRODUCT_ID | LEMON_SQUEEZY_PRO_YEARLY_VARIANT_ID |
pro_lifetime | STRIPE_PRO_LIFETIME_PRICE_ID | POLAR_PRO_LIFETIME_PRODUCT_ID | LEMON_SQUEEZY_PRO_LIFETIME_VARIANT_ID |
The active provider is selected with BILLING_PROVIDER. See
Billing Overview.
Capabilities
The full list of billing capability keys — what a workspace has paid for or been granted — and which plans include them.
Audit Event Catalog
The closed set of audit actions shipped by the starter. The source of truth is convex/audit/validators.ts (auditActionValidator and AUDIT_ACTION_CATEGORY). This is a minimal starter audit, not a compliance guarantee.