Skip to content
Shahid Malla

WHMCS VPS and Cloud Server Provisioning: Modules, Options, Lifecycle

How WHMCS VPS provisioning works: the module functions behind create, suspend, terminate and upgrade, the Virtualizor and SolusVM modules, configurable options for resources and templates, and a lifecycle test.

· Published · Updated · 9 min read · 8 steps

WHMCS VPS and cloud server provisioning needs three pieces: a server module that calls your virtualization platform's API, a Server/VPS product mapped to a plan on that platform, and configurable options for what the customer chooses, such as the operating system, location or memory. WHMCS then drives create, suspend, unsuspend, terminate and upgrade through that module.

Five phases of selling VPS through WHMCS: pick the platform vendor's module, connect the servers, build a Server/VPS product, add configurable options, then test the full lifecycle on staging
The five phases I work through before a VPS product goes on sale. Source: shahidmalla.com.

In words: pick the module your platform's vendor publishes and check it supports your WHMCS version. Connect the platform's API host and make sure Test Connection passes. Build a Server/VPS product mapped to a plan on the platform. Add configurable options for the operating system, location, memory, disk and vCPU, named as the module expects. Then test create, suspend, upgrade and terminate on a staging copy.

How does WHMCS run the lifecycle of a VPS?

WHMCS decides when something must happen, and the module does it on the platform. Each event calls a named module function, listed on the supported functions page, and the timing comes from Automation Settings and the product's own settings.

Event in WHMCSModule functionWhat must happen on the platformSetting that controls it
New order paid or acceptedCreateAccountBuild the VPS from a plan and templateAutomation options on the product's Module Settings tab
Invoice overdueSuspendAccountStop the VPS and keep the customer from starting itEnable Suspension and Suspend Days
Overdue invoice paidUnsuspendAccountStart it againEnable Unsuspension
Long overdueTerminateAccountDestroy the VPS and its disks, free the IP addressesEnable Termination and Termination Days
Upgrade or downgrade order paidChangePackageResize, for a new product or for changed configurable optionsThe product's Upgrades tab
Client changes the passwordChangePasswordReset the root passwordShown only if the module defines it and the service is active

One detail matters for support. Automation Settings says a service you suspended by hand with a custom reason, such as Awaiting ID Verification, is not unsuspended automatically when the customer pays.

Which provisioning module fits your virtualization platform?

Use the module your platform's vendor publishes, and confirm it supports your WHMCS version before you build anything. These are the ones I checked today:

PlatformHow it connectsWhat I confirmed on 12 October 2026
Virtualizor (Softaculous)Server module, downloaded from Virtualizor and uploaded to /modules/servers/virtualizorThe WHMCS documentation lists create, suspend, unsuspend, terminate, change package, change password, usage updates and a client area link, plus start, reboot, power off, stop and VNC. The Virtualizor WHMCS module page says to add only the master server and that Virtualizor uses ports 4081 to 4085. It says "Compatible with WHMCS 8", so ask about 9.0.
SolusVM 2 (prepaid)The SolusVM WHMCS VPS pre-paid provisioning module, solusvm2vpsThe module overview covers provisioning, power actions, reinstalls, upgrades and downgrades, SSH keys and cloud-init. Its requirements page lists WHMCS 7.0 or higher and PHP 7.4.x, while WHMCS 9.0 requires PHP 8.2 or higher. Ask the vendor which PHP versions it supports now.
SolusVM (version 1)Server module bought and installed following SolusVM's instructionsThe WHMCS page ticks create, suspend, unsuspend and terminate, but not change package, change password or usage updates, although its description mentions upgrades. Test before you sell upgrades. Not supported on WHMCS Cloud.
SolusIOThe official WHMCS SolusIO addonA different model: post-pay. Customers sign up and manage VMs in the SolusIO panel, uptime is billed at an hourly token rate, and WHMCS invoices the usage.
Proxmox VENo module in the WHMCS documentationThird-party or custom. My WHMCS Proxmox integration guide covers it.

Reselling a public cloud provider's servers works the same way on the WHMCS side, through a third-party or custom server module that calls the provider's API. I name no cloud modules here because I did not review any for this guide.

Decision flow for a WHMCS VPS module: post-pay usage billing points to a model such as SolusIO, no vendor module means a custom server module, and unconfirmed versions mean ask the vendor first
How I pick the module route for a VPS platform. Source: shahidmalla.com, from the module table above and the vendors' documentation.

In words: if you will bill usage after the fact, you need a post-pay model such as the SolusIO addon, not a prepaid module. If your platform's vendor publishes no WHMCS module, the route is a custom server module. If the vendor does not confirm your WHMCS and PHP versions, ask before you build. Otherwise use the vendor's module and test it.

Disclosure: I sell provisioning modules for Proxmox VE (your own clusters) and for reselling Hetzner Cloud and Vultr servers.

How do you connect the platform and spread VPS across nodes?

Add the platform at Configuration > System Settings > Servers with Add New Server, choose the module, enter the host and API credentials, and click Test Connection. WHMCS offers a Continue button when the test fails. Do not use it for a VPS platform; fix the firewall, port or credentials first.

For several nodes, either the platform or WHMCS chooses. Virtualizor's module takes a default node or node group in the product's Module Settings and can let the customer pick a region through a configurable option. Where WHMCS chooses, put servers in a server group and pick a fill type: add to the least full server, measured against each server's Maximum No. of Accounts, or fill the default server until it is full.

How do you set up a VPS product in WHMCS?

Create it at Configuration > System Settings > Products/Services with the Server/VPS type, which asks the customer for a hostname, root password and nameserver prefixes at order time. Then:

  1. On Module Settings, choose the module and map the product to a plan on the platform. Virtualizor asks for the server, the virtualization type, the plan and the default node or group, and loads the plan list only after you save the first two.
  2. Choose when the product is set up. WHMCS offers on order, on first payment, on manual acceptance, or never. I use first payment, and manual acceptance for new customers when abuse is a concern.
  3. Give the module somewhere to store the VPS ID. Virtualizor's module needs a vpsid custom field. A custom module can use service properties: $params['model']->serviceProperties->save([...]) writes to custom fields, and names such as Dedicated IP and Username go to the core service fields.

How do configurable options set VPS resources and OS templates?

Each resource the customer can choose is a configurable option, and the module reads it by name. The names and units come from the module's documentation, not from WHMCS. My WHMCS configurable options guide covers option types, pricing and the value|label format.

Customer choiceOption type I useVirtualizor moduleSolusVM 2 module
Operating systemDropdownOperating System option, or an OS custom fieldOperating System
LocationDropdownRegion, set to a server group IDLocation
MemoryDropdownRAM, in megabytesMemory
DiskDropdownSpace, in gigabytesDisk Space, plus one Additional Disk on KVM
vCPUDropdownCPU CoresVCPU
Extra IPv4QuantityNumber of IPsExtra IP

Two module behaviors are worth knowing. In Virtualizor, a configurable option value replaces the plan's value, while options named additional_ram, additional_space and similar add to it. SolusVM 2's Application option works only for reinstalls, not for new orders.

Templates live on the platform, and the WHMCS list must match it. Virtualizor's OS custom field takes template names exactly as shown under Media > OS Templates in its admin panel, not file names, and an OS must come from either that field or a configurable option. When you retire a template, hide the sub-option in WHMCS instead of deleting it, so existing services keep their value.

How do VPS upgrades and downgrades reach the server?

List the target products on the product's Upgrades tab and tick Configurable Options. When the upgrade order is paid, WHMCS calls ChangePackage, which runs for both product and option changes. The customer is credited for the unused part of the cycle and charged the new price for the rest, and the next due date stays the same.

The module must refuse what the platform cannot do live, such as shrinking a disk, and return a clear error. To stop an impossible product change before checkout, the ShoppingCartValidateUpgrade hook receives the service ID and the target product ID and can return error messages. Virtualizor also warns against changing WHMCS-created VMs in its own panel, for example adding disks there, because the two systems drift apart.

How do you test the full VPS lifecycle before selling?

Run every function in the lifecycle table on a staging copy of WHMCS against a test node.

  1. Order through the public order form with every operating system and location. Pay with a gateway in test mode.
  2. Read the Module Log at Configuration > System Logs. Confirm the VPS exists with the right plan, template, location and IP address, and log in with the credentials WHMCS sent.
  3. Suspend from the admin area and confirm the VPS is stopped, not only flagged. Unsuspend it.
  4. Upgrade one option, then try a disk downgrade and confirm the refusal is clear.
  5. Terminate and confirm the VPS, its disks and its IP addresses are released.
  6. Block the API port and repeat an action. The failure should appear under Utilities > Module Queue.
  7. Set a short Suspend Days value on staging and let a test invoice go overdue, so the cron path runs once.

What are the limits and risks of selling VPS through WHMCS?

WHMCS only sends commands. Capacity, IP pools, templates, backups and abuse handling stay your work on the platform.

  • Failed actions wait for a person. The Module Queue documentation says WHMCS will not retry a failed action automatically. Someone has to check the queue and click Retry.
  • Upgrades of WHMCS itself. WHMCS 9.0 requires PHP 8.2 or higher. A module whose vendor lists older PHP or WHMCS versions can block your upgrade, so ask before you plan one. My WHMCS upgrade guide has the checklist.
  • Billing model. Prepaid monthly VPS and post-pay usage billing are different products. Choose one before you choose a module.
  • No module fits. Then the answer is a custom server module, described in my provisioning module guide.

What else do people ask about WHMCS VPS provisioning?

Can WHMCS create a VPS automatically when a customer pays?

Yes, through a server module for your platform. On the product's Module Settings tab you choose when it is set up: on order, on first payment, on manual acceptance, or never. I use first payment, and manual acceptance for new customers when abuse is a concern.

Does WHMCS have a Proxmox module?

Not in the WHMCS documentation. For Proxmox VE you need a third-party or custom module. My WHMCS Proxmox integration guide covers the options.

Does WHMCS unsuspend a VPS automatically after payment?

Yes, when Enable Unsuspension is on in Automation Settings, through the module's UnsuspendAccount function. One exception: a service you suspended by hand with a custom reason, such as Awaiting ID Verification, is not unsuspended automatically when the customer pays.

What happens when a VPS provisioning action fails?

It goes to Utilities > Module Queue. The Module Queue documentation says WHMCS will not retry a failed action automatically, so someone has to check the queue and click Retry. The Module Log shows what the module sent and what came back.

Can I resell public cloud servers through WHMCS?

Yes. On the WHMCS side it works the same way, through a third-party or custom server module that calls the cloud provider's API. I did not review any cloud provider modules for this guide, so I name none.

If you need a module written or reviewed, I do that as WHMCS custom module development, and the platform side as hosting infrastructure work.

Last reviewed 12 October 2026. Disclosure: I sell WHMCS and web development work, including custom provisioning modules, so I am not neutral. I am CTO at ElySpace, a freelance developer for Marmaids LLC, and founder of WHMCSPilot and MagizAI. Module details come from the WHMCS 9.0 documentation and the Virtualizor and SolusVM documentation as I read them on that date.

Share this article

Shahid Malla

Written by

Shahid Malla

Freelance WHMCS developer and web designer with 13+ years of client work. CTO at ElySpace, freelance developer for Marmaids LLC, and founder of WHMCSPilot and MagizAI.

Got a project like this?

Tell me what you need and I will send a written quote within one business day.