v2.2.0 — Offline Validation & Customer Portal

Professional License Management
for Developers & Businesses

Issue, track, and validate software licenses with a powerful REST API. Self-hosted, open-source, and built for scale.

Admin Login Check a License Customer Portal
Licenses Supported
3
License Models
Ed25519
Offline Signing
100%
Self-Hosted
Capabilities

Everything you need to manage licenses

From simple key validation to complex reseller hierarchies — one system handles it all.

🔑

License Issuance

Create time-based, usage-based, or trial licenses instantly. Set activation limits, expiration dates, and custom levels per license.

REST API

Six clean endpoints — activate, deactivate, validate, status, batch, signing keys. Rate-limited per IP with per-key overrides and JSON responses throughout.

🔐

Offline Validation

Issue Ed25519-signed license files your clients verify without a network call. Perfect for air-gapped and desktop environments.

👥

Customer Portal

Let customers log in, view their licenses, deactivate devices, and download PDF certificates — no support ticket needed.

🤝

Reseller Management

Create reseller accounts with scoped access. Resellers manage only their own assigned licenses with role-based permissions.

📊

Analytics & Logs

Activation trends, country breakdowns, top applications, full audit trail, email logs, and a real-time server health dashboard.

🏟

Coupon Codes

Create discount coupons with expiry dates, usage caps, and fixed or percentage discounts. Validated at activation via the API.

🛡

Security-First

Brute-force protection, 2FA for admins, CSRF tokens, SQL injection prevention, session timeouts, and configurable API rate limiting.

Automated Cron Jobs

License expiry warnings, cleanup of stale logs, health checks, and usage resets — all scheduled with a single cron command.

REST API

Integrate in minutes

A predictable, well-documented JSON API. Drop a single HTTP call into your application to activate and validate licenses.

POST/api/v1/activateActivate a license
POST/api/v1/validateValidate a license
POST/api/v1/deactivateDeactivate a seat
GET/api/v1/statusCheck license status
POST/api/v1/batch-validateValidate up to 50 keys
GET/api/v1/public-keysEd25519 signing keys
activate.php
// Activate a license on app startup $response = file_get_contents( 'https://your-domain.com/api/v1/activate', false, stream_context_create([ 'http' => [ 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => http_build_query([ 'license_key' => 'XXXX-YYYY-ZZZZ-AAAA', 'domain' => $_SERVER['HTTP_HOST'], 'app_id' => 1, ]), ], ]) ); $data = json_decode($response); // {"status":"success","message":"License activated."}

Workflow

From zero to licensed in five steps

A straightforward setup designed for developers who want results, not configuration hell.

01

Deploy & Install

Upload to any PHP 8.1+ host. The guided wizard checks requirements, creates the database, and sets up your admin account in under five minutes.

02

Register your Application

Add your software under Applications. Each app gets a unique ID used in API calls to scope activations correctly.

03

Issue Licenses

Create licenses individually, import from CSV, or bulk-generate hundreds at once. Set expiry dates, seat limits, and levels per license.

04

Integrate the API

Add a single POST call to your app. On startup, call /api/v1/activate with the license key and domain. Activation is instant.

05

Monitor & Automate

Watch activations in real time, configure email alerts for expiring licenses, and let the cron job handle cleanup automatically.

License Models

Three models, every use case

⏱️

Time-Based

Licenses that expire after a fixed duration — month, year, or custom date. Ideal for subscriptions and annual plans. Expiry warnings sent automatically.

SubscriptionAnnual planTrial
📊

Usage-Based

Meter usage across custom limits — API calls, messages, executions. Track daily and monthly caps. Perfect for AI tools, APIs, and metered software.

API quotasMessage limitsMetered SaaS

Lifetime / Perpetual

One-time purchase licenses with no expiration. Set seat limits and hardware-lock via domain or device ID. Great for desktop software and one-time tools.

One-time saleDesktop appPerpetual

Ready to take control
of your licenses?

Self-hosted means your data stays yours. No per-seat pricing. No vendor lock-in. Deploy once, use forever.