Pricing models
Overview of entitlement models, rating models, overage, entities, and credits
Pricing models
Owostack pricing has three building blocks:
- Entitlement model: when usage becomes billable
- Rating model: how billable usage becomes money
- Resource shape: whether the feature is consumable usage or persistent capacity
That separation is why Owostack can support free quotas, pay-as-you-go APIs, tiered overage, credits, and seat-based products without a separate billing system for each one.
Start here
- If you want monthly included quota before charging, read Included vs usage-based
- If you want simple package pricing like "₦500 per 1,000 events", read Package pricing
- If you want staircase tiers where each band prices only its own units, read Graduated pricing
- If you want one reached band to reprice all billable usage, read Volume pricing
- If you want limits that block or charge after the included amount, read Overage
- If you want seats, workspaces, or projects, read Entities & seat-based pricing
- If you want prepaid balances, read Credits
- If you want plans managed from code, read Define plans in code
The model
1. Entitlement model
This decides what happens before billing kicks in.
included- Customer gets a quota first
- Example:
50,000emails per month included
usage_based- Billing starts from the first tracked unit
- Example: every API call is billable immediately
prepaid- Usage consumes credits from a stored balance
- Example: AI runs consume credits bought in advance
2. Rating model
This decides how billable units are priced.
package- Fixed amount per
billingUnits - Example:
₦5per1,000API calls
- Fixed amount per
graduated- Each tier prices only the units inside that tier
volume- The reached tier prices all billable usage
3. Resource shape
This decides what the feature represents.
- Consumable metered features
- Usage is tracked with
track() - Examples: API calls, tokens, emails, GB processed
- Usage is tracked with
- Non-consumable entity features
- Capacity is managed with
addEntity()andremoveEntity() - Examples: seats, workspaces, projects
- Capacity is managed with
Common combinations
included + package- Monthly quota with simple overage
included + graduated- Included usage, then staircase overage
included + volume- Included usage, then band-based overage
usage_based + package- Pure pay-as-you-go
usage_based + graduated- Tiered pay-as-you-go
usage_based + volume- Repriced pay-as-you-go bands
entity + included- Seat caps or workspace caps
prepaid + metered- Credits or stored-value billing
Important rules
- Tiered pricing works on billable quantity, not always total usage.
- For
included, billable quantity ismax(0, usage - included). - For
usage_based, billable quantity is all tracked usage. usage_basedis effectively always chargeable usage, so overage settings do not control it.- Entity removal is deferred. A removed seat becomes
pending_removaland still counts until the end of the current billing period.