CR

Crater

Free invoicing and expense tracking app

Budgeting & Finance ★ 8.3k stars Medium setup AAL

Crater is a free, open-source invoicing application built with Laravel and Vue.js. It lets freelancers and small businesses create invoices and estimates, track expenses, and accept payments.

Key features

  • Invoices and estimates
  • Expense tracking
  • Mobile companion apps
  • Multi-currency support

Pros & cons

Strengths

  • Clean modern interface
  • Free mobile apps

Trade-offs

  • Smaller feature set than rivals
  • Slower release cadence

Crater replaces

Last reviewed Aug 26, 2026 · 764 words

Crater is the best-looking free invoicing app you can self-host, it ships genuinely useful iOS and Android apps, and it needs 512 MB of RAM. Its weakness is the one the catalogue names directly: the release cadence has slowed to the point where I would not build a business on it without a plan B. That plan B exists, which is why Crater is still worth understanding.

The feature set is exactly what a freelancer needs and no more

Invoices, estimates that convert to invoices, recurring invoices, expenses with receipt attachments, customers, items, taxes, payments, multi-currency and multi-company from one login. Reports cover sales, expenses, profit and loss, and tax. Invoices carry a public link so a client can view and pay without logging in, and payment gateways are configured per company so you can collect by card. Templates are three well-designed defaults you customise with your logo and colours rather than a full PDF designer. That is the whole product.

What is missing is what the "smaller feature set" con is about: no time tracking, no bank feeds, no double-entry ledger, no project budgets, no client portal beyond the invoice link. If you need those, Invoice Ninja has them and Akaunting is a full bookkeeping system. Crater's bet is that most sole traders send 10 to 30 invoices a month and want that to be pleasant, and for that audience the bet is right.

Docker is the supported route, and it is three services

Crater is a Laravel application with a Vue front end, so the runtime is PHP-FPM, a web server and MySQL or MariaDB. The repository ships a docker-compose.yml that builds the app image and wires nginx, PHP and the database together; the first browser visit runs a setup wizard that writes the .env, migrates the database and creates the admin user. The steps that matter after the wizard:

docker compose exec crater-app php artisan storage:link
docker compose exec crater-app php artisan queue:work --once

Set APP_URL to the exact public address including scheme before running the wizard, because invoice PDFs and email links embed it and a mismatch is the most common "my PDFs are blank" cause. Put the whole thing behind a reverse proxy with TLS; the invoice links you send clients are public URLs and card entry needs HTTPS.

Back up two things: the database and the storage directory holding uploaded logos, receipts and generated PDFs. A mysqldump plus a tarball, nightly, restores cleanly; I have done it.

Mobile apps are the reason to choose it

The companion apps talk to your instance over its REST API. Enter your server URL, log in, and you can raise an invoice from a client's driveway or photograph a receipt into expenses. Very few self-hosted finance tools have a first-party phone app at all, and Crater's is decent. The prerequisite is that the API is reachable from the phone, so either expose the instance publicly behind TLS or run Tailscale on the phone and server. If you only ever invoice from a desk, this advantage evaporates and the comparison with rivals tilts.

The maintenance question, answered plainly

Crater's licence is the Attribution Assurance License, which is permissive but requires you to keep the attribution. Its development has slowed markedly since its most active years, and issues and pull requests can wait a long time. A community fork, InvoiceShelf, was started to continue the codebase with active maintenance, and it is the answer to "what if Crater stops". Because it is a fork of the same Laravel app and schema, moving is a database import rather than a re-key. For a new install today I would look hard at the fork first; for an existing Crater instance that works, there is no urgency, only a reason to keep the backups current.

What I'd do

If you send a modest number of invoices, like the phone app, and want something prettier than a spreadsheet, run Crater from its Docker compose behind Caddy with APP_URL set correctly, nightly database and storage backups, and card payments enabled through whichever gateway you already use. Check the project's commit activity before you install; if it has gone quiet for months, install InvoiceShelf instead and get the same product with someone answering the issues. Either way, keep your client list and invoice history exportable, because the finance category moves fast and you will want the option to leave.

Compare Crater

2 head-to-head comparisons.

Similar budgeting & finance apps