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.
Ready to map your billing architecture?
In 30 minutes we identify your data contract gaps and show exactly what fixing the architecture looks like.