Pricing Models
OpenMeter Billing is currently in Beta.
With OpenMeter, you can implement various pricing strategies to meet your business needs. In this guide, we'll cover some common pricing models.
Flat Fees
Flat fee pricing is a simple pricing model where you charge a fixed amount for a product or service. This model is easy to understand and implement, making it a popular choice for many businesses.
One-Time Fee
One-time fee pricing is a model where you charge customers a fixed amount for a product or service. Typically used as installment fees or setup fees.
You can create a plan with a one-time fee as:
Recurring Fee
Recurring fee pricing is a model where you charge customers a fixed amount at regular intervals, such as monthly or annually.
You can create a plan with a recurring fee as:
With Usage Limits
You can also set usage limits for recurring fees. For example, you can allow one million monthly token usage for a monthly $199 recurring charge.
You can create a plan with a recurring fee and usage limits as:
Usage-Based Pricing
Usage-based Pricing is a model where you charge customers based on their usage of a product or service.
Per-Unit Pricing
Per-unit Pricing or Pay-As-You-Go is a model where you charge customers based on
the number of units they use, as reported by the meter. For example, you can
charge customers $0.01
per AI token used. If this customer uses 10,000
tokens, they will be charged $0.01 * 10,000 = $100
.
You can create a plan with per-unit Pricing as:
Tiered Pricing
Tiered Pricing is a model where fees vary between usage levels. OpenMeter supports two types of tiered pricing:
- Graduated Pricing: Charge each unit according to the tier it falls into.
- Volume Pricing: Charge customers based on the highest achieved tier.
Graduated Pricing
Graduated Pricing or tiered Pricing is a model where you charge each unit according to the tier it falls into.
First Unit | Last Unit | Unit Price | Flat Price |
---|---|---|---|
0 | 1000 | $0.3 | $0 |
1001 | 5000 | $0.2 | $0 |
5001 | ∞ | $0.1 | $0 |
For example, a customer with 6,000
units will be charged as:
(1000 * $0.3) + (4000 * $0.2) + (1000 * $0.1) = $300 + $800 + $100 = $1,200
as each unit is charged according to the tier it falls into.
You can create a plan with graduated Pricing as:
Volume Pricing
Volume pricing is a model where you charge customers based on the highest achieved tier.
First Unit | Last Unit | Unit Price | Flat Price |
---|---|---|---|
0 | 1000 | $0.3 | $0 |
1001 | 5000 | $0.2 | $0 |
5001 | ∞ | $0.1 | $0 |
For example, a customer with 6,000
units will be charged as
6,000 * $0.1 = $600
as the highest achived tier is $0.1
.
You can create a plan with volume pricing as:
Flat Prices in Tiers
In OpenMeter you can define per unit or flat fees in each tier. For example, you can charge $500 for the first tier and $0.1 per unit for the rest. This is useful to define overage charges or to bill a flat fee regardless of usage.
First Unit | Last Unit | Unit Price | Flat Price |
---|---|---|---|
0 | 1000 | $0 | $500 |
1001 | ∞ | $0.1 | $0 |
For example, if this customer uses 2,000
units, they will be charged as:
(1000 * $0 + $500) + (1000 * $0.1 + $0) = $500 + $100 = $600
Defining a flat fee in the first tier, will be always be billed regardless of usage, as tiers start from zero.
For example, if you have a flat fee of $500 in the first tier, the total amount will be $500 when the quantity is 0.
To bill $0 when there's no usage, set the unit price for the first tier and omit the flat price. Let's see the previous example with a $500 flat fee for the first tier and $0.1 per unit for the rest:
First Unit | Last Unit | Unit Price | Flat Price |
---|---|---|---|
0 | 1 | $500 | $0 |
2 | 1000 | $0 | $0 |
1001 | ∞ | $0.1 | $0 |
For example, if this customer uses 2,000
units, they will be charged as:
(1 * $500 + $0) + (999 * $0 + $0) + (1000 * $0.1 + $0) = $500 + $0 + $100 = $600
but if this customer uses 0
units, they will be charged as:
(0 * $500 + $0) + (0 * $0 + $0) + (0 * $0.1 + $0) = $0 + $0 + $0 = $0
Overage Fees
Overages are additional charges that customers incur when they exceed their usage limits. We can model overages with graduated pricing as:
First Unit | Last Unit | Unit Price | Flat Price |
---|---|---|---|
0 | 1000 | $0 | $0 |
1001 | ∞ | $0.01 | $0 |
Where the first 1,000 units are free, and the rest are $0.01 per unit.
For example, if this customer uses 2,000
units, they will be charged as:
(1000 * $0) + (1000 * $0.01) = $0 + $100 = $100
If you want a flat $500 fee for the first tier, you can set the flat price as follows:
First Unit | Last Unit | Unit Price | Flat Price |
---|---|---|---|
0 | 1000 | $0 | $500 |
1001 | ∞ | $0.01 | $0 |
For example, if this customer uses 2,000
units, they will be charged as:
(1000 * $0 + $500) + (1000 * $0.01) = $0 + $500 + $100 = $600
See the graduated pricing example above for more details.
Package Pricing
Package pricing is a model where features are sold in predefined groups or packages. This model is particularly useful for services that want to simplify billing by offering usage in fixed-size bundles rather than per-unit charges.
In package pricing:
- Each package contains a fixed number of units (
quantityPerPackage
) - The price is set per package (
amount
) - The total price is calculated based on the number of packages needed to accommodate the total usage
Package pricing is particularly effective for:
- API services where you want to simplify billing by offering fixed-size bundles
- Storage services where you want to sell storage in predefined chunks
- Compute services where you want to offer processing time in fixed blocks
- Any service where you want to simplify billing by avoiding per-unit calculations
Let's look at examples with a package size of 20 units and a price of $10 per package:
Usage | Calculation | Total Price | Explanation |
---|---|---|---|
0 units | 0 packages × $10 | $0 | No packages needed as there's no usage |
20 units | 1 package × $10 | $10 | Usage fits exactly in one package |
20.1 units | 2 packages × $10 | $20 | Additional 0.1 units requires a new package |
98 units | 5 packages × $10 | $50 | Usage requires 5 full packages |
Usage of a positive value will be rounded up to the next closest package, while zero usage won't generate any charge. If you want zero usage to charge customers, combine package pricing with minimum commitments.
You can create a plan with package pricing as:
Dynamic Pricing
With dynamic pricing model meters track cost, not usage. The price is calculated based on the underlying meter's value, optionally with a markup rate applied. The currency will be the customer's currency.
This model can be used to model cases where the price of each unit sold varries
request by request. Given modeling this complexity is not feasible on product
catalog level, we allow deferring the price calculation to the event reporting
stack: we expect the value of the meter to be an amount
that request was
costing.
Dynamic pricing is particularly effective for:
- Cost-plus pricing models where you want to add a markup to your costs
- Services where prices fluctuate based on market conditions (e.g. SMS, MMS)
- Multi-currency scenarios where you want to maintain relative pricing
- Services that need to pass through variable costs with a markup
Tracking Cost With Meters
With dynamic pricing, we use meters to track cost instead of usage. Meters are designed initially to track usage, so pay attention to a couple of details:
- There is no exchange rate; all customers and meter costs must be in the same currency
- Meter tracking costs look the same as the ones tracking usage. Signify use-case with naming
Markup rate
The final price is calculated by multiplying the base price (from the meter) by the markup rate (by default the markup rate is 1).
Let's look at examples with a base price of $100:
Markup Rate | Calculation | Final Price | Explanation |
---|---|---|---|
0.0 | $100 × 0.0 | $0 | Zero markup results in no charge |
0.5 | $100 × 0.5 | $50 | 50% markup reduces the price by half |
1.0 | $100 × 1.0 | $100 | No markup, price equals the base price |
1.5 | $100 × 1.5 | $150 | 50% markup increases the price by half |
2.0 | $100 × 2.0 | $200 | 100% markup doubles the price |
You can create a plan with dynamic pricing as: