Licensing & Purchasing

There are two kinds of licence on a udServer, and they are easy to confuse:

  • The server license is what entitles this installation to run. It carries the user, session and shard limits and the licensed domains, and it is applied on the Server Configuration page.
  • User licences are per-person seats — tiers and add-ons — held by organisations and assigned to their members. They are what let someone use udStream and the udSDK products against this server.

The Licensing page in the Admin console covers the second kind: what may be sold, at what price, and how many seats exist. It requires the Server Config global permission.

Day-to-day seat management belongs to the organisations themselves — see the user guide's Licensing page. An administrator can step in from the Organisations page.

Purchasing

With purchasing enabled, an organisation member holding Purchase Licenses can buy seats from their own organisation's Licenses page through Stripe checkout. Without it, seats reach an organisation only when an administrator allocates them.

SettingDescription
Allow purchasingMaster switch. Off means the purchase controls do not appear anywhere.
CurrencyLowercase three-letter ISO 4217 code — usd, aud, eur — used for every purchase on the server.
Stripe publishable keyThe public key from your Stripe dashboard.
Stripe secret keyThe secret key. Never returned by the server, so the field shows Configured or Not configured rather than a value. Leave it blank to keep the stored key.
Stripe webhook signing secretUsed to verify that a webhook really came from Stripe. Same blank-to-keep behaviour.
Stripe webhook endpointRead-only. The URL to register as a webhook endpoint in your Stripe dashboard.

The webhook is not optional. A checkout completes at Stripe, and it is the webhook that tells udServer to turn that payment into seats — without it, purchases are taken and no seats appear. Register the endpoint shown here, and paste its signing secret back into the field above.

Changing the currency does not convert existing prices; it changes the code the prices are charged in. Set prices after settling on a currency.

Products

Each tier and add-on is listed with a price, a cap and a consumed count.

  • Price is per seat, in the currency above. Setting a price is what offers a product for sale; leaving it blank or 0 hides it from checkout while leaving it assignable from allocations an administrator creates.
  • Cap is the server-wide seat limit for that product, and it comes from the signed server license rather than from this page. A product the license does not mention is capped at zero, not unlimited — unlimited requires the license to name the product explicitly.
  • Consumed is how many seats have been allocated across all organisations, purchased ones included.

Tiers are cumulative — each includes the ones below it — and add-ons extend whatever tier a member already holds. The tiers and add-ons themselves are described in the user licensing guide.

Legacy Licensing

Per-user licensing arrived after this server may already have been in service, so there is a transitional fallback. While the uselegacylicenses server setting is on, a user holding no licence at all still receives the old premium response, exactly as before — which means nobody loses access on the day licensing is switched on, and equally that nobody notices they were never licensed.

The Legacy licensing section is how you get off it safely:

  • Legacy fallback reports whether the setting is on.
  • Legacy license fallbacks counts the sessions served by the fallback since the server last started. Once that stops climbing, nothing is relying on it.
  • The report lists recently-active users who currently hold no licence — the people who would lose premium the moment you turn it off — with the organisations each belongs to. Active within sets how far back "recently" reaches.

Work through that list first: get those users licensed, or accept that they lose premium, and only then turn the setting off. There is deliberately no switch for it on this page — it is set through /_config/modify with uselegacylicenses, which makes it a considered change rather than a stray click.

For the underlying APIs, see /_admin/licenses/overview, /_admin/licenses/pricing/set and /_admin/licenses/legacyreport in the developer guide.