Plan Types
SolvaPay supports four plan types, each optimized for different monetization strategies:Recurring
Fixed-price plans billed on a regular cycle. Best for SaaS subscriptions with predictable pricing.Usage-based
Pay-per-use plans where customers are billed based on actual consumption tracked through usage events.Each usage-based plan is automatically linked to the provider’s
requests meter. When checking limits, SolvaPay queries the Usage timeseries for the customer’s total usage in the current billing period and compares it against the plan’s limit.Hybrid
Combines a recurring base price with usage-based overage billing. Best for enterprise SaaS where customers pay a base fee that includes some usage, with additional charges for overages.One-Time
Single-purchase plans for digital goods, lifetime access, or physical products.Common Plan Fields
All plan types share these base fields:Hidden plans
Mark a plan as hidden to keep it off every customer-facing surface — use this for enterprise or negotiated deals that shouldn’t appear publicly.- Create hidden plans in the SolvaPay Console by enabling the hidden option on the plan form.
- Hidden plans are filtered out of the SDK catalog, checkout eligibility, and product responses. Customers cannot self-select them.
- Assign a hidden plan to a customer from the Console customer page. Direct assignment activates
the plan without collecting payment and stamps the purchase with the
admin_assignmentorigin — the only origin allowed to activate a hidden plan. - Plans without the field remain visible; only
hidden: truechanges behavior.
Plans Are Embedded in Products
Plans are stored as sub-documents inside product documents — there is no separate plans collection. Each product has aplans[] array where each entry is discriminated by the type field.
This means:
- A product owns its plans
- Plans are created, updated, and deleted through the product
- Plan references (
pln_...) are globally unique across all products
Plan API
All plan endpoints are scoped to a product:
Plans can also be managed via the REST API endpoints listed above.
Default Plan
Each product can have one default plan. Setting a new plan as default automatically un-defaults all other plans in that product. The default plan is used as the fallback for:- MCP server tool access (when no specific plan is assigned to a tool)
- New customer sign-ups (when auto-provisioning is configured)
freeUnits: 0 means unlimited free usage, not zero available usage.
Plans and MCP Servers
Plans integrate with MCP servers in two ways:- Server default plan — the
defaultPlanRefon an MCP server determines which plan is used for general tool access - Per-tool plan assignments — individual MCP tools can reference specific plans via
planIds, enabling tool-level access tiering
Purchase Snapshots
When a customer purchases a plan, the plan’s configuration is frozen into a snapshot on the purchase record:Next steps
- Billing — billing cycles, usage billing, and end-of-period processing
- Handle webhooks — purchase and payment lifecycle events
- Usage events guide — record and query billable usage