Add a price to a plan
Requires billing:write. Prices a plan in one currency.
A plan has many prices, one per currency and recurrence: R29 are both correct and neither converts into the other, so each is a number a person chose. amount_minor is an integer in the currency’s minor unit and travels with currency always — an amount without a currency is not a price, and 1000 is R$10.00 in BRL and ¥1000 in JPY.
Exactly one live price may exist per plan per currency per recurrence — that is the offer. Changing the money is not an update: use POST /v1/organization/catalogue/prices/{id}/reprice, which archives the old offer and creates the new one in one step. This endpoint is for the currency or recurrence a plan does not have yet.
Authorizations
A staff session token, uk_st_…. Minted by sign-up, sign-in or the two-factor exchange.
Headers
The organization the caller is acting on — the org_… code that appears in the panel URL. It identifies; the membership JOIN is what authorizes, so a forged code reads nothing. Absent, the session's default organization answers.
Path Parameters
The plan this price belongs to.
Query Parameters
Which environment to act in. A view parameter, valid only on the staff surface — a machine credential never chooses its environment, it is resolved from the key.
live, test Body
A price on the way in — what both creating and repricing send. Every field is stated: there is no PATCH on a price, so no request carrying this is editing one, and "leave that field as it was" has no meaning here.
recurring, one_time ISO 4217, uppercase. Required — an amount with no currency is not a price, and 1000 is R$10.00 in BRL and ¥1000 in JPY.
"BRL"
An integer in the currency's minor unit: 14900 is R$149.00. Never a decimal, and never divided by 100 on the way in — the currency's exponent is 0 for JPY and CLP and 3 for KWD.
x >= 0Whether amount_minor already contains the tax. Required, with no third "undecided" value: we calculate no tax — that is the payment provider's job — but whether the number includes it is an input only the person who typed the number knows, and the moment it matters is the moment somebody is charged.
inclusive, exclusive Required on a recurring price and refused on a one_time one, rather than ignored: a lifetime deal carrying a monthly interval is how it ends up in a renewal job's query.
day, week, month, year How many intervals between charges. Required on recurring, refused on one_time.
x >= 1Response
The price. providers is empty until the price is mapped onto a payment provider — until then nothing can charge it.
One plan's amount in one currency. A plan has many prices, one per currency: selling in BRL and USD is a price per currency, a number you chose, never a conversion at display time.
A price is immutable. Repricing means creating a new price and archiving the old one, because a subscription refers to the price it was sold at and editing the amount would silently change what somebody agreed to pay.
one_time is a lifetime deal or a one-off purchase and carries no interval; recurring always carries one.
recurring, one_time ISO 4217, uppercase. Never absent — an amount with no currency is not a price.
"BRL"
The amount as an integer in the currency's minor unit. 14900 is R$149.00; in a zero-decimal currency the same integer is 14,900 whole units.
How many decimal places the currency has, so amount_minor can be rendered without hard-coding a divisor: 2 for BRL and USD, 0 for JPY and CLP, 3 for KWD. null only if the stored code is one this API no longer prices in.
null on a one_time price.
day, week, month, year, null How many intervals between charges. null on a one_time price — never 0.
Whether amount_minor already contains tax. There is no third “undecided” value: the calculation belongs to the payment provider, but this input is yours and is answered when the price is created.
inclusive, exclusive No longer sold. Existing subscriptions keep it.
How this price is known at each payment provider. Empty means nothing can charge it yet. A price may be mapped onto more than one provider, and onto more than one account of the same provider.