What you need before you start
CWFMS runs on any standard cPanel shared hosting account. Before you begin, confirm your hosting meets these requirements:
- PHP 7.4 or higher — check in cPanel → Software → PHP Version Selector
- cURL extension enabled — required for payment gateway integration
- JSON extension — enabled by default on virtually all hosts
- Write permissions on
data/— needed for flat-file JSON storage - SSL certificate — free via Let's Encrypt in cPanel, required for secure checkout
No database required: CWFMS uses flat-file JSON storage — there is no MySQL database to create, configure or back up. All data is stored as JSON files in the data/ directory on your hosting account.
Step 1 — Check your PHP version
Log into cPanel and navigate to Software → PHP Version Selector (or MultiPHP Manager on some hosts). Select PHP 8.1 or 8.2 if available — both are fully supported. PHP 7.4 is the minimum. If your host only offers PHP 7.3 or lower, contact them to upgrade before proceeding.
php -v # Should show: PHP 7.4.x or higher php -m | grep -E 'curl|json|mbstring' # Should list: curl, json, mbstring
Step 2 — Upload and extract the files
cwfms-v2.x.x.zip.public_html/. For a subdirectory (yoursite.com/accounting), create that folder first.index.php, bootstrap.php, assets/ and data/ in the folder.Step 3 — Set folder permissions
The data/ directory must be writable by the web server. In File Manager, right-click the data/ folder → Change Permissions → set to 755. Do the same for downloads/ and uploads/ if present.
chmod 755 data/ chmod 755 downloads/ chmod 755 uploads/
Step 4 — Run the setup wizard
Open your browser and navigate to your install URL followed by /admin/setup.php. For example: https://yourdomain.com/admin/setup.php
The setup wizard will walk you through:
- Setting your admin password
- Entering your brand name, support email and from name
- Configuring your base URL
- Setting your license API secret key
After completing setup, the wizard will redirect you to the admin login. Log in with the password you just set. The setup file is automatically disabled after first run for security.
Step 5 — Enable SSL
SSL is required for secure checkout and browser trust. In cPanel, navigate to Security → SSL/TLS → Let's Encrypt SSL (or AutoSSL). Click Issue for your domain. This is free and takes approximately 2 minutes. Once issued, all HTTP traffic will automatically redirect to HTTPS.
Important: Set your base URL in CWFMS admin settings to use https:// not http:// after enabling SSL. This ensures all generated links in emails and the licensing API use the secure URL.
Running on a subdomain
If you want to run CWFMS at a subdomain like accounting.yourdomain.com:
- In cPanel → Domains → Subdomains — create the subdomain and point it to a new directory, e.g.
public_html/accounting/ - Upload and extract CWFMS into that directory
- Issue an SSL certificate for the subdomain via Let's Encrypt
- Run the setup wizard at
https://accounting.yourdomain.com/admin/setup.php
Common issues and fixes
Blank page or 500 error after upload
Usually caused by PHP version being below 7.4. Go to cPanel → PHP Version Selector and switch to 7.4, 8.0, 8.1 or 8.2. Clear your browser cache and reload.
Permission denied errors in the data directory
The data/ folder needs write permission. Set it to 755 via File Manager → Change Permissions. If still failing, try 775.
Emails not sending after setup
Configure SMTP in admin → Settings → Email / SMTP. Use your hosting mail server credentials (usually mail.yourdomain.com, port 587, TLS). PHP's mail() function often fails silently on shared hosting — SMTP is far more reliable.
Setup wizard redirects to login without completing
This means setup has already been run once and the wizard has been disabled. If you need to re-run it, delete data/settings.json via File Manager and revisit /admin/setup.php.
See CWFMS before you install
Try the full system in the live demo — no hosting required, no sign-up, pre-loaded with data.
Open Live Demo → Pricing & FeaturesRelated: Self-hosted accounting software guide · PHP self-hosted invoicing guide · Managing finances without a subscription