Creating Price Plans
Build a price plan with charges, pricing models, and entitlements.
What Is a Price Plan?
A price plan is a named, versioned configuration that defines how to charge customers for usage. It contains:
- Charges — one or more charge definitions, each linking a metric to a pricing model
- Entitlements — feature flags, usage limits, and custom configuration values that activate when a customer subscribes
- Billing metadata — currency, billing period (monthly, annual, or custom), and a display name
Price plans are versioned and immutable. Once you create a plan (or a new version of an existing plan), its charges and entitlements cannot be modified. This guarantees that historical invoices and active subscriptions always reference a stable, unchanging pricing configuration. To update a plan, you create a new version.
The 5 Pricing Models
per_unit
A fixed price per unit of usage. Every unit costs the same amount regardless of how much the customer uses.
| |
$0.0002 per API call — 500,000 calls = $100.
tiered
Different unit prices apply to different ranges of usage. Each tier’s price applies only to usage within that range (a “staircase” model). The first N units cost X, the next M units cost Y, and so on.
| |
First 100k calls are free. Calls 100k–1M cost $0.0001 each. Calls above 1M cost $0.00005 each. up_to: null means “unbounded.”
volume
The customer’s total usage determines which tier they’re in, and that tier’s unit price applies to all units — not just the ones in that range. This rewards higher-volume customers with a better rate on everything they use.
| |
A customer using 5,000 GB/month lands in tier 2 and pays $0.07 for all 5,000 GB = $350.
package
Charges are calculated in blocks of N units. Partial blocks are rounded up to the next full block. Useful for “per 1,000 calls” or “per 10 GB” pricing.
| |
1,500 SMS messages = 2 blocks (rounded up) = $16.
flat_fee
A fixed amount that doesn’t depend on usage. Use this for base subscription fees, platform access fees, or per-seat fees when seat count is tracked separately. Set metric_key: null for a true flat fee.
| |
Mixing Models in One Plan
A single plan can include multiple charges referencing different metrics and pricing models. This is how you build real-world pricing like “base fee + usage”:
| |
This plan charges $49/month plus tiered API call pricing plus $0.08/GB egress, and grants customers access to advanced analytics, a 1,000 req/min rate limit, and email support.
Plan Immutability — Why It Matters
When Acme Corp signs up for Growth v1, their subscription is pinned to version 1. If you change the tiered pricing in version 2 two months later, Acme’s invoices still use version 1’s tiers. This means:
- Historical invoices are always reproducible
- Customers aren’t surprised by pricing changes mid-period
- You can safely publish new pricing without breaking existing commitments
To update a plan, POST /v1/price-plans with the same id. ABAXUS increments the version automatically and marks the new version as active. Existing subscriptions continue on their pinned version until you schedule a plan change amendment.
Listing Plan Versions
| |
Returns all versions of the plan with their status (active, deprecated), effective dates, and changelog entries.