CWInvoice Documentation

Complete reference for CWInvoice v1.0.0 โ€” installation, invoicing, recurring billing, reports, users and troubleshooting.

๐Ÿ“„

CWInvoice User Guide โ€” PDF

17-chapter PDF guide included with your purchase โ€” installation, all modules, SMTP setup, user permissions, and a production go-live checklist.

โฌ‡ Download User Guide PDF

1. Overview

CWInvoice is a self-hosted, flat-file invoicing system built for Caribbean freelancers and small businesses. It runs on standard cPanel hosting with PHP 7.4 or higher and requires no database โ€” everything is stored in JSON files on your server.

CWInvoice does one thing well: invoicing. For full double-entry accounting, bank reconciliation and financial statements, consider upgrading to CWBooks.

2. System Requirements

  • PHP: 7.4 or higher (8.x supported). Extensions: json, session, curl, openssl
  • Web server: Apache or LiteSpeed with mod_rewrite enabled
  • Hosting: Any standard cPanel shared hosting account
  • Disk space: ~1 MB for the application. Data grows with use.
  • SSL: HTTPS strongly recommended โ€” required for secure license validation

3. Installation

  1. 1Download โ€” cwinvoice.zip is sent to your email immediately after purchase. Also available in My Purchases.
  2. 2Upload โ€” via cPanel File Manager or FTP. Place in public_html/ (root) or public_html/invoice/ (subdirectory).
  3. 3Extract โ€” right-click the ZIP in File Manager โ†’ Extract.
  4. 4Permissions โ€” ensure the data/ directory is writable (755 or 775). Set via File Manager โ†’ Change Permissions.
  5. 5Visit your URL โ€” e.g. https://invoice.yourdomain.com. You will be redirected to the setup wizard automatically.
  6. 6Complete setup โ€” enter company details, admin credentials, and your CWINV-XXXX-XXXX-XXXX-XXXX license key.
Important: Do not delete or move the data/ directory after installation โ€” it contains all your invoices, clients and settings.

4. First-Time Setup

The Quick Setup wizard collects: Company Name, Currency (JMD, USD, TTD etc.), Country, Admin Name, Email Address, Password (min 8 chars), and your License Key.

After installation, add your address, phone, website and tax number under Settings โ†’ Company. Configure tax rates (GCT, VAT etc.) under Settings โ†’ Tax Rates.

5. Invoices

Creating an Invoice

Go to Invoices โ†’ New Invoice. Select a client, set issue and due dates, choose currency, then add line items (description, quantity, unit price, tax rate). The total calculates live.

Invoice Statuses

  • Draft โ€” saved but not sent. Fully editable.
  • Sent โ€” marked as sent. Triggers email to client if SMTP is configured.
  • Partial โ€” one or more payments recorded, balance outstanding.
  • Paid โ€” fully paid.
  • Overdue โ€” past due date with unpaid balance. Appears in AR Aging.
  • Void โ€” cancelled. Cannot be edited or paid.

Recording Payments

Click Record Payment on the invoice detail page. Enter amount, date, method (Bank Transfer, Cash, Cheque, Card) and an optional note. Partial payments are fully supported.

PDF Export

Every invoice has a PDF button generating a downloadable PDF with your company details, client details, line items, tax breakdown and payment terms. No external library required.

6. Estimates

Estimates work like invoices. Send one to a client for approval. Once they accept, use Convert to Invoice to create a draft invoice with all line items pre-filled โ€” no re-entry.

Statuses: Draft โ†’ Sent โ†’ Accepted / Declined โ†’ Invoiced (after conversion) or Void.

7. Clients

Every invoice and estimate must be linked to a client. Each client record stores name, email, phone, address, tax number (TRN, VAT, etc.), preferred currency and internal notes.

The client profile page shows all linked invoices and estimates, plus total revenue collected from that client.

8. Recurring Billing

Go to Recurring โ†’ New Recurring. Set up a template with the same fields as a regular invoice, plus a schedule: Frequency (weekly, monthly, quarterly, yearly), Start Date, optional End Date, Due Days, and Auto-Send (emails the generated invoice automatically if SMTP is configured).

CWInvoice checks for due templates on every authenticated page load, once per day. No cron job required.

Use Pause to temporarily stop a template without deleting it. Use Resume to restart.

9. Reports

Income Summary

Monthly revenue breakdown with a bar chart (invoiced vs collected), KPI tiles (total invoiced, total collected, outstanding, collection rate), and a month-by-month table. Use the year selector to switch years.

AR Aging

Groups all outstanding invoices by days overdue: Current, 1โ€“30, 31โ€“60, 61โ€“90, and 90+ days. Each row has a Remind button to email a payment reminder directly from the report.

10. Users & Permissions

Two roles: Admin (full access) and User (module-level access). Admin can create users and assign permissions per module: Invoices, Estimates, Clients, Recurring Invoices, Reports. Settings, Users, and Audit Log are always Admin-only.

Go to Users โ†’ New User to add a staff account. Check/uncheck module boxes to control access. Users only see nav links for modules they have permission for.

Password recovery: User passwords are stored as bcrypt hashes and cannot be recovered. If a user forgets their password, an Admin must set a new one from Edit User.

11. Settings

  • Company โ€” name, address, email, phone, website, tax number, currency, country
  • Invoice Numbering โ€” prefix (e.g. INV) and pattern (e.g. {PREFIX}-{YEAR}-{NNNN})
  • Tax Rates โ€” add/edit/remove rates. Each has a code, display name, and percentage.
  • Email / SMTP โ€” outgoing email credentials (see Section 13)
  • Change Password โ€” admin password update
  • License Key โ€” update or replace your CWINV key

12. Audit Log

Admin-only. Records every create, update, delete, send, payment, void, login and logout event with user, email and timestamp. Append-only โ€” cannot be edited. Stored in data/audit.json, capped at 2,000 entries with automatic pruning.

13. Email / SMTP

Configure in Settings โ†’ Email / SMTP:

  • SMTP Host โ€” e.g. mail.yourdomain.com
  • Port โ€” 587 (TLS, recommended), 465 (SSL), 25 (plain)
  • Username / Password โ€” your email account credentials
  • Encryption โ€” TLS (STARTTLS) recommended
  • From Name / From Email โ€” sender name and reply-to address
cPanel tip: Use mail.yourdomain.com, port 587, encryption TLS. Same credentials as your webmail login.

14. License

CWInvoice requires a CWINV-XXXX-XXXX-XXXX-XXXX license key. It is validated against cwfms.com and cached on your server for 48 hours. Find your key in your purchase confirmation email or My Purchases.

To update: Settings โ†’ License Key โ†’ enter new key โ†’ Save. The old cache clears immediately.

15. Troubleshooting

  • CSS not loading (plain HTML) โ€” add a public/.htaccess containing RewriteEngine Off
  • License validation fails โ€” check cwfms.com is reachable from your server; ask your host to allow POST to /api/license.php if ModSecurity is active
  • Emails not sending โ€” verify SMTP credentials; check your host allows outbound port 587
  • 500 error after upload โ€” check PHP 7.4+; verify data/ is writable (chmod 755); check PHP error log via cPanel โ†’ Errors
  • Install wizard re-appears โ€” data/settings.json is missing; ensure data/ was not excluded during upload
  • Recurring invoices not generating โ€” they run on the first authenticated page load of the day; if no one logged in on the scheduled day, they generate on next login

Still stuck? Email admin@cwfms.com

16. CWPay Integration

CWPay is a self-hosted payment link manager that integrates directly with CWInvoice. When a customer pays a CWPay payment link that references one of your invoices, CWInvoice automatically marks it as paid โ€” no manual action required.

How it works

  1. 1You create a CWPay payment link and enter the invoice number (e.g. INV-2026-0012) in the Invoice / Reference field.
  2. 2You share the link with your client via WhatsApp, email, or QR code.
  3. 3Client clicks and pays through WiPay, PayPal, Stripe or another gateway.
  4. 4CWPay receives the payment confirmation and sends a signed webhook to your CWInvoice install.
  5. 5CWInvoice verifies the signature, finds the invoice, records the payment and updates the status to Paid or Partial.

Setup โ€” CWInvoice side

Go to Settings โ†’ CWPay Integration:

  • Enable the integration toggle
  • Copy your Webhook URL โ€” e.g. https://your-cwinvoice.com/webhook/cwpay
  • Click Generate to create a shared secret, or enter your own
  • Save settings

Setup โ€” CWPay side

In your CWPay installation โ†’ Settings โ†’ Integrations โ†’ CWInvoice:

  • Enable CWInvoice integration
  • Enter the Webhook URL copied from CWInvoice settings
  • Enter the same Shared Secret
  • Save โ€” CWPay will now notify CWInvoice on every successful payment
Invoice reference must match exactly. CWPay looks up the invoice by number using case-insensitive matching. Enter the number exactly as shown in CWInvoice โ€” e.g. INV-2026-0012 not INV2026-12.

Payment methods supported

CWPay supports the following payment methods, all of which trigger the automatic reconciliation webhook when payment is confirmed:

  • WiPay โ€” JMD, TTD, BBD, XCD (Jamaica, T&T, Barbados, Eastern Caribbean)
  • PayPal โ€” USD, GBP, EUR, CAD and 15+ currencies
  • Stripe โ€” 135+ currencies, Apple Pay, Google Pay
  • Volet โ€” international + crypto (USDT, BTC)
  • Flutterwave โ€” pan-African + international
  • Square โ€” USD, CAD, GBP, AUD
  • Wise โ€” international bank transfer via Wise
  • Manual Bank Transfer โ€” direct bank transfer with custom bank details shown on payment page
Manual Bank Transfer note: Because manual bank transfers are not confirmed electronically, CWPay cannot auto-confirm these. You must manually mark the transaction as paid in CWPay after verifying receipt in your bank, which then triggers the webhook to CWInvoice.

17. Production Checklist

  • โ˜ SSL/HTTPS enabled on your domain
  • โ˜ Strong admin password set (12+ characters)
  • โ˜ data/ directory not publicly accessible (test: yourdomain.com/data/ should return 403)
  • โ˜ public/.htaccess in place
  • โ˜ Company name, address, email and phone entered in Settings
  • โ˜ Tax rates configured (e.g. GCT 15%)
  • โ˜ SMTP credentials tested โ€” send a test invoice to yourself
  • โ˜ License key validated (no error on login)
  • โ˜ Demo data removed if included in the download
  • โ˜ data/ directory backed up
Ready to buy?

Get CWInvoice for $39.00 โ€” instant download, full source code, license key delivered by email.

Buy CWInvoice โ€” $39.00 โ†’