✦ Software Licensing Infrastructure

License your software
with confidence.

Activation keys, seat management, offline licensing, webhooks, and a full customer portal — all in one self-hosted system.

Get started free View pricing
Everything you need
Built for serious software products.
Every licensing scenario covered, from indie tools to enterprise deployments.
🔑

Flexible Activation

Domain-based, hardware fingerprinting, IP restrictions, and floating seat licensing out of the box.

🛡

Enforcement Engine

Max activations, heartbeat checks, grace periods, and automatic expiry — fully configurable per product.

📴

Offline Licensing

Generate request/response codes for air-gapped machines. Full approval workflow included.

🔔

Webhooks & API

RESTful API with HMAC signing. Webhook events for every license lifecycle action.

💳

Stripe & PayPal

Native payment processor integration. Auto-generate and email license keys on purchase.

👥

Customer Portal

Self-service portal for customers to view licenses, manage seats, and request transfers.

Pricing
Simple, transparent pricing.
No per-activation fees. License as many users as your plan allows.
Firetorn Studio Pro
The ultimate creative suite with team collaboration features.
$29/mo
Subscription license · 5 activations
  • Up to 5 activated seats
  • Floating / concurrent seats
  • API access included
  • Customer portal access
Get started →
Firetorn Studio
Professional creative suite for digital artists and designers.
$149
One-time purchase · 3 activations
  • Up to 3 activated seats
  • API access included
  • Customer portal access
Get started →
Integrate in minutes.

A clean REST API with HMAC authentication. Call it from any language. Webhook events keep your systems in sync automatically.

Read the API docs →
activate.sh
# Activate a license key curl -X POST https://license.firetorn.com/api/ \ -H "X-API-Key: your_api_key" \ -d action=activate \ -d license_key=FT-XXXX-XXXX-XXXX \ -d domain=yourdomain.com # Response { "success": true, "message": "License activated", "seats_used": 1, "seats_max": 5 }