Skip to content

Prices

A price is a variant of a product, and a product can have many.

A price is what you charge for a product. One product can have many prices, so the same plan can be sold monthly or yearly, in dollars or euros, at a flat fee or per seat. A subscription item points at a price, and that price decides how the line is billed.

What a price sets

Each price carries the full billing recipe for that variant:

Setting What it controls
Pricing model How the amount is worked out: flat, per unit, tiered, and the rest. See pricing models.
Currency The currency the price is in.
Billing period How often it charges: a unit (day, week, month, year) and a count.
Billing timing Whether it charges at the start or the end of the period. See billing timing.
Trial days A free trial before billing starts. See free trials.
Included quantity A free allowance before per-unit charges begin.
Taxable Whether tax applies to lines from this price. See how tax is applied.
Minimum and maximum Optional floor and ceiling on the line amount.
Meter For metered products, which meter's usage this price bills. See meters.

Many prices, one product

Because a product can have many prices, you build your options as variants rather than as separate products. A single Pro plan can offer a monthly price and a yearly price side by side, and a customer's subscription simply points at the one they chose.

Worked example

Your Pro plan has three prices:

  • $99 per month, in dollars.
  • $990 per year, in dollars.
  • 99 euros per month, in euros.

They are all the same product. A customer on the yearly dollar price and a customer on the monthly euro price are both on Pro; their subscriptions point at different prices.

In the API

Prices are created through the POST /v1/prices endpoint, which takes the product, the pricing model and its config, the currency, and the billing settings above. See the API reference for the full request, and pricing models for the config each model expects.

Edge cases

  • A metered product's price must name a meter, and a non-metered product's price must not. The two go together.
  • The meter on a price cannot change after it is created. Changing what a price measures would make old and new periods disagree.
  • Currency is set on the price. To sell in another currency, add another price.
  • A new version of a price keeps its currency. Versioning a price replaces it for new signups while everyone already on it stays put. A version that changed currency would split the same price into two, with the existing subscribers stranded on the old one and unable to move, because a subscription cannot change currency. To sell in another currency, add a separate price rather than versioning this one.
  • The currency has to be one yRecurring supports. A well-formed three-letter code that isn't on the supported list is refused when you save the price, not later when it fails to bill.