WHMCS 9 changes more under the hood than any release since 8.0: it needs PHP 8.2 or newer, ionCube Loader 13, and it ships a new default theme, Nexus. An upgrade done in the right order is a fifteen-minute job. Done in the wrong order, it is a white screen on the page your clients pay you through. Here is the right order.
Before touching anything
Back up both halves. WHMCS is files plus a database, and a restore needs both from the same moment:
mysqldump --single-transaction whmcs_db | gzip > ~/whmcs-pre9-$(date +%F).sql.gz
tar -czf ~/whmcs-pre9-files-$(date +%F).tar.gz /var/www/vhosts/yourbrand.com/billing.yourbrand.comCheck your starting version. WHMCS does not upgrade across end-of-life versions in one jump. From 8.x you can go straight to 9. From anything older, step through the last release of each major version first; the WHMCS release notes list the required path.
List your customisations. Anything in templates/ that is not a stock theme, anything in includes/hooks/, every addon module under modules/addons/, and every non-stock gateway or registrar module. Each is a thing that can break, and the list is what you test afterwards.
Step 1: PHP and ionCube first
Do this before the upgrade, not during it. In Plesk, PHP Settings for the WHMCS site: switch the handler to PHP 8.3 (8.2 is the minimum). Then confirm ionCube on that handler is version 13 or newer:
/opt/plesk/php/8.3/bin/php -vThe output should mention ionCube PHP Loader v13 or higher. Plesk ships current loaders with its PHP packages; if the version is older, update the Plesk PHP component under Tools & Settings → Updates.
Reload WHMCS in the browser after the switch. Your current 8.x install must still work on the new PHP before you go further; if it does not, a module is incompatible and you have found it at the cheap moment.
Step 2: check module compatibility
Every third-party module needs a version that declares WHMCS 9 and PHP 8.2 support. Check the vendor's changelog for each item on your list. Deactivate anything unmaintained under System Settings → Addon Modules; a module that fails to load can take the admin area down with it.
Step 3: run the upgrade
Utilities → Update WHMCS does it in place. The pre-flight check refuses to start until PHP and ionCube are right, which is why those came first. Put WHMCS in maintenance mode (General Settings → General → Maintenance Mode) so clients do not hit a half-updated page, then run the update.
If you prefer the manual route, upload the release files over the existing install, keeping your configuration.php, and open /install/install.php to run the database migration. Delete install/ afterwards.
Step 4: test the things that matter
In this order, because it is the order clients notice:
- Client login and the client area home. If your theme is custom, this is where it breaks.
- Ordering a product through to the invoice page.
- Paying an invoice with a real gateway in test mode.
- Opening and replying to a ticket.
- The cron: run it by hand and check the Activity Log. See WHMCS cron not running if it fails.
- Provisioning: place a test order and confirm the account appears in Plesk.
Step 5: deal with the template
WHMCS 9's default theme is Nexus. Your existing Twenty-One theme keeps working, but new features appear in Nexus first. The safest way to brand it is a child theme: a folder under templates/ with a theme.yaml naming Nexus as its parent and a css/custom.css for your colours. It contains no template files, so future updates never overwrite your work. That is how our own client area is skinned.
If you have a heavily customised copy of an older theme, compare it against the new stock version file by file before switching; WHMCS publishes a template changelog with every release.
Rolling back
If something is wrong that you cannot fix in an hour, restore rather than debug in production:
gunzip < ~/whmcs-pre9-2026-09-23.sql.gz | mysql whmcs_db
tar -xzf ~/whmcs-pre9-files-2026-09-23.tar.gz -C /Switch the PHP handler back if you changed it, clear templates_c, and you are on the old version. Then work out the cause on a copy.
Keep it current afterwards
WHMCS releases security fixes on 9.x regularly and the updater applies them in one click. Read the release notes, back up, update. A billing system three versions behind is the one that ends up in the news.
On VPSPioneer reseller plans the WHMCS Starter licence is included with Partner Grow and Pro. The install is yours to run and upgrade, and with the checklist above that is a fifteen-minute job in a quiet hour, backup first.