Logo

Pricing Models

Beta
Beta

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 UnitLast UnitUnit PriceFlat Price
01000$0.3$0
10015000$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 UnitLast UnitUnit PriceFlat Price
01000$0.3$0
10015000$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 UnitLast UnitUnit PriceFlat Price
01000$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

Note

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 UnitLast UnitUnit PriceFlat Price
01$500$0
21000$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 UnitLast UnitUnit PriceFlat Price
01000$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 UnitLast UnitUnit PriceFlat Price
01000$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:

UsageCalculationTotal PriceExplanation
0 units0 packages × $10$0No packages needed as there's no usage
20 units1 package × $10$10Usage fits exactly in one package
20.1 units2 packages × $10$20Additional 0.1 units requires a new package
98 units5 packages × $10$50Usage 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 RateCalculationFinal PriceExplanation
0.0$100 × 0.0$0Zero markup results in no charge
0.5$100 × 0.5$5050% markup reduces the price by half
1.0$100 × 1.0$100No markup, price equals the base price
1.5$100 × 1.5$15050% markup increases the price by half
2.0$100 × 2.0$200100% markup doubles the price

You can create a plan with dynamic pricing as: