InvoicePlane

Self-hosted invoicing and quote management application

CRM & Business Apps ★ 3.1k stars Easy setup MIT

InvoicePlane is a free, open-source application for managing quotes, invoices, clients, and payments for freelancers and small businesses. It supports recurring invoices, payment tracking, and customizable templates.

Key features

  • Quote and invoice management
  • Client and payment tracking
  • Recurring invoices
  • Customizable templates

Pros & cons

Strengths

  • Easy to deploy
  • Good for freelancers

Trade-offs

  • No full accounting
  • Basic reporting

InvoicePlane replaces

Last reviewed Sep 13, 2026 · 787 words

InvoicePlane produces a numbered, branded PDF invoice about 10 minutes after the setup wizard finishes, and for a freelancer with 15 clients that is the entire job description. It is not an accounting system and never pretends to be: no chart of accounts, no bank feeds, no expenses ledger. Know that going in and it is the least frustrating invoicing tool in the self-hosted field; expect QuickBooks and it will disappoint by lunchtime.

What the install actually looks like

InvoicePlane is a PHP application on CodeIgniter with a MySQL or MariaDB database, so it runs anywhere a WordPress site does: a cheap shared host, a LAMP container, or Docker. There is no first-party Docker image; the community-maintained ones work, and this is the pattern:

services:
  invoiceplane:
    image: mhzawadi/invoiceplane:latest
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      - IP_URL=https://invoices.example.com
      - MYSQL_HOST=db
      - MYSQL_USER=invoiceplane
      - MYSQL_PASSWORD=change-me
      - MYSQL_DB=invoiceplane
    depends_on:
      - db
  db:
    image: mariadb:11
    restart: unless-stopped
    environment:
      - MYSQL_ROOT_PASSWORD=change-me-too
      - MYSQL_DATABASE=invoiceplane
      - MYSQL_USER=invoiceplane
      - MYSQL_PASSWORD=change-me
    volumes:
      - ./db:/var/lib/mysql

Then visit /setup, walk the wizard, and set DISABLE_SETUP=true in ipconfig.php afterwards, because leaving the setup route reachable on an internet-facing instance is the one classic mistake. IP_URL must match the address you use in the browser or asset links and PDF rendering break in confusing ways. The 512 MB minimum is generous; it idles at a fraction of that.

The workflow it models, and the one it does not

The objects are clients, products, quotes, invoices, payments, and recurring invoice schedules. Quote goes to client, client approves, quote converts to invoice in one click, invoice goes out as PDF by email, payment gets recorded against it, overdue reminders are yours to send. Invoice groups control numbering per series, tax rates can be per item or per invoice, and there are custom fields on nearly everything. Templates are PHP views you can edit, which is how people get a brand-matched PDF without a designer. User accounts come in two kinds: administrators who see everything, and guest accounts tied to one or more clients, who log in and see only their own quotes and invoices. That guest login is a modest client portal, enough for a client to download a past invoice without emailing you, and it is the multi-user feature in practice.

Online payment uses Omnipay gateways, so Stripe and PayPal work with a guest link the client can pay from. Reporting is the honest weak spot: sales by client, payment history, and invoice ageing. There is no profit-and-loss because there are no expenses. If you need a statement an accountant can work from, you export CSV and hand it over, or you run a real ledger beside it.

Where it sits against Invoice Ninja and the ERPs

Invoice Ninja is the bigger sibling: expenses, time tracking, a client portal, vendor management, and a mobile app, at the cost of a heavier stack and a business model that leans on its hosted plan. If you bill by the hour and want time tracking attached to the invoice, Ninja is the safer pick. Akaunting and Dolibarr are further along the ERP spectrum, with double-entry books and modules for everything, and take proportionally longer to set up. InvoicePlane wins when the requirement is exactly "quotes, invoices, payments, recurring, done", and loses the moment the requirement grows a second noun.

Development has been slow and steady since the project forked from FusionInvoice in 2014, with 3,132 stars and an MIT licence. Releases are infrequent; the code is stable rather than fashionable. That is fine for a tool whose output is a PDF.

Backups are trivial, which is a reason to trust it

Everything is the MySQL database plus an uploads directory for logos and attachments. A nightly mysqldump and a tar of uploads is a complete restore. Store those with the rest of your 3-2-1 backups and you have satisfied the multi-year retention requirement most tax authorities set for invoices, which is the one compliance item a freelancer really has to get right.

What I'd do

For a sole trader or a 2-person shop billing fewer than 50 invoices a month: InvoicePlane on a small VPS behind a reverse proxy with HTTPS, Stripe connected, DISABLE_SETUP on, nightly database dump. Keep bookkeeping separate, in whatever your accountant already uses. If time tracking or a client portal is on the list, skip straight to Invoice Ninja. If anyone says "inventory" or "purchase orders", you are shopping in the CRM and ERP category, not here.

Compare InvoicePlane

3 head-to-head comparisons.

Similar crm & business apps apps