System responsibilities
- Stripe handles payment collection and billing events.
- Licenzy creates checkout sessions using the stored Stripe connection.
- Licenzy maps purchases to products and entitlements.
- Licenzy derives access from entitlement state.
- Your app reads access state and consumes usage when needed.
- Projects keep runtime resources isolated while billing stays account-level.
Trust model
Checkout only initiates payment. Access is granted only after webhook processing completes and Licenzy updates entitlement state.
How runtime state becomes access
Runtime access is derived from entitlements already stored by Licenzy. Your app does not send mode or product code when it checks access. The API key selects the mode, and the backend evaluates whether the subject currently has usable entitlement state.
This keeps the access-check path small and stable: one subject reference in, one access decision out.
Canonical runtime model
Stripe is the billing signal. Licenzy entitlements are the runtime source of truth. Access APIs are the decision layer, and outbound webhooks propagate resulting runtime state into your own systems.
Runtime API vs portal workflows
Customer apps and backends integrate with the public /v1 runtime API. Human operators use the Licenzy portal for setup, support, debug, delivery inspection, and recovery.
- Use runtime endpoints for checkout, access decisions, entitlement reads, and usage consumption.
- Use the portal for Stripe setup, products, API keys, support/debug workflows, and manual operations.
- Runtime API keys cannot access admin, configuration, support, or operator workflows.