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 when WHMCS stored it as bcrypt (WHMCS 7 and newer). Clients with an older password type set a new one with "Forgot password". |
| Product groups | tblproductgroups | |
| Servers | tblservers | cPanel, DirectAdmin, Plesk, Virtualizor and Proxmox servers. Imported switched off, because WHMCS encrypts server passwords with its own key: enter the password or API token again and switch each server on. |
| 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. A Virtualizor vpsid 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. |
| Payments | tblaccounts | |
| 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. WHMCS encrypts them with its own key. One-click login to cPanel, DirectAdmin and Plesk still works once the server's API token is entered.
- Saved cards. Clients pay their next invoice on the gateway's checkout page. Nuvabill does not charge saved cards automatically yet.
- Product addons, configurable options and custom fields, except the Virtualizor
vpsidfield. 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, and does not have a knowledge base or announcements yet.
Running the import
- In the Nuvabill admin area, open Settings → Import. Enter the WHMCS database host, port, name, username and password. A read-only database user is enough.
- Press Save and check. Nuvabill shows your WHMCS version and how many records each step will copy.
- 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; 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 --check
php artisan nuvabill:import-whmcs --host=127.0.0.1 --database=whmcs --username=whmcs_read
--check only tests the connection and counts the records. Without --password the command asks for the password (or reads WHMCS_DB_PASSWORD). Without any options it uses the details saved in Settings → Import.
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, except for the older password type described above.
Before you decide
Nuvabill is new and does not do everything WHMCS does. Today it does not charge saved cards automatically, let clients upgrade with prorated prices, or have a knowledge base, announcements or a status page, and emails and 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.