Back to Blog
Guides

Setting Up License Management with Bravura Admin Pro

Selling software means managing licenses. And managing licenses manually — spreadsheets, email chains, manual key generation — stops being viable the moment you have more than a handful of customers. Bravura Admin Pro exists to replace that entire workflow with a self-hosted dashboard that handles license creation, validation, customer management, and Stripe billing from a single interface.

This guide walks you through the complete setup process: from first login to your first license key.

What Bravura Admin Pro Handles

Before diving into setup, here's what the system manages once it's running:

Self-Hosted = Full Control

Unlike SaaS licensing platforms that hold your data on their servers, Bravura Admin Pro runs on your own infrastructure. Your customer data, license keys, and billing relationships stay under your control. No vendor lock-in, no per-seat pricing from a third party, and no risk of a platform shutting down and taking your licensing system with it.

Initial Setup: Step by Step

1 Deploy to Your Server

Bravura Admin Pro ships as a FastAPI application. Deploy it to any VPS or dedicated server running Python 3.11+. The included systemd service file and nginx configuration template handle production setup. A single deploy.py script automates the process: it creates the virtual environment, installs dependencies, sets up the database schema, and configures the systemd service.

2 Configure Your Environment

The .env file controls all runtime configuration: database credentials, JWT secret, Stripe API keys, SMTP settings for email notifications, and admin credentials. A documented .env.example file ships with every installation. Copy it, fill in your values, and the server is ready to start.

3 Connect Stripe

Add your Stripe secret key and webhook secret to the environment file. Then create a webhook endpoint in your Stripe dashboard pointing to https://your-domain.com/api/webhooks/stripe. Admin Pro listens for checkout.session.completed, invoice.paid, customer.subscription.updated, and customer.subscription.deleted events to automatically provision, renew, and revoke licenses based on payment status.

4 Create Your Products and Tiers

From the admin dashboard, define your software products and their license tiers. Each tier maps to a Stripe price ID, so when a customer purchases through your checkout flow, the system knows which license type to generate. Common tier structures include Standard/Professional/Enterprise or Monthly/Annual/Perpetual.

5 Generate Your First License

With products configured, you can generate licenses manually from the dashboard (useful for beta testers, team members, or one-off grants) or let the Stripe webhook handle automatic generation. Each license includes a unique key, expiration date (if applicable), activation limit, and the associated product/tier metadata.

License Key Architecture

Bravura Admin Pro generates cryptographically signed license keys. Each key contains embedded metadata (product, tier, expiration, customer ID) that your application can verify without an internet connection if needed. The signing key stays on your server; the validation logic ships with your application.

This means:

Security Note

The license signing key is the most sensitive piece of your licensing infrastructure. It should never be committed to version control, shared in documentation, or embedded in client-side code. Store it exclusively in your server's .env file and treat it with the same care as your Stripe secret key.

Stripe Integration Deep Dive

The Stripe integration handles the full subscription lifecycle without manual intervention:

Event What Happens License Effect
Checkout completed Customer pays for the first time New license key generated, activation email sent
Invoice paid Recurring subscription renews License expiration extended
Subscription updated Customer upgrades or downgrades License tier updated to match new plan
Subscription deleted Customer cancels License marked as expired at period end

Every webhook event is processed idempotently, meaning duplicate events (which Stripe occasionally sends) won't create duplicate licenses or trigger duplicate emails.

The Customer Portal

Every Admin Pro installation includes a customer-facing portal. Customers can:

The portal is styled to match your brand — colors, logo, and domain are all configurable. Customers never see the Bravura Admin Pro branding unless you choose to keep it.

The Admin Dashboard

The admin side gives you a real-time view of your licensing business:

Pricing: Choosing the Right Tier

Tier Monthly Annual Perpetual
Starter $49.99/mo $499.99/yr $1,999.99
Professional $99.99/mo $999.99/yr $4,999.99
Enterprise $299.99/mo $2,999.99/yr $14,999.99

Starter covers most indie developers and small teams. Professional adds multi-product support, advanced analytics, and priority support. Enterprise includes custom integration support, SLA guarantees, and white-label options.

Common Setup Questions

Can I migrate from an existing licensing system?

Yes. Admin Pro can import existing customer and license data via CSV or through the API. If you're migrating from a manual system (spreadsheets or email-based keys), the import process typically takes less than an hour. Migrating from another platform like Keygen.sh involves mapping your existing data schema to Admin Pro's format.

What if I don't use Stripe?

Stripe is the supported payment processor. However, the license generation and validation systems are decoupled from billing — you can generate licenses manually or through the API without any Stripe integration. Some developers use Admin Pro purely for license management while handling payments through a separate system.

How many licenses can it handle?

The system is built on FastAPI with MySQL, the same stack that powers production systems handling thousands of concurrent users. For most software businesses, the bottleneck will be Stripe's rate limits (which are generous) before the license server itself becomes a constraint.

Ready to Manage Your Licenses?

Stop managing licenses manually. Get your Admin Pro instance running in under an hour.

Explore Bravura Admin Pro
BW

Brandon Wigley

Founder of Wigley Studios. Building developer tools that respect your autonomy.

Previous: UI Kit Generator Next: Tkinter to Bravura