ZuploZuplo
LoginStart for Free
  • Documentation
  • API Reference
Introduction
Getting Started
    Develop using the Portal
      1 - Setup Your Gateway2 - Rate Limiting3 - API Key Auth4 - Deploy5 - Dynamic Rate LimitingMCP - Quick start
    Develop Locally
      1 - Setup Your Gateway2 - Rate Limiting3 - API Key Auth
Concepts
Development
Policies
Handlers
API Keys
MCP Server
MCP Gateway
AI Gateway
Developer Portal
Monetization
    OverviewQuickstart
    Concepts
      MetersFeaturesPlansRate CardsPricing ModelsBilling Models
    Guides
    Reference
    TroubleshootingThird-Party IntegrationsCustom Monetization
Deploying & Source Control
Observability
Networking & Infrastructure
Account Management
Programming API
Build with AI
Zuplo CLI
Migration Guides
Platform LimitsSecuritySupportTrust & ComplianceChangelog
powered by Zudoku
Concepts

Plans

Plans are subscription tiers that package features together. They represent the rows on your pricing page - Free, Pro, Enterprise - each with different feature access and usage limits. Plans define what customers get when they subscribe.

Plan Structure

Plans follow a hierarchical structure where each level defines a specific aspect of your pricing:

Plan
Phase
Rate Card
Price
Entitlement
Feature
Meter
Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.
EntityDescription
PlanA subscription tier (e.g., Pro, Enterprise)
PhaseA time period within a plan (e.g., trial, default)
Rate CardPricing and entitlements for a feature within a phase
PriceThe pricing model (flat, tiered, package, etc.)
EntitlementUsage limits and access controls for customers
FeatureA capability that can be metered or toggled
MeterTracks usage data for metered features

Plans contain phases, and each phase contains rate cards that define pricing and entitlements. See Rate Cards for details on configuring pricing within plans.

Before creating a plan, you must first define the Features that will be included. Plans reference features by their key, so features must exist before they can be added to rate cards.

Plan Lifecycle

Plans move through a defined lifecycle:

  1. Draft - Initial state when created. Can be modified freely.
  2. Active - Published and available for subscriptions. Cannot be modified.
  3. Archived - No longer available for new subscriptions but existing subscriptions continue.

Example: Pro Plan with Trial

This example creates a Pro plan with:

  • A 1-week free trial phase with 1,000 API calls
  • A subscription_fee flat-fee rate card on the default phase that charges $99 in advance at the start of each billing period
  • A usage_based rate card with 10,000 included API requests per billing period and $0.01 per request overage in arrears
  • A priority_support static feature granted on both phases

For step-by-step examples building plans from simple to complex, see Plan Examples.

TerminalCode
curl \ https://dev.zuplo.com/v3/metering/$BUCKET_ID/plans \ --request POST \ --header "Authorization: Bearer $ZAPI_KEY" \ --header "Content-Type: application/json" \ --data @- << EOF { "key": "pro", "name": "Pro Plan", "description": "For growing teams with a 1-week free trial", "currency": "USD", "billingCadence": "P1M", "phases": [ { "key": "trial", "name": "Trial", "duration": "P1W", "rateCards": [ { "type": "flat_fee", "key": "api_requests", "name": "API Requests (Trial)", "featureKey": "api_requests", "billingCadence": null, "price": null, "entitlementTemplate": { "type": "metered", "issueAfterReset": 1000, "isSoftLimit": false, "usagePeriod": "P1W" } }, { "type": "flat_fee", "key": "priority_support", "name": "Priority Support (Trial)", "featureKey": "priority_support", "billingCadence": null, "price": null, "entitlementTemplate": { "type": "boolean", "config": true } } ] }, { "key": "default", "name": "Default", "duration": null, "rateCards": [ { "type": "flat_fee", "key": "subscription_fee", "name": "Subscription Fee", "billingCadence": "P1M", "price": { "type": "flat", "amount": "99.00", "paymentTerm": "in_advance" } }, { "type": "usage_based", "key": "api_requests", "name": "API Requests", "featureKey": "api_requests", "billingCadence": "P1M", "entitlementTemplate": { "type": "metered", "issueAfterReset": 10000, "isSoftLimit": true, "usagePeriod": "P1M" }, "price": { "type": "tiered", "mode": "graduated", "tiers": [ { "upToAmount": "10000", "flatPrice": null, "unitPrice": { "type": "unit", "amount": "0.00" } }, { "flatPrice": null, "unitPrice": { "type": "unit", "amount": "0.01" } } ] } }, { "type": "flat_fee", "key": "priority_support", "name": "Priority Support", "featureKey": "priority_support", "billingCadence": null, "price": null, "entitlementTemplate": { "type": "boolean", "config": true } } ] } ] } EOF

How This Plan Works

PhaseDurationAPI RequestsCost
Trial1 week1,000 (hard limit)Free
DefaultOngoing10,000 included$99/month

After the trial ends, customers automatically move to the default phase. The $99 monthly subscription fee is charged in advance at the start of each billing period via the subscription_fee flat-fee rate card. The plan includes 10,000 API requests per period; additional requests are billed at $0.01 each in arrears (soft limit allows overage).

Plan Properties

PropertyRequiredDescription
keyYesUnique identifier for the plan
nameYesHuman-readable display name
currencyYesThree-letter ISO currency code (e.g., USD)
billingCadenceYesBilling period as ISO 8601 duration (e.g., P1M for monthly)
phasesYesArray of plan phases with rate cards
descriptionNoDetailed description of the plan
metadataNoCustom key-value pairs for your own use
proRatingConfigNoProration settings (see below)

Phase Properties

PropertyRequiredDescription
keyYesUnique identifier for the phase within the plan
nameYesHuman-readable display name
durationNoISO 8601 duration (e.g., P1W for 1 week). Omit for the final phase.
rateCardsYesArray of rate cards defining pricing and entitlements

Proration

Plans support automatic proration when customers upgrade or downgrade mid-billing-period. Enable proration with the proRatingConfig property:

Code
{ "proRatingConfig": { "enabled": true, "mode": "max_consumption_based" } }

When proration is enabled, charges are automatically adjusted based on the portion of the billing period remaining at the time of the plan change.

Publishing a Plan

Plans must be published before customers can subscribe to them. A newly created plan starts in draft status and is not available for subscriptions until published.

Transition a draft plan to active status:

TerminalCode
curl \ https://dev.zuplo.com/v3/metering/$BUCKET_ID/plans/$PLAN_ID/publish \ --request POST \ --header "Authorization: Bearer $ZAPI_KEY"

Once published, a plan cannot be modified. To make changes, you must create a new version of the plan.

Common Billing Cadences

DurationDescription
P1WWeekly
P1MMonthly
P3MQuarterly
P1YYearly

API Reference

For complete API operations (list, get, update, delete, archive), see the Plans API Reference.

Edit this page
Last modified on May 24, 2026
FeaturesRate Cards
On this page
  • Plan Structure
  • Plan Lifecycle
  • Example: Pro Plan with Trial
    • How This Plan Works
  • Plan Properties
  • Phase Properties
  • Proration
  • Publishing a Plan
  • Common Billing Cadences
  • API Reference
JSON