Overview

Licensing

This page explains licensing from the end user's perspective: what is needed, how to obtain the license, and how to apply it.

How to obtain a license

Review plans, included features per tier (Developer / Professional / Software House) and purchase on the public site:

After purchase you will receive an email with license-payload + license-signature to install as described in the "End User Procedure" below.

How It Works

  • The license is valid only if:
  • correct signature.
  • machineFingerprint of the current server is present in the machineFingerprints list of the signed payload.
  • If the license is not valid, data reading (getFlatRecordData) is limited to a maximum of 20 records. Additionally, the host hook customizeSelect is bypassed (not invoked).

Where to Find the machineFingerprint

Backend endpoint:

  • GET /api/Meta/LicenseStatus → field machineFingerprint (always available, even without a license).
  • During the first run it is also exposed by GET /api/Meta/FirstRunStatus.

Note: the local file installation.id is no longer used by licensing.

End User Procedure

1. Retrieve machineFingerprint from your host.

2. Send the value to the vendor/licensor.

3. Receive the license values:

  • license-payload
  • license-signature
  • license-public-key-pem (if required by your installation)

4. Paste the values from the UI: Administration > AppSettings Editor, License section

(fields License email, License payload, License signature, Public key (PEM)), then

save. Alternatively you can write them by hand in the AppSettings section of the running

host's appsettings.{Environment}.json.

The AppSettings editor requires a session with the superadmin role, checked server-side.

5. Verify the license status:

  • from the API: GET /api/Meta/LicenseStatus, expected licenseValid = true;
  • or from the page itself, which re-reads the license right after saving.

No backend restart is needed when you go through the editor. Saving license-payload /

license-signature from the AppSettings Editor makes the backend refresh the validation

service on its own, and the license applies from the next request. A restart is only needed in

the other case, when the values are written by hand in the file: that one is read at startup.

Multi-Machine License

A single license can authorize multiple machines by including multiple values in machineFingerprints.

Quick Troubleshooting

  • licenseReason = invalid_signature:
  • payload/signature are not consistent with each other or the public key is different.
  • licenseReason = machine_fingerprint_not_authorized:
  • the current machine's fingerprint is not present in the received license.
  • licenseReason = machine_fingerprint_missing:
  • the runtime cannot calculate the local fingerprint.
  • licenseReason = license_expired:
  • the license has expired, request renewal.

Screenshot

licensing / LicenseStatus API response (licenseValid=true, tier=developer)
licensing / LicenseStatus API response (licenseValid=true, tier=developer)