Overview

Introduction

Licenzy gives you subscriptions, credits, and access control on top of Stripe. Your backend talks to the runtime API for checkout, entitlements, and usage instead of rebuilding billing logic from scratch.

Start free in test mode. Go live when you're ready.

Category: Getting Started2 sections

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.

Hard boundary
Do not mix /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.

  1. Connect Stripe in the portal and create mode-scoped products mapped to price IDs.
  2. Create a server-side Licenzy API key and keep it out of the browser.
  3. Call POST /v1/checkout/session with subject_ref and product_code.
  4. Redirect the user to the returned checkout_url.
  5. Stripe calls Licenzy webhook endpoints directly.
  6. Licenzy updates entitlements during webhook processing.
  7. Your app calls POST /v1/access/check or reads customer access state.
  8. If the entitlement is a usage pack, your app calls POST /v1/usage/consume.