Twenty dollars a month does not sound like much until you multiply it by the length of your freelance career. At $20 a month, a standard invoicing subscription costs you $240 a year — and over six years of freelancing, that is $1,440 for the privilege of sending PDFs and getting paid. Meanwhile a small virtual private server rents for about $5 a month, and the best self-hosted invoicing software is free.
So should you cancel the subscription and host your own invoicing? For a technical freelancer, the honest answer is: probably yes, but only if you pick maintained software and budget an hour a month for upkeep. This guide walks through the three names you will keep encountering — Invoice Ninja, Crater, and InvoicePlane — what each one actually costs to run, what maintenance you are signing up for, and when staying on hosted software is the smarter move.
The Real Math: Subscription vs. Self-Hosted
Start with what you are paying now, or would pay, for hosted invoicing:
- FreshBooks starts at $21 a month billed monthly ($17 a month on the annual plan) for its entry tier, with fuller accounting features arriving on the $38-a-month Plus plan.
- QuickBooks Solopreneur runs $20 a month, aimed squarely at one-person businesses that want tax categorization and Schedule C preparation alongside invoicing.
- Invoice Ninja's own hosted service offers a genuinely free tier (up to 5 clients with unlimited invoices), with paid plans at $14 and $18 a month.
Now the self-hosted side:
- A small VPS from a mainstream provider costs roughly $5 a month, or about $60 a year.
- Invoice Ninja's self-hosted edition is free and includes the Pro and Enterprise features; the optional white-label license that removes Invoice Ninja branding from client-facing pages costs $40 a year.
- InvoicePlane is free with no paid tier at all.
So the realistic comparison is about $240 a year for a typical SaaS subscription versus about $60 to $100 a year self-hosted. You save roughly $150 a year — meaningful, but not life-changing. The stronger reasons to self-host are control over your client data, freedom from per-client limits and price hikes, and the ability to customize invoice templates and workflows exactly how you want them. The savings are the bonus, not the reason.
Option 1: Invoice Ninja — The One Most Freelancers Should Pick
Invoice Ninja is the most capable self-hosted invoicing option available today, and the only one of the three that is under active development. The version 5 codebase is a Laravel (PHP) backend with Flutter-based web and mobile apps, covering invoices, quotes, recurring billing, expenses, time tracking, projects with kanban boards, a client portal, and online payments through dozens of gateways.
For self-hosters, the deal is unusually generous: the self-hosted edition is free and unlocks the Pro and Enterprise features that hosted customers pay $14 to $18 a month for. The only paid extra is the $40-a-year white-label license, which removes the "Created by Invoice Ninja" branding. If your clients will see the portal and the invoice PDFs — and they will — budget for it.
The license nuance you should know
Invoice Ninja v5 is released under the Elastic License 2.0. That makes it source-available, not open source in the formal sense: you can read the code, modify it, and run it for your own business freely, but you cannot take it and resell it as a competing hosted service. For a freelancer invoicing clients, the restriction is irrelevant — but it is worth knowing that you are depending on a vendor's goodwill rather than a community guarantee. If strict open-source licensing matters to you, InvoicePlane below is the MIT-licensed alternative.
What it takes to run
The documented server requirements are modest: PHP 8.1 or higher with MySQL 5.7+ or MariaDB 10.3+. In practice most people deploy the official Docker image with a compose stack of three services — the app, the database, and a cron worker. First-run setup means generating an application key, running the database migrations, and completing a web-based wizard. Expect an evening of fiddling the first time, including pointing a domain at the server, terminating TLS, and configuring an SMTP provider so invoices actually reach inboxes.
Two things to get right from day one: automated database backups to somewhere other than the server itself, and a cron scheduler that actually runs — recurring invoices and late-payment reminders silently stop without it.
Option 2: InvoicePlane — Simple, Truly Open, and Lightweight
InvoicePlane is the minimalist of the three: a self-hosted PHP application for managing quotes, invoices, clients, and payments, released under the MIT license. It grew out of the old FusionInvoice codebase and has kept that project's original promise — straightforward billing you run on your own server, with no paid tiers, no feature gates, and no phone-home anything.
Choose InvoicePlane if your needs are genuinely simple. If you send a handful of invoices a month, do not need time tracking or project management, and want software with a small attack surface that you can understand end to end, it is an excellent fit. It runs happily on the cheapest shared hosting or a tiny VPS, and its simplicity is also a maintenance advantage: there is less to break and less to update.
The trade-off is momentum. The stable 1.x line is built on the aging CodeIgniter 3 framework, and the modern v2 rewrite (Laravel plus Filament) is still in development with major pieces like Peppol e-invoicing not yet implemented. InvoicePlane is maintained, but slowly — fine for a tool whose job description has not changed in decades, and a reason to keep your PHP version and backups current rather than assuming the project will rescue you from neglect.
Option 3: Crater — A Cautionary Tale, Not a Recommendation
You will still find Crater on "best open-source invoicing" listicles: a polished Laravel and Vue.js app for invoices, estimates, expenses, and payments, with mobile apps and multi-currency support. It earned that reputation honestly — a few years ago.
Today, Crater is effectively unmaintained. Its releases stalled at version 6.x back in 2022, documentation updates stopped in 2023, and the repository has seen only sporadic activity since. Billing software that nobody patches is billing software accumulating known vulnerabilities around your clients' names, addresses, rates, and payment details. That is an unacceptable foundation for a business tool.
The lesson generalizes beyond Crater: before adopting any self-hosted business software, check the repository's pulse — recent releases, merged security fixes, and responsive maintainers. A beautiful app with a dead commit history is a liability wearing a demo. If you want Crater's shape (modern stack, permissive license) with a heartbeat, look at community-maintained MIT-licensed alternatives such as SolidInvoice instead.
What You Are Really Signing Up to Maintain
Self-hosting swaps a subscription fee for a short list of recurring responsibilities. None is hard; all are non-optional:
- Updates. Apply app and dependency updates within days of release, not months. Billing software holds personal data, so a known CVE in your invoicing stack is a client-trust issue, not just a technical one.
- Backups. Automate daily database dumps plus the file storage directory, ship them off the server, and test a restore at least once. An untested backup is a hope, not a backup.
- TLS and access control. Serve everything over HTTPS, keep the admin panel behind strong credentials plus a second factor where supported, and never expose the database port to the internet.
- Email deliverability. Invoices that land in spam do not get paid. Send through a reputable SMTP provider with SPF, DKIM, and DMARC configured for your domain, and watch your bounce rate.
- Cron and queues. Recurring invoices, payment reminders, and currency updates all depend on the scheduler. Monitor it — a silently dead cron job looks exactly like clients suddenly paying late.
- PHP and OS lifecycle. Track end-of-life dates for your PHP minor version and your server OS. An upgrade you plan for takes an hour; an upgrade forced by an expired version takes a weekend.
Budget roughly an hour a month once things are stable, plus occasional upgrade evenings. If that sounds like a chore you will resent, that feeling is data — stay hosted.
Common Mistakes That Bite Self-Hosters
Most self-hosting failures are boring and preventable:
- No off-server backups. A snapshot on the same VPS is not a backup. When the provider has a bad day, your data and your "backup" evaporate together.
- Skipping updates until the jump is scary. Twelve small upgrades a year are painless; one giant leap across three major versions is how invoices go missing. Update little and often.
- Running without HTTPS. An invoice portal carrying client names and amounts over plain HTTP is negligent. Free certificates take minutes — there is no excuse left.
- Forgetting the cron worker. The single most common "my recurring invoices stopped" cause. Verify the scheduler survives reboots and deploys.
- No staging for upgrades. Snapshot the server, or better, rehearse major upgrades on a clone. Rolling back a snapshot beats debugging a half-migrated database at midnight.
- Treating the invoice tool as the books. Invoicing software tracks what you billed; it is not double-entry accounting. Which brings us to the last section.
When Staying Hosted Is the Smarter Move
Self-hosting is not a moral virtue, and there are clear cases for paying the subscription:
- You have five or fewer active clients. Invoice Ninja's hosted free tier covers you at zero cost and zero maintenance. Take it.
- You live on bank sync and auto-reconciliation. Hosted tools' Yodlee and GoCardless integrations beat anything you will wire up yourself.
- E-invoicing mandates apply to you. With Peppol and country-specific mandates spreading through 2026, the hosted Enterprise tier's built-in e-invoicing credits may be cheaper than your time implementing compliance yourself.
- Tax season is your bottleneck. If what you actually need is Schedule C categorization and clean year-end reports, QuickBooks Solopreneur's $20 a month buys the tax workflow, not just invoices.
- You will not do the maintenance. An unpatched server holding client financial data is worse than a subscription in every way that matters.
Invoicing Is Not Bookkeeping — Connect the Two
Whatever you invoice with, remember that sent invoices are only half the financial picture. An invoice records what a client owes you; your books must record when the money actually arrives, what fees the payment processor skimmed, which expenses offset the income, and what you owe in estimated tax. Freelancers who treat "invoiced" as "earned" discover the difference at tax time, usually painfully.
Build a simple monthly habit: reconcile every payout against its invoice, log processor fees as expenses rather than netting them silently, and keep business money in a separate account so the trail stays clean. If you want the mechanics of double-entry tracking behind that habit, the documentation walks through setting up a ledger that fits around any invoicing tool.
Keep Your Invoices and Your Books in Sync
As you streamline your freelance billing — self-hosted or not — maintaining clear financial records behind those invoices is what keeps tax season boring. Beancount.io provides plain-text accounting that gives you complete transparency and control over your financial data — no black boxes, no vendor lock-in. Get started for free and see why developers and finance professionals are switching to plain-text accounting.





