Skip to main content
Plans are pricing options embedded within products. They define how customers pay for access — whether through a flat recurring fee, per-unit usage charges, a one-time purchase, or a combination of recurring and usage-based billing.

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_assignment origin — the only origin allowed to activate a hidden plan.
  • Plans without the field remain visible; only hidden: true changes behavior.

Plans Are Embedded in Products

Plans are stored as sub-documents inside product documents — there is no separate plans collection. Each product has a plans[] 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)
For free tiers, 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 defaultPlanRef on 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
When plans are created, updated, or deleted, MCP server configurations are automatically synced.

Purchase Snapshots

When a customer purchases a plan, the plan’s configuration is frozen into a snapshot on the purchase record:
This ensures billing is deterministic — changing a plan’s price or limits does not retroactively affect existing purchases.

Next steps