Documentation · SoftActivate Licensing

Revocation

Revocation is how a vendor disables a license immediately: use it for refunds, chargebacks, or leaked keys. You revoke a license from its page in the console; this page describes what happens next, on the customer's machines.

How a device learns

There are two paths, covering both connectivity states:

  • Online: validation checks the stored license against the revocation list, which the SDK fetches from the service, so an online device sees a revocation at its next start and validation reports REVOKED. A renewal fails as well, because a revoked license is not re-issued.
  • Offline: the SDK caches the revocation list in memory, per client object; it does not keep it on disk. A process that starts offline has no list and skips that check rather than failing it, so an offline customer is not penalized. Revocation reaches an offline device at the latest when its certificate window, the maximum offline period, ends: the license then stops validating until it renews, and a revoked license is never renewed.

In practice, revocation reaches online machines at their next start, and mostly-offline machines the next time they validate while connected. A machine that never goes online after the revocation keeps validating until its maximum offline period ends, and for offline-activated (air-gapped) licenses, until re-issuance. Scope your expectations accordingly.

What REVOKED should mean in your application

Treat REVOKED as terminal: deny the licensed functionality and direct the customer to support. Do not offer re-activation, since it will fail (the license itself is no longer valid, not only this device's binding), and do not retry silently. If the revocation was a mistake, fixing it is a vendor-side action: there is no way to un-revoke a license, so issue a fresh one instead.

Trial licenses

Switching a product's trials off, or revoking its trial license, stops all its trials. From that moment no new device starts a trial and no device renews: the service refuses both with HTTP 403 license_revoked, which the SDK reports as REVOKED. Trial certificates are never put on the revocation list, because a trial license may have tens of thousands of devices, so a trial already running keeps validating until its certificate ends at the latest: the trial's own end, or sooner when the product sets a maximum offline period. In an application running on the trial key, REVOKED means the trial is over: show your purchase page rather than sending the customer to support.

For a planned end, set the trial license's Valid to date instead. No trial runs past it, including the ones already running.

Vendor-side notes

  • Revoking a license does not free its seat for reuse; it disables the license entirely. To reclaim a seat on a license that is still valid, use deactivation or force-release instead (deactivate and move).
  • Revocations take effect in the next issued revocation list, which for online fleets is effectively immediate.
  • The console side of revoking a license, including its confirmation step, is covered in the console guide.