Overview
Plans are the foundational building blocks of your pricing structure in FlexPrice. Each plan represents a pricing model that can be assigned to customers through subscriptions. Plans contain prices, features, and metadata that define what customers receive and how they’re charged.Plan Structure
Core Fields
Unique identifier for the plan (max 50 characters)
Display name of the plan (max 255 characters)
Human-readable identifier for API lookups (max 255 characters). Must be unique within tenant and environment.
Detailed description of what the plan includes
Order in which plans should be displayed in UI (lower numbers appear first)
Custom key-value pairs for storing additional plan information
Plan status:
draft or published. Only published plans can be used in subscriptions.Environment Scoping
All plans are scoped to a specific tenant and environment, allowing you to:- Test pricing changes in development/staging before production
- Maintain different pricing across multiple products or regions
- Keep customer data isolated
Example Plan
Plan Types
Plans can be structured in various ways depending on your business model:- Seat-Based
- Usage-Based
- Hybrid
Plans that charge based on the number of users or seats.Key Characteristics:
Seat-Based Plan
- Price type:
FIXED - Billing model:
FLAT_FEE - Quantity represents number of seats
- Common in SaaS applications
Working with Plans
Creating Plans
When creating a plan, consider:Choose a clear naming convention
Choose a clear naming convention
Use names that clearly communicate value:
- Good: “Professional”, “Enterprise”, “Pay As You Go”
- Avoid: “Plan A”, “Option 2”, “Package X”
lookup_key for programmatic access:Set display order for UI presentation
Set display order for UI presentation
Control how plans appear in your pricing page:
Use metadata for custom attributes
Use metadata for custom attributes
Store additional business logic in metadata:
Start as draft, publish when ready
Start as draft, publish when ready
Plans start in
draft status:- Test configuration without affecting customers
- Validate prices and features
- Publish only when ready for production use
Plan Lifecycle
Create as Draft
New plans are created with
status: "draft". They’re not available for subscriptions yet.Configure Prices
Add one or more prices to the plan. Plans can have multiple prices with different billing periods.
Best Practices
Unique Lookup Keys: The
lookup_key must be unique within your tenant and environment when status is published. Use descriptive keys like starter, professional, or enterprise.Keep it Simple
Start with 2-3 clear plan tiers. You can add complexity later based on customer needs.
Consistent Billing Periods
Offer each plan in monthly and annual variants rather than mixing billing periods within a single plan.
Test in Staging
Use separate environments to test pricing changes before affecting production customers.
Version with Metadata
Use metadata to track plan versions:
{"version": "2.0", "deprecated": "false"}Related Resources
Prices
Configure pricing details for your plans
Features
Define feature access and limits per plan
Add-ons
Create optional add-ons for your plans
Subscriptions
Learn how plans are assigned to customers