Mental model
Integrate against Licenzy runtime endpoints. Use the portal only for setup.
Licenzy has two surfaces. The runtime API under /v1 is the core integration surface your backend calls during product operation. That is the API your product uses for checkout, access, entitlements, and usage.
The portal API under /portal is a separate internal surface for workspace setup, dashboard actions, and operator workflows such as API key management, Stripe connection setup, and product catalog configuration. It is not part of the runtime integration flow your product should execute against.
The production flow is: your backend creates a Licenzy checkout session, Licenzy creates the Stripe checkout session internally, the user is redirected to the returnedcheckout_url, Stripe later calls Licenzy webhooks, and only then are entitlements updated for access checks.
/portal setup routes into your runtime purchase or access flow. Use /v1 for the product integration and /portal for operator workflows.Core flow
This is the end-to-end sequence the rest of the docs details.
- Connect Stripe in the portal and create mode-scoped products mapped to price IDs.
- Create a server-side Licenzy API key and keep it out of the browser.
- Call
POST /v1/checkout/sessionwithsubject_refandproduct_code. - Redirect the user to the returned
checkout_url. - Stripe calls Licenzy webhook endpoints directly.
- Licenzy updates entitlements during webhook processing.
- Your app calls
POST /v1/access/checkor reads customer access state. - If the entitlement is a usage pack, your app calls
POST /v1/usage/consume.