Licensing & Activation
Licensing & Activation
QoinPay Enterprise is sold under a perpetual license. Once activated, the software runs indefinitely on the versions your entitlement covers — there is no subscription clock that switches the product off. Software Subscription & Support (S&S) is a separate, renewable agreement that governs your rights to new versions and support, and is covered in Software Subscription & Support.
From order to entitlement
A purchase moves through a fixed lifecycle. A quote becomes an order; the order is fulfilled as one or more entitlements recorded against your customer account in the QoinPay licensing portal. An entitlement is the authoritative statement of what you own: the product editions, the number of seats (concurrent activations), any optional modules, and the S&S coverage window.
From an entitlement the portal issues a license key in the form:
QPAY-7F3A9-2K8DL-QW4RT
The key is a human-transcribable identifier. It is not itself the license — it is the credential you present to redeem the machine-readable license file described next.
The .qplic file
Activation produces a .qplic file — a signed license container written to storage/license/current.qplic. It carries your entitlement details (product, edition, seats, S&S end date, feature flags) and a cryptographic signature the application verifies on every boot using an embedded QoinPay public key and the sodium extension. Because verification is offline and signature-based, the running application never needs to contact QoinPay to confirm it is licensed.
Do not edit the .qplic file; any modification invalidates the signature. Do back it up alongside APP_KEY — it is required to restore an installation, and for offline sites it is the only proof of entitlement on the host.
Online activation
Online activation is the default and the simplest path.
- In Settings → Licensing, enter your
QPAY-key. - The application computes a machine fingerprint (a stable hash derived from host attributes) and sends it with the key to the QoinPay license server over TLS.
- The server validates the key against the entitlement, checks that a seat is available, binds this fingerprint to a seat, and returns a signed
.qplicfile. - The application writes the file and re-reads its entitlement immediately. Status becomes Active.
Offline (air-gapped) activation
For networks with no outbound access, the same result is achieved by moving two files by hand:
- On the QoinPay host, generate a signed activation request:
php bin/console license:request --key=QPAY-7F3A9-2K8DL-QW4RT --out=request.qpreq
- Carry
request.qpreqto any internet-connected machine and upload it to the Offline Activation page of the licensing portal. The portal returns acurrent.qplicfile. - Install the file on the host:
php bin/console license:install --file=current.qplic
The request already contains the machine fingerprint, so the returned license is bound to exactly that host. No secrets leave your network in the clear — the request is signed and contains only the fingerprint and key.
Seats and fingerprint binding
Each entitlement grants a fixed number of seats. Every activation consumes one seat and binds it to the host's fingerprint. Re-activating the same host (for example after reinstalling to the same machine) reuses its existing binding and does not consume an additional seat.
When you decommission a host, deactivate it to release the seat:
php bin/console license:deactivate
Online, this frees the seat immediately. Offline, license:deactivate produces a signed release token to upload to the portal. If a host is lost before deactivation, an administrator can revoke the stale binding from the portal's seat list.
The fingerprint tolerates minor hardware changes but a major host change (new machine, virtualised migration to different underlying hardware) will present as a new fingerprint and require a fresh seat, so deactivate before migrating.
The heartbeat is advisory
An online installation periodically sends a heartbeat to the license server. This is a background job (dispatched by the cron worker) that reports liveness and lets the portal show which seats are active.
The heartbeat is strictly advisory. It never blocks the application. If heartbeats fail — because the network is down, the license server is unreachable, or the site is deliberately air-gapped — QoinPay continues to run normally on the strength of its locally verified .qplic file. A perpetual license is perpetual precisely because the running product depends only on the signed file it already holds, not on continuous contact. Heartbeat gaps surface only as an informational notice in the portal and, optionally, a low-severity banner for administrators.
What activation gates
The verified license controls edition-level and module feature flags — for example whether the Payments or Payroll module is enabled, and the seat ceiling. It does not gate on the S&S window for versions you are already entitled to run; installing a newer release than your S&S covers is the only version-related restriction, enforced at upgrade time. See Software Subscription & Support for how release dates map to your coverage.