// Contents
  1. Why PHP for self-hosted invoicing
  2. Hosting and deployment requirements
  3. Features that matter for invoicing
  4. Expense tracking requirements
  5. Architecture: database vs flat-file
  6. PHP invoicing tools compared
  7. CWFMS: invoicing in a complete financial system

Why PHP for self-hosted invoicing?

PHP remains the dominant server-side language for self-hosted business applications — and for good practical reason. PHP 7.4+ runs on virtually every shared hosting environment in the world. If you or your client has a cPanel hosting account, PHP is already available without any additional configuration.

Compare this to alternatives:

PHP's ubiquity on shared hosting is a genuine deployment advantage for self-hosted invoicing software aimed at small businesses that don't have DevOps resources.

Practical note: "Runs on shared hosting" is not a limitation — it's a feature. It means no VPS provisioning, no Docker configuration, no server management overhead. Upload, set permissions, run the setup page. Done.

Hosting and deployment requirements

For a PHP-based invoicing system, the minimum requirements for any modern tool should be:

🐘
PHP Version
7.4+ (8.x preferred)
🔌
Extensions
cURL, JSON, mbstring
💾
Storage
SQLite or flat-file JSON
🌐
Web Server
Apache / LiteSpeed / Nginx
📁
Hosting Type
Shared hosting (cPanel)
🔒
SSL
Required (free via cPanel)

Any PHP invoicing system that requires MySQL/MariaDB, Redis, or Node.js as dependencies is adding infrastructure complexity that most small business deployments can't sustain. The simpler the stack, the better.

What to check before deploying

Verify PHP version and extensions via cPanel Terminal or SSH
php -v
# PHP 7.4.33 (cli) or higher

php -m | grep -E 'curl|json|mbstring|pdo|zip'
# Should list: curl, json, mbstring, pdo_sqlite (for SQLite tools), zip

Features that matter for invoicing

Not all invoicing modules are equal. Here's what separates a complete invoicing system from a basic one:

Professional PDF output — branded invoices with logo, itemised line items, tax breakdown, payment terms
Status tracking — Draft → Sent → Viewed → Paid → Overdue with timestamps
Recurring invoices — automatically generate invoices on a schedule for retainer clients
Multi-currency — invoice in client's currency with exchange rate handling
Tax line items — GCT/VAT per line item or as a total, with configurable rates
Client management — client database with contact details, payment history, outstanding balance
Payment recording — mark invoices as paid (partial or full), record payment method and date
Accounts receivable view — total outstanding, overdue amounts, aging report

Expense tracking requirements

Invoicing without expense tracking gives you half the picture. A complete system should handle:

Architecture: database vs flat-file

PHP invoicing tools fall into two camps architecturally, and the choice has real implications for deployment and maintenance:

MySQL/MariaDB-dependent tools

Most PHP invoicing tools (Crater, Invoice Ninja v4, Akaunting) require a MySQL database. This adds a dependency: you need a database server, credentials, and someone to manage backups. On shared hosting this is usually available, but it's additional configuration. Database corruption is rare but catastrophic when it happens without a recovery plan.

Flat-file and SQLite tools

Tools using flat-file JSON or SQLite have no database server dependency. SQLite stores the entire database in a single file that you can back up with a simple file copy. Flat-file JSON is even simpler — all data is human-readable text files.

CWFMS uses flat-file JSON for all core data — no MySQL required, no database configuration. The entire data store is a directory of JSON files that can be backed up with a single zip operation. Folio, the companion HR system, uses SQLite.

PHP invoicing tools compared

Tool Database Shared Hosting Price Model Payroll Expense Tracking Multi-company
CWFMS Flat-file JSON ✓ Any cPanel One-time ✓ Full ✓ Full
Crater MySQL required Possible Free (OSS) Basic
Invoice Ninja v4 MySQL required Possible Free (OSS) Basic
Invoice Ninja v5 MySQL + Docker ✗ VPS only Free (OSS) Basic Limited
Akaunting MySQL required With effort Free core Paid add-on Core only

CWFMS: invoicing inside a complete financial system

CWFMS treats invoicing as one module within a complete wealth management system rather than a standalone invoicing tool. This matters because invoices don't exist in isolation — a paid invoice should update your accounts receivable, affect your cashflow view, and be trackable against a client for P&L purposes. In siloed invoicing tools, you handle that reconciliation manually. In CWFMS, it's automatic.

What the invoicing module covers

Deployment

CWFMS deployment — requirements
PHP:       7.4+ (8.x supported)
Extensions: curl, json, mbstring
Database:  None — flat-file JSON
Hosting:   Any cPanel shared hosting
Setup:     Upload ZIP → visit /admin/setup.php → done

No database credentials. No migration scripts. No environment files to configure. Unzip, upload, visit the setup page, set your admin password and brand settings, and the system is live.

See the invoicing module live

The demo is pre-loaded with sample clients, invoices and transactions — explore everything before deciding.

Open Live Demo → Pricing & Docs

Related: Self-hosted accounting software guide · Wave alternatives · Self-hosted office management comparison