This guide covers patterns for managing licenses tied to recurring subscriptions, whether you use Stripe, Paddle, or any other payment provider.
Lifecycle overview
Creating a subscription license
When a subscription starts, create a license with an expiration matching the billing period:
Store the mapping between your subscription ID and the AuthForge license key in your database.
Renewal
When a subscription renews successfully, extend the license expiration:
The user’s SDK session continues uninterrupted; the next heartbeat or re-authentication will pick up the new expiry.
Cancellation
When a user cancels, you have two options:
Revoke the license immediately on cancellation:
Option B: Let it expire
Don’t revoke; let the license expire at the end of the already-paid period. This is the more user-friendly approach. The license expiresAt was set to the billing period end, so it will naturally stop working.
Option B is the standard practice. Users have paid for the current period and should retain access until it ends.
Payment failure
When a payment fails, decide how to handle the grace period:
Re-subscription
When a user re-subscribes after cancellation or revocation:
- Check if they have an existing (revoked) license key.
- If yes, re-activate it and extend the expiry; this preserves their HWID bindings.
- If no, create a new license.
Plan upgrades and downgrades
Use license variables to control features per plan tier. When a user upgrades or downgrades:
The user picks up the new plan features the next time they authenticate.
Database schema suggestion
Store the mapping between your payment provider and AuthForge:
Next steps