Create the benefit
Benefits → New benefit → License Keys. Name it for customers (Pro license), then
set the terms:
optional
A short string at the front of every key from this benefit, so you can tell at a glance which
product a key came from —
ACME, PRO, TEAM.optional
Off by default (keys never expire). Turn it on and set a duration — a number plus days,
months or years. The clock starts when the key is issued.
optional
Off by default (unlimited machines). Turn it on and set the maximum number of machines that can
hold an active activation at once.
Activations and seats
An activation — sometimes called an instance — is one machine, install or device using a key. Your software creates one on first run and stores the ID it gets back. When the activation limit is reached, further activations are refused until a seat is freed. Both you and the customer can free one:- The customer deactivates a machine from Licenses in their portal
- You deactivate one from Licenses in the admin panel
- Your software calls the deactivate endpoint — the right thing to do on uninstall or sign-out
Key statuses
Every key resolves to exactly one status. This is what the License API reports, and what you see in the admin panel:inactive is not a problem — it just means nobody has activated the key yet. It’s still a
perfectly good key.Validating from your software
Your app talks to the License API using a server-side API key. The usual pattern:1
Activate once
On first run, call activate with the customer’s key and a name for the machine. Store the
instance.id you get back.2
Validate on launch
Call validate with the key and the stored
instance.id. Check valid.3
Deactivate on the way out
On uninstall or sign-out, call deactivate so the customer gets their seat back.
License API reference
Endpoints, request and response shapes, error handling, and code samples.
Who owns the key
This depends on the gateway the order came from, and it decides whether you can regenerate a key:
For Lemon Squeezy and Polar, disabling a key and deactivating seats still work and sync in both
directions. Only regeneration is unavailable.