Skip to main content
POST
Error

Authorizations

Authorization
string
header
required

A staff session token, uk_st_…. Minted by sign-up, sign-in or the two-factor exchange. Only a 401 means it is spent; not_a_member (403) is about the organization named in X-Organization-Id and leaves the token good for the others.

Headers

X-Organization-Id
string

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: the answer is not_a_member (403), which does not mean the session is over. Absent, the session's default organization answers, or — if that membership was revoked while the session was open — any other one the caller still holds.

Path Parameters

id
string<uuid>
required

The price to withdraw.

Query Parameters

environment
enum<string>
default:live

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.

Available options:
live,
test

Response

The price, now archived.

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.

id
string<uuid>
kind
enum<string>

one_time is a lifetime deal or a one-off purchase and carries no interval; recurring always carries one.

Available options:
recurring,
one_time
currency
string

ISO 4217, uppercase. Never absent — an amount with no currency is not a price.

Example:

"BRL"

amount_minor
integer<int64>

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.

currency_exponent
integer | null

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.

interval_unit
enum<string> | null

null on a one_time price.

Available options:
day,
week,
month,
year,
null
interval_count
integer | null

How many intervals between charges. null on a one_time price — never 0.

trial_days
integer | null

The free period this offer promises before the first charge, in days. null is no trial — never 0, so a screen never decides what a zero-day trial means. Checkouts started on this price carry it by default.

per_seat
boolean

The quantity of this price follows the customer's own member count — derived at checkout and kept in step automatically as members join and leave. Part of the offer, so it is as immutable as the amount.

tax_behavior
enum<string>

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.

Available options:
inclusive,
exclusive
archived
boolean

No longer sold. Existing subscriptions keep it.

providers
object[]

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.

created_at
string<date-time>