| Required | Notes | |
|---|---|---|
| PHP | 8.2 or newer (8.2, 8.3, 8.4) | PHP-FPM or suPHP. 8.2 is the oldest PHP version that still gets security fixes. |
| PHP extensions | pdo_mysql, sodium, curl, openssl, mbstring, json | |
| Recommended extensions | fileinfo, gd, iconv | fileinfo checks attachment types, gd puts images into PDF invoices, iconv decodes piped e-mails |
| ionCube Loader | yes, version 14 or newer for PHP 8.2+ | The package is encoded. Without the loader you get a message that links to the loader download. |
| Database | MySQL 5.7+ or MariaDB 10.3+ | An empty utf8mb4 database and a user with all privileges on it |
| Web server | Apache with mod_rewrite, LiteSpeed, or nginx | nginx needs the rules from Installation |
| Cron | yes | Every 5 minutes, plus every minute for mass e-mails |
| HTTPS | strongly recommended | Logins, payments and webhooks. Stripe and PayPal webhooks need HTTPS. |
| Outgoing connections | HTTPS to the license server, gateways, registrars and your servers | Port 2304 (CWP API) to your CWP servers |
On a CWP server
CWP Billing runs on any CWP server (EL7, EL8, EL9, EL10):
- Create a user account and a domain for the billing, for example
billing.example.com. - In PHP-FPM Selector, set the domain to PHP 8.2 or newer (
/scripts/cwp_php domain set billing.example.com fpm 8.3from the shell). - Install the ionCube loader for that PHP version (PHP-FPM Selector → extensions, or the PHP rebuild with ionCube).
- Create the database and its user in the CWP user panel.
- Issue a free SSL certificate (AutoSSL) for the domain.
Server sizing
A small VPS (1–2 vCPU, 2 GB RAM) is enough for tens of thousands of clients and invoices. The largest tables are tickets with their attachments (storage/attachments) and the e-mail log. Plan disk space for attachments.