# SolidInvoice: Open-Source Billing Platform for Freelancers and Small Businesses

> SolidInvoice is an MIT-licensed PHP invoicing application built on Symfony 7.1 and PHP 8.4 that handles quotes, invoices, recurring billing, multi-currency amounts, and online payments. It can be self-hosted for free via Docker, a Homebrew binary, or a single executable, or hosted for a flat $8 per month with automatic updates.

**SolidInvoice/SolidInvoice** — Simple and elegant invoicing solution.

- Repository: https://github.com/SolidInvoice/SolidInvoice
- Website: http://solidinvoice.co
- Stars: 974 · Forks: 237
- Language: PHP
- License: MIT
- Published: 2026-09-10 · Updated: 2026-09-10 · Language: en
- Canonical page: https://hysenlabs.com/projects/solidinvoice-solidinvoice

## What SolidInvoice Addresses and Who Operates It

Most invoicing tools either require a monthly subscription to a third-party SaaS or put a client limit on the free tier. SolidInvoice occupies a different position: a full-featured, production-ready billing platform you run on your own server with no per-client fees and no artificial limits, licensed under MIT.

The project targets freelancers and small businesses that send quotes and invoices regularly, accept online payments, and need recurring billing automation. It is not a general-purpose accounting system; it focuses on the billing workflow from quote to paid invoice. The README describes it as designed for extension and integration, which makes sense given the API-first design and the MCP server that allows AI agents to interact with it.

## Getting SolidInvoice Running: Docker, Binary, or Source

The quickest path is the Docker image:

```bash
docker run -p 8080:80 solidinvoice/solidinvoice
```

That starts the application at http://localhost:8080. For a production setup with a persistent database, the docker-compose.yml in the repository defines a MySQL 8.0 container alongside the application container on port 8765.

On macOS or Linux with Homebrew, the Homebrew tap approach avoids Docker entirely:

```bash
brew install solidworx/tap/solidinvoice
solidinvoice run
```

The same `solidinvoice run` command works after downloading a binary from the releases page:

```bash
chmod +x solidinvoice
./solidinvoice run
```

The binary bundles everything except the database. After it starts, navigate to http://localhost:8765. For developers who want to modify the source:

```bash
git clone https://github.com/SolidInvoice/SolidInvoice.git
cd SolidInvoice
composer install
bun install && bun run dev
```

The development build requires PHP 8.4 with ext-curl, ext-gd, ext-intl, ext-openssl, ext-pdo, ext-soap, and ext-xsl, plus MySQL/MariaDB or PostgreSQL.

## The Quote and Invoice Workflow

The billing flow follows a defined state machine: draft, pending, and paid. A quote converts to an invoice in one click. Invoices support multi-currency amounts backed by real Money objects, which avoids floating-point rounding errors. Multi-tax works at the invoice level with automatic rate snapshots on issue, so historical invoices retain the tax rates that applied when they were sent even if rates change later.

Eight built-in PDF templates cover invoices and quotes. Payment reminders send on a configurable schedule. Overdue detection is automatic. Recurring invoices run on flexible schedules; the README lists this as a core billing feature alongside the standard one-off invoice flow.

Client management includes custom fields for clients and contacts, per-client currencies and addresses, and contact channels. Multi-tenancy is built into the data model, so one installation can serve multiple companies with data isolation between them. A guided onboarding checklist walks new users through the initial setup.

## Payments, REST API, and MCP for AI Agents

Payment gateway integration uses Payum, which supports Stripe, PayPal, and other gateways through its plugin system. Online payment links are included with invoices. The README states the system is PCI-compliant because card data never touches the server.

The REST API is powered by API Platform 4 and supports JSON-LD, JSON-HAL, plain JSON, and XML. Authentication uses a token passed in the X-API-TOKEN header. Full-text search across all records uses Meilisearch.

A built-in MCP server with OAuth2 allows AI agents to interact with SolidInvoice programmatically: querying clients, creating invoices, and tracking payments through a standard protocol rather than through the HTTP API directly. The AGENTS.md and CLAUDE.md files in the repository describe the intended agentic integration surface, which suggests the project is actively designed to work within AI-assisted workflows.

## Self-Hosted vs Hosted and the Real Cost Difference

Both options run the same codebase with the same features. The choice is purely operational. Self-hosted is free under MIT; you install, maintain, and backup. Hosted is $8 per month flat with no per-client fees; the SolidInvoice team handles updates, backups, and removes SolidInvoice branding. The hosted tier also gets early access to new features.

For self-hosting, the Helm chart in the helm/ directory supports Kubernetes deployment. Optional Prometheus metrics are available on an opt-in basis. Symfony Messenger handles async task processing, which means queue workers need to run alongside the web server for background jobs like payment reminders.

The upgrade path is documented in UPGRADE.md. The CHANGELOG.md tracks what changes between releases. Version 3.0.1 was released on June 23, 2026.

## Where SolidInvoice Falls Short

SolidInvoice is not a full accounting system. It handles billing and payments but does not include expense tracking, time logging, payroll, or tax filing. Engineers expecting Xero- or QuickBooks-level accounting features will find the feature set narrow.

The technology stack is PHP 8.4 and Symfony 7.1. Organizations without PHP expertise on staff will find it harder to debug and extend than a Node.js or Python-based alternative. The Dockerfile and Homebrew binary lower the operational bar, but custom plugin development still requires PHP knowledge.

The API Platform 4 REST API is comprehensive, but real-time webhooks for invoice state changes are not documented in the README. Teams building automated payment workflows should verify webhook support before committing to the platform.

The development setup requires both PHP tooling (composer) and JavaScript tooling (bun), which adds friction for contributors unfamiliar with the dual-stack build process.

## Invoice Ninja as a Feature-Rich Alternative

Invoice Ninja is a well-known open-source invoicing and billing platform available on GitHub. It covers a broader scope than SolidInvoice, including time tracking, expense management, and mobile apps. Invoice Ninja also offers its own cloud-hosted plan with a free tier.

The practical difference in approach is scope versus focus. SolidInvoice keeps its feature surface to billing, quotes, recurring invoices, and payments. Invoice Ninja extends into project management and mobile invoicing workflows. For freelancers who need only invoicing and want a cleaner, more focused interface, SolidInvoice's narrower scope is an advantage. For teams that need time tracking and expense management alongside invoicing in the same application, Invoice Ninja covers that without additional software.

SolidInvoice had its last push on September 27, 2026. The MIT license places no restrictions on commercial use, modification, or redistribution.

## Conclusion

SolidInvoice is the right choice for a freelancer or small business that wants full control over invoice data and is willing to maintain a self-hosted service or pay $8 per month for the hosted version. The Docker one-liner and the single binary lower the bar for self-hosting considerably. Teams that cannot run PHP or have no server budget and want a purely browser-based SaaS should look at the hosted tier or at Invoice Ninja's free cloud plan instead. Before deploying, verify that your server has PHP 8.4 with the required extensions (ext-curl, ext-gd, ext-intl, ext-openssl, ext-pdo, ext-soap, ext-xsl) and either MySQL/MariaDB or PostgreSQL, since SolidInvoice does not bundle a database in the single binary.

## FAQ

### How do I install SolidInvoice with Docker?

Run `docker run -p 8080:80 solidinvoice/solidinvoice` for a quick local instance. For a persistent deployment, the repository provides a docker-compose.yml that pairs the application container with a MySQL 8.0 database and maps port 8765.

### Does SolidInvoice support multi-currency invoicing?

Yes. SolidInvoice uses real Money objects for amounts, which avoids floating-point rounding errors. Clients can each have their own currency set, and tax rates are snapshotted at the time of invoice issue so historical records stay accurate.

### What is the difference between SolidInvoice self-hosted and the hosted plan?

Both plans run the same codebase and feature set. Self-hosted is free under the MIT license; you handle installation, updates, and backups. The hosted plan costs $8 per month flat with no per-client fees, includes automatic updates and managed backups, and removes SolidInvoice branding.

## Sources

- [License: MIT](https://github.com/SolidInvoice/SolidInvoice/blob/3.1.x/LICENSE)
- [Project website](http://solidinvoice.co)
- [README](https://github.com/SolidInvoice/SolidInvoice/blob/3.1.x/README.md)
- [Releases](https://github.com/SolidInvoice/SolidInvoice/releases)
- [SolidInvoice/SolidInvoice on GitHub](https://github.com/SolidInvoice/SolidInvoice)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/solidinvoice-solidinvoice
