Skip to content

Managing Licenses

A license is generated automatically when an order completes for a product that requires one. Each license is tied to a customer, a product, a plan, and (for recurring plans) a subscription.

License Key Format

Keys are 32 hex characters in four 8-character segments:

A1B2C3D4-E5F6A7B8-C9D0E1F2-A3B4C5D6

Generated with random_bytes and stored unique. Case-sensitive in API calls.

License Fields

FieldNotes
License KeyThe string above
CustomerOwner of the license
Product / PlanWhat the license unlocks
SubscriptionLinked subscription (only for recurring plans)
StatusOne of active, expired, suspended, revoked, cancelled
Activation TypeInherited from the plan: domain, device, seat, instance
Activation LimitInherited from the plan. 0 = unlimited
Activations UsedCount of current activations
Expires AtWhen the license expires. NULL for one-time purchases (lifetime)
Last Check At / IPTimestamp and IP of the last validate API call
Check CountTotal validate API calls received

Statuses

StatusMeaning
activeCustomer can activate and use the software
expiredSubscription passed its expiry without renewing
suspendedSubscription is in dunning – payment failed, awaiting retry
revokedRefund issued or chargeback received. Access permanently removed
cancelledManually cancelled by admin (rare)

A suspended license can return to active if the failed renewal is recovered. The other terminal statuses don't revert.

Licenses are never deleted – status changes preserve audit history.

Lifecycle

TriggerResult
Order completes (paid)License created, status active, expiry set from billing cycle
Subscription renewsLicense expires_at extended by one cycle
Renewal payment failsAfter grace period: subscription marked past-due, license suspended
Renewal recoveredLicense back to active, new expiry
Subscription expires (no renewal)License expired
Refund issued (full)License revoked
Customer cancels auto-renewalLicense stays active until current period ends, then expired
Chargeback / dispute openedLicense suspended until dispute resolves

Admin Management

Components → LicenseDock → Licenses.

You can:

  • Search by key, customer, or product
  • Filter by status, product, plan
  • Edit a license: change status, activation limit, expiry
  • Add an activation manually (admin can override the activation limit)
  • Remove an activation (frees a slot)

Customer-Facing View

In the customer portal, customers see their license keys, status, expiry, and the list of current activations. They can copy the key, deactivate any of their activations, and check renewal status. See Customer Portal.

Next Steps

Joomla Extensions by Contona