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.
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)
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.
Install Fexl Lite on the new device
Run the installer normally. On first launch, the splash asks for the license key.
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.
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:
- Log into the customer portal (
portal.fexl.iofor cloud customers; for on-prem licenses contact support). - Find the seat under Devices.
- 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.
Related
- Settings → System — License panel, device list, backup & restore
- Connection issues — when the splash hangs before the license check
- Cloud sync — separate from licensing; one can be working while the other isn’t