Prices
A price attaches money to a product. Until a product has one, it cannot be sold.
A price is not just a number. It carries a currency, an optional country scope, and optionally a tier ladder that changes the unit rate as the quantity grows. One product can hold several prices at once: CHF for Switzerland, EUR everywhere else, and a different ladder for an enterprise plan. Kontier picks the right one at billing time from the customer's currency and country.
Flat or tiered
Every price is one of two shapes, and the choice is simply whether you supply a tier ladder.
A single amount
Leave the tiers out and the price is one rate for every unit. list_price is
the whole story: 12 seats at CHF 159.00 is CHF 1,908.00.
Use this until you actually need volume discounts. Most prices never need more.
A tier ladder
Supply tiers and the unit rate changes as the quantity grows. Each tier covers everything above the previous tier's upper bound, up to its own.
How the ladder is walked lives on the product, not the price
The price supplies the numbers; the product's Pricing Model decides how they are applied. Volume charges every unit at the rate of the tier the total lands in. Staircase charges each band at its own rate and adds them up. On the same ladder, 20 seats costs CHF 2,180 under volume and CHF 2,730 under staircase. Pricing models works both through.
The dashboard writes the ladder back out in plain language, which is the fastest way to confirm you entered what you meant:
Add one in the dashboard
We will price Premium Support Seat in Swiss francs, with volume breaks at 5, 15 and 50 seats.
-
Open the product's Prices tab
Go to Products, open the product, and stay on the Prices tab. It is the default tab on the detail page.
-
Add the price
Click Add price. A row appears in the table. Set the Amount, pick the Currency, and choose a Country.
Leave the country as All countries unless you genuinely need a country-specific rate. A price with no country matches every customer, which is what you want for the common case.
-
Add the tiers
Expand the row with the chevron to reveal the TIERS editor, then use Add tier for each break point.
You enter each tier's TO value, its upper bound. The FROM column fills itself in from the tier above, and the final tier runs to ∞. Leave FORMULA on Flat unless the rate has to be calculated; that is covered in Price formulas.
-
Check the summary
Read the plain-language summary back. If it does not say what you meant, the bounds are wrong, not the prices.
Add one with the API
One POST. Tiers are an array in ascending up_to order, and the last tier
omits up_to to mean "everything above".
Two things that reject the request
Every money value is a string in major units: "159.00", never 15900. And
each tier requires both unit_amount and flat_amount — send "0" for the
one you are not using. The request schema rejects unknown properties outright.
Dashboard and API names
| In the dashboard | In the API |
|---|---|
| Amount | list_price, a string in major units |
| Currency | currency, ISO 4217 |
| Country, or All countries | country_code, omitted to match any country |
| TIERS → the TO column | tiers[].up_to, the inclusive upper bound |
| TIERS → the PRICE column | tiers[].unit_amount |
| FORMULA → Flat | neither rate_expression nor formula_id set |
| (not shown in the table) | kind: "BASE" or "PLAN_OVERRIDE" |
The FROM column has no API field. It is derived from the previous tier's
up_to, which is why you only ever enter upper bounds.
Where prices go next
- Put the product in a plan. The plan bundles priced products into something a customer can subscribe to.
- Subscribe a customer. At billing time Kontier resolves which of the product's prices applies, from the customer's currency and country.
- Override it where you must. A
PLAN_OVERRIDEprice pins a different rate to one plan version. A rate negotiated with a single customer is not a price: it lives on the subscription item, with a window of its own instead of a version. When it came from a signed quote that agreed a term, the window is that term, so the rate lapses on the day the deal does and the line bills the catalog price again. Several windows chained on one line are a ramp, which is the agreed rate changing on a schedule the customer signed.
Next step
Continue to Plans to bundle this product into something a customer can subscribe to.
Reference
| Topic | When you need it |
|---|---|
| Pricing models | How Volume, Staircase and Package read the same ladder differently, with worked numbers |
| Price formulas | Computing a tier rate instead of stating it |
| Key sets | One product carrying many priced variants |
| Rate tables | Lookup and bracket tables a formula reads from |
| Costs | Upstream cost, org-scoped or per product, for margin pricing |
| Agreements | A negotiated rate bounded by a term, and what happens when it runs out |
| Prices API | Every field, plus compute and resolve |