licencebook

Licence keys that answer from Stripe

Your plugin sends a key and the site it runs on. licencebook finds the Stripe subscription the key was made from and answers with what it pays for: the tier, the features, how many sites. The answer comes back signed, so your plugin keeps it for 24 hours and checks it with no network call. If we go down, nobody who paid gets switched off.

Check A Signed Answer

A real answer from tonight's seed run, for the AI Act Pro add-on on shop-one.example.com. Your browser checks its signature against our public key; nothing is sent to us.

Our public key 759f4d26c9f421be029b7a5d68732643fdaee4bac623b5debd8db5047f2464ab

Granted. Signature good, checked when this page was built.

Product
noticesolved-ai-act-pro
Site
shop-one.example.com
Tier
pro
Features
file, vendors
Seats
1
Paid to
2026-11-12T22:27:19Z
Trusted until
2026-10-14T22:27:19Z
Signed
2026-10-13T22:27:19Z

The Contract

Three calls, one request body, one answer shape. The full text is licence-v1.md, and the shape is licence-v1.schema.json.

  1. POST /api/licence/v1/checkWhat the key pays for on this site. Moves nothing.
  2. POST /api/licence/v1/activateTakes a seat for this site, then answers as check does. A seat is one site the key is switched on for.
  3. POST /api/licence/v1/deactivateFrees the seat, so a customer can move a site even on a lapsed key.
{ "key": "lb_…", "site": "shop.example.com", "product": "noticesolved-ai-act-pro", "plugin_version": "1.4.0" }
A refusal carries exactly one reason, from this closed list
ReasonMeaningWhat the plugin shows
unknown_keyNo subscription carries this key.Ask for the key again.
revokedWe switched the key off by hand: a refund, a chargeback, a key posted in public.The support address.
expiredThe subscription is cancelled, unpaid, or past its paid period.The renewal link.
seat_limitEvery seat is taken and this site holds none.The sites, and a way to free one.
product_mismatchThe key belongs to another product.The product the key is for.

Anything but a 200, and any network failure, means no answer: the plugin keeps its last signed one and changes nothing.

Our Own Add-ons

Our first customers are our own plugins. On 13 October 2026, none of the three NoticeSolved Pro add-ons could switch on for a paying customer: each turns on only where our own sites set NOTICESOLVED_DOGFOOD, and each names a licence address that does not resolve.

The three Pro add-ons, read from their source on 2026-10-13
Add-onLicence address it namesResolvesOn for a paying customer
contentsolved-ai-act-wordpressai-act.noticesolved.io/api/licence/v1No (ENOTFOUND)No: our own sites only
contentsolved-consent-wordpressconsent.noticesolved.io/api/licence/v1No (ENOTFOUND)No: our own sites only
contentsolved-access-wordpressaccess.noticesolved.io/api/licence/v1No (ENOTFOUND)No: our own sites only