Migrating from WHMCS to Nuvabill
Nuvabill's importer reads your WHMCS database and copies your business across: clients, products, services, domains, invoices, payments and tickets. WHMCS keeps running while you import, and you can run the import again before you switch.
What gets imported
The import runs in this order, because later steps need the records from earlier ones. WHMCS is only read; nothing changes there.
| Step | From WHMCS | Notes |
|---|---|---|
| Staff | tbladmins | Created as switched-off staff accounts, so ticket replies keep their author. Staff with the same email in Nuvabill are linked. |
| Clients | tblclients | Clients keep their password. WHMCS 7 and newer work as they are; the older passwords of WHMCS 4.2 to 6.2 are checked at the client's first sign-in and then replaced. WHMCS credit becomes a wallet entry. |
| Product groups | tblproductgroups | |
| Servers | tblservers | cPanel, DirectAdmin, Plesk, Virtualizor and Proxmox servers, with their API token, and CyberPanel, HestiaCP, VirtFusion and SolusVM servers once you install their free module from the Marketplace. Imported switched off, so you can check them first. Their passwords come across when you give WHMCS's encryption key. |
| Products and prices | tblproducts, tblpricing | Monthly to three-yearly prices and setup fees, per currency. |
| Services | tblhosting | Status, domain, username, server, billing cycle, next due date and suspension reason, and the password when you give the key. A Virtualizor vpsid or SolusVM vserverid custom field is kept, so the VPS stays linked. |
| Domain prices | tbldomainpricing | One-year register, transfer and renew prices. |
| Domains | tbldomains | With the registrar when it is ResellerClub, Namecheap, Enom or OpenSRS. |
| Invoices | tblinvoices, tblinvoiceitems | Status, dates, lines and the invoice number. Renewal lines keep their period, so Nuvabill never bills that period again. |
| Payments | tblaccounts | PayPal, Stripe and bank transfer payments get Nuvabill's payment method. |
| Support departments | tblticketdepartments | |
| Tickets | tbltickets, tblticketreplies | With every reply and its author. |
Running the import again updates what changed instead of making copies.
What is not imported
- Server and service passwords, unless you give WHMCS's encryption key.
- Extra users of a client account (WHMCS 8 "users"). The account owner signs in.
- Saved cards. Card details stay with WHMCS's gateway. Clients save their card or PayPal account again the next time they pay, and Nuvabill then charges their renewals automatically.
- Product addons, custom fields and most configurable options, except the Virtualizor
vpsidand SolusVMvserveridfields. Quantity options for CPU, RAM, disk, IPs, traffic and backups can come across as resource options (sliders) when you say what each one is in the dry run. Nuvabill has its own product add-ons you can set up again. - Email templates, knowledge base articles and announcements. Nuvabill has its own email templates, knowledge base and announcements. Copy your articles and announcements over by hand for now. Old WHMCS links to the knowledge base, announcements and server status pages forward to the new pages.
Running the import
- In the Nuvabill admin area, open Settings → Import and choose WHMCS. Enter the database host, port, name, username and password. A read-only database user is enough.
- Optional: enter the encryption key, the value of
$cc_encryption_hashin WHMCS'sconfiguration.php. With it, server and service passwords come across too. - Press Save and check. Nuvabill makes a dry run: without changing anything, it shows how many records each step would add or update and the problems it would meet, such as clients without a valid email, server modules Nuvabill does not have, or overdue services the first nightly run would suspend. Problems marked in red, such as a wrong key, must be fixed first.
- Press Start import. It runs in small batches from the cron job, so large WHMCS databases do not time out, and it keeps going if you close the page. The page shows each step's progress and any row that could not be imported, with the reason; Run again repeats it later.
The database details are stored encrypted. Nuvabill must be able to reach the WHMCS database: if they are on different servers, allow the Nuvabill server's IP address in the WHMCS database's remote access settings.
From the command line
php artisan nuvabill:import whmcs --host=127.0.0.1 --database=whmcs --username=whmcs_read --key="..." --dry-run
php artisan nuvabill:import whmcs --host=127.0.0.1 --database=whmcs --username=whmcs_read --key="..."
--dry-run shows the dry run and --check only counts the records. Without --password the command asks for the password (or reads IMPORT_DB_PASSWORD). Without any options it uses the details saved in Settings → Import. Moving from Blesta, FOSSBilling or Paymenter? Use blesta, fossbilling or paymenter instead of whmcs.
A safe switch-over plan
- Install Nuvabill on a new subdomain, for example
billing-new.yourhost.com, with the install guide. Keep WHMCS running. - Run the import and look around: clients, services, invoices and tickets.
- Connect your servers (enter the passwords or API tokens and switch them on), your payment gateways and your domain registrars.
- Test: sign in as a client with their WHMCS password, pay a small invoice in test mode, and open cPanel with one click.
- Switch: turn off automation in WHMCS so clients do not get two invoices, and put it in maintenance mode. Run the import one last time so the newest invoices and replies come across, then point your billing domain to Nuvabill and turn on its cron job.
- Tell your clients about the new client area. Their passwords still work.
Before you decide
Nuvabill is new and does not do everything WHMCS does. Today it does not import knowledge base articles or announcements, and Arabic, Kurdish, Chinese and Thai PDF invoices are in English. Read Nuvabill vs WHMCS for the full list, and the roadmap for what comes next.
Questions about your migration? Open an issue on GitHub or email [email protected].
WHMCS is a trademark of its owner. Nuvabill is an independent project by RapidNet Ltd and is not affiliated with WHMCS.
Try the move on a test copy first.
Nuvabill is free. Install it on a subdomain and import your WHMCS data today.