Skip to content

License issues

Fexl Lite licenses are machine-bound. Each install activates against a license key, the server returns a signed device record, and the desktop app stores it locally. When something is wrong with that chain — expired key, machine-bound to a different device, revoked seat — the app refuses to start past the splash. This page covers each failure mode.

Updated 4 May 2026·For v2.2.0·3 min read
splash · 'License invalid' · activation refused

Where the license actually lives

The signed device record lives at:

  • macOS~/Library/Application Support/com.minib2c.pos/device-keys.dat
  • Windows%APPDATA%\com.minib2c.pos\device-keys.dat
  • Linux~/.local/share/com.minib2c.pos/device-keys.dat

It’s a binary blob, signed by the license server. You can’t edit it. You can delete it — that forces a re-activation on next launch — but you’ll need internet and the original license key to come back.

Error-message → fix table

”License invalid” at startup

Cause — the device-keys file is corrupt or signed by a different license server (e.g., the file was copied from a staging build). Fix — delete device-keys.dat and re-activate with the original key.

”License expired”

Cause — the subscription lapsed. Annual licenses send a renewal reminder 30 days before expiry; if it was missed, the seat shuts off the day after. Fix — renew in the customer portal. The next launch picks up the new expiry automatically. If renewal isn’t possible right now, see Offline grace period below.

”License revoked”

Cause — the license server explicitly disabled this seat. Usually because of a chargeback, a duplicate-seat dispute, or the customer requested a transfer that hasn’t completed. Fix — contact support. Revoked seats can’t be self-served — there’s a manual review on the server side.

”License is active on another device”

Cause — the same license key was activated on a different machine and you’ve now installed the app on a second machine. Single-seat licenses are 1:1 with a hardware fingerprint. Fix — pick one of two paths:

  • Free up the existing seat. From the original device, open Settings → System → License → Deactivate this device. Then activate on the new machine. This is the right path when you’re replacing a till or migrating to new hardware.
  • Buy or assign another seat. Multi-seat plans let you activate the same key on N machines simultaneously. Upgrade in the customer portal.

”Hardware fingerprint changed”

Cause — the machine’s fingerprint (CPU + motherboard + primary disk serial) shifted, often after a hardware swap, a clone-to-new-disk, or a major OS reinstall. The license server treats it as a different machine. Fix — Settings → System → License → Re-fingerprint. This consumes one re-fingerprint allowance per year (configurable on the customer’s plan). If you’ve used them all up, support can reset.

Activating on a new device (the supported path)

1

Deactivate the old device first

On the old machine: Settings → System → License → Deactivate this device. The app keeps running on the old machine in read-only / no-license mode (you can still export data) until you uninstall.

2

Install Fexl Lite on the new device

Run the installer normally. On first launch, the splash asks for the license key.

3

Enter the key

The license server checks: (a) the key exists, (b) no other active device is bound to it (because you deactivated in step 1), and (c) the seat hasn’t expired. Activation completes in under 5 seconds with a working internet connection.

4

Restore data

If you want to bring sales history with you, restore the most recent snapshot from the old device. See Settings → System → Backup & restore for the full flow.

Deactivating from another device

If the old device is stolen, dead, or otherwise unreachable, you can’t deactivate it from itself. Instead:

  1. Log into the customer portal (portal.fexl.io for cloud customers; for on-prem licenses contact support).
  2. Find the seat under Devices.
  3. Click Deactivate remotely.

The next time the dead device tries to connect, the server tells it the seat is gone and it switches to read-only mode. The new device can now activate.

Offline grace period

Fexl Lite checks in with the license server roughly once every 24 hours when online. If the device goes fully offline (the server can’t be reached at all), it keeps running on the cached signature for up to 14 days. After that, the app falls back to read-only — sales can’t be rung, but the data is still accessible for export.

This is intentional: a short internet outage shouldn’t take a till offline, but a permanently offline device shouldn’t run forever on a stale license.

Things that look like license issues but aren’t

  • “Server is starting…” splash that never clears — this is the embedded Go server, not the license server. See Connection issues.
  • Login screen rejects the PIN — license is fine; PIN is the auth layer above. See Login & PIN.
  • One feature is greyed out — that’s a permissions issue (role-based), not a license tier issue. Settings → Security → Roles.

Still stuck?

  • Open a support ticket with the license key (last 4 chars only — never paste the full key in chat), the error message as it appears in the app, and the OS / version.
  • If you have multiple devices on the same key and you’re not sure which is which, the customer portal lists every active fingerprint with last-seen timestamps.