Skip to content
Setup serviceBook a free call
Compare

Everything WHMCS staff know, under the MIT licence.

PNLCS deliberately follows WHMCS: clients, products, orders, invoices, services, tickets and modules mean the same thing. The difference is the licence: PNLCS is MIT, with no fee per installation.

Side by side

Licence costFree, MITA fee per installation, every month
Source codeFully open and auditableEncoded or closed
Self-hostingAnywhere: Docker, a VPS, a hosting panel accountYes, with a licence check
ExtendingWrite a module, ship it, keep itMarketplace and vendor terms
UpdatesSigned, one click, rolled back if a step failsDepends on the vendor

What carries over from WHMCS

ConceptsProduct groups, products, configurable options, services, orders, invoices, credit, tickets and departments behave the way WHMCS staff expect.
API action namesThe API uses WHMCS action names and parameter names. Most integrations need a new address and a new credential.
Hooksadd_hook('InvoicePaid', 1, fn) is written the same way, and many hook names are the WHMCS ones. Parameters are PNLCS objects, and a failing hook is logged and skipped.
ModulesServers, payment gateways, registrars and SSL providers are separate modules, as in WHMCS.
A hook, written as in WHMCS
add_hook('InvoicePaid', 1, function (array $vars) {
    $invoice = $vars['invoice'];  // App\Models\Invoice
    // ...
});
The same API call
# WHMCS
POST /includes/api.php  action=GetClients

# PNLCS
GET  /api/v1/getclients
     X-API-Key: …  X-API-Secret: …

Import straight from the WHMCS database

Utilities → Import WHMCS reads clients, domains and services from your WHMCS database. The WHMCS database is only read; nothing in it is changed.

  1. 1ConnectHost, database, user and table prefix. Test the connection before saving.
  2. 2Map the fieldsEach WHMCS field is matched to a PNLCS field, with suggestions where the names agree. Save the mapping to reuse it.
  3. 3Choose the modeAdd new, add and update, or update only, matched by email or domain name.
  4. 4Preview, then runThe first rows as WHMCS has them and as PNLCS will store them. The log shows what was added, updated, skipped or failed, and why.
Utilities → Import WHMCStblclients
firstnamefirst_name
lastnamelast_name
companynamecompany_name
emailemail
countrycountry
phonenumberphone_number

Import clients first, then domains, then services. Clients get a random password and set their own with "Forgot password"; the import sends no email.

Products, invoices, tickets and settings are not imported: you set those up in PNLCS yourself.

Switching without downtime

Run PNLCS next to WHMCS and move customers across as they renew. Hosting accounts stay on the same servers throughout.

  1. 01Rebuild your catalogProduct groups and products with the same names and prices.
  2. 02Connect the same serversThe accounts already exist on them; PNLCS manages them from now on.
  3. 03Recreate your settingsPayment gateways on the same accounts, tax rules, email templates, staff and roles.
  4. 04Bring customers overWith the importer, or by hand. On Panelica or Proxmox, link the account that is already on the server.
  5. 05Point your links at PNLCSThe billing address, client links and sign-up forms. Redirect the old address if you can.
On renewalEach customer moves when their WHMCS renewal comes up. The lowest risk.
All at onceEveryone in a maintenance window, with matching due dates.
Paid service from the PNLCS developers

Starting your own hosting company?

PNLCS is free to run yourself. If you want it done for you, the developers who build PNLCS set up the servers, the control panel, billing and your storefront. The first call is free.