Platform operator only — not for tenant users
Platform access code (PLATFORM_ADMIN_SECRET) does not expire.
Sign in once — this browser stays signed in until you click Lock.
Save the code in deploy\hetzner\production.local.ps1 as LicenseAdminSecret so deploys never change it.
Shows tenant users with a valid login in the last window. Location is the client IP from login and periodic token checks (about every 60s).
| User | Company | Branch | Role | IP / client | Logged in | Last seen | Idle |
|---|---|---|---|---|---|---|---|
| Loading… | |||||||
These keys were created in Issue licenses but no tenant has completed setup with them yet.
| Company | Company code | Branches | Users | License | License status | Tenant |
|---|
New customer setup token. Set license duration and branch count before creating the key.
Standard — core ERP modules. Change plan to unlock more features.
1 branch — head office only (no extra locations at setup).
After setup, raise limits under Customer licensing → Upgrade main license, or add branch license slots for +1 branch each.
License created — copy for the customer:
| Customer | Full license key | Branches / users | Plan | Status | Valid until |
|---|
—
—
—
Increase branch or user limits on the existing key (no new key required).
Each slot allows one additional branch in the ERP (beyond what the main license allowed at setup). Expires when the main license ends.
| Slot | Label | Branch | Status | Expires |
|---|
| Node | Company | Type | Version | Last heartbeat | Last sync |
|---|
—
Pulls latest code from GitHub, runs migrations, and restarts the app.
For platform operators, call center, and online support — use while helping customers by phone or chat.
This portal is CNP operator only — not for customer company admins. Customers use the normal ERP at /static/login.html?from=home with their username, password, and company code.
Use God Mode to:
PLATFORM_ADMIN_SECRET). That unlocks this entire portal.
| Type | What it covers | Duration |
|---|---|---|
| Main license | One company tenant + head office (1 branch) + user limit | 1 year — renew in Customer licensing |
| Branch license | +1 extra branch per slot (e.g. second store) | Same expiry as main — auto-extends when main is renewed; revoked when main is revoked |
Branch limit = 1 (HQ included in main) + number of active branch licenses.
When you Issue licenses, set Deployment mode on the key. This controls where the customer may use that key — separate from plan (standard / professional / enterprise) and branch limits.
| Issue as | Cloud /setup | Local LAN server | Typical customer |
|---|---|---|---|
| cloud | Yes | No — download/install blocked | SaaS only on erp.cnpsolutions.co.bw |
| local | No — cloud setup blocked | Yes — download + install | Offline LAN server only (rare) |
| both (default) | Yes | Yes | LAN server with cloud sync — most common |
Local server binding: Customer must verify the key at /install/local before download. The installer (-LicenseKey) binds the package to that computer. Copying files to another PC will not work. One main key = one company (reinstall on the same licensed server is OK).
Authority: All keys are issued and stored on this cloud hub. Local servers phone home to validate — even local-only keys are tracked here.
Plan controls which ERP modules the company can use (navbar + API). User and branch caps are set separately on the key.
| Plan | Modules | Suggested defaults |
|---|---|---|
| Standard | POS, sales, purchases, inventory, accounting, banking, VAT, basic reports | 10 users · 1 branch (HQ) |
| Professional | + Manufacturing, job cards, COGS, procurement, budgeting, workflows, dimensional accounting, branch sales, billing | 25 users · 5 branches |
| Enterprise | + BI, traceability, fixed assets, management & period reports, invoice designer, Excel templates, logs, cloud sync API | 100 users · 25 branches |
both unless they are cloud-only). Copy the full CNP-XXXX-YYYY-… key immediately.https://erp.cnpsolutions.co.bw/setup/install/local → verify key → download ZIP → install with -LicenseKeyCustomer licensing → select company → Renew +1 year on main license. All active branch licenses match the new expiry.
Customer licensing → select company → copy Full license key. Keys issued before key vault may show “Not archived” — issue a new main license and assign if needed.
CNP-PLAN-YYYY-XXXX-XXXX-XXXX (dashes matter; uppercase when typing).
both (usual) or cloud / local; email/SMS the full key.https://erp.cnpsolutions.co.bw/setup/install/local → verify key → download → install with -LicenseKey on their server PC./static/login.html?from=home with username + password (no branch dropdown).local or both (not cloud-only)./install/local → verify key → download → reinstall on the same licensed PC with -LicenseKey (Windows) or --license-key (Linux/Mac).Setup creates head office only. Each extra location needs a branch license before creating the branch in ERP.
Branch slots show as BR-COMPANY-001 — internal tracking only.
/install/local — customer verifies key before download.Install-CNPERP-Local.ps1 -LicenseKey "CNP-…" · Linux/Mac: install-cnperp-local.sh --license-key "CNP-…"http://server-ip:8010 · Setup: /setup on that server (license already bound at install).| Tab | Use when… |
|---|---|
| Dashboard | Quick counts — companies, users, licenses, nodes, live sessions |
| Live sessions | Who is logged in now — user, company, branch, IP, last activity |
| Companies | Search tenant, reset passwords, impersonate |
| Issue licenses | Create new main keys (1 year) — set plan, deployment mode, users, branches |
| Customer licensing | Full key, renew/revoke, branch licenses |
| Nodes | Local servers and last heartbeat |
| Deploy / Updates | Update this cloud server only |
| Help | This handbook |
| ERP login | /static/login.html?from=home |
| First-time setup | /setup |
| Local install guide | /install/local |
| Setup help (customers) | /static/help/setup-configuration-guide.html |
| Platform admin (operators only) | /platform-admin |
Fix without escalation: password reset, license renew/issue, branch license add, company reactivate.