← Software directory

Small business NS/021

InvoiceShelf: professional invoicing without a monthly subscription

Create estimates and invoices, record payments and expenses, schedule repeat bills and give customers a private portal on a server you control.

Official InvoiceShelf dashboard showing amount due, customers, invoices, estimates, sales, expenses and recent records.
InvoiceShelf project image. View source ↗

InvoiceShelf is a self-hosted invoicing system for freelancers and small businesses. It keeps customers, estimates, invoices, recorded payments, expenses and reports together without charging for each user or document.

Use the stable 2.x release, not the tempting 3.x preview

InvoiceShelf 2.4.2 is the current stable release. Version 3 adds attractive work around credit notes, customer balances, taxes, PDFs and modules, but the project labels its public 3.0 alpha as a pre-release for evaluation only—not production data. A business invoice archive is the wrong place to volunteer for an alpha test.

Stable 2.4.2 already covers the ordinary path from quote to payment record. It can create customers and reusable items, turn an estimate into an invoice, produce a PDF, email documents, record money received, track expenses and show sales or profit-and-loss reports. It also supports more than one company inside an installation.

Software cost
Free
Recommended deployment
Docker Compose
Stable release reviewed
2.4.2

The appeal is one connected workflow—not merely a prettier invoice

A Word template can make one good-looking invoice. InvoiceShelf becomes useful when the same customer, products, tax settings and number formats feed every estimate and invoice, while payments and expenses update the dashboard. That reduces repeated typing and keeps a history that can be searched later.

RecordWhat it handlesWhat still needs checking
EstimatePrices work before approvalTerms, expiry and acceptance
InvoiceNumber, due date, items, tax and PDFLocal tax and numbering rules
PaymentMoney received against a customer or invoiceThe real bank transaction
ExpenseSupplier cost, category and receiptAccounting treatment and evidence
Customer portalInvoice status, PDF downloads and profileHTTPS, access and support

“Payment” needs a qualification. In stable 2.x, it is a record of money received by cash, cheque, card or bank transfer. The current customer-portal documentation explicitly says online payment collection is not supported. InvoiceShelf can show that an invoice was paid; it is not a replacement for a payment gateway or merchant account.

Customer portal access is optional. When enabled for a customer, it gives that person a login where they can see paid, unpaid and overdue invoices and download PDFs. That is more professional than emailing replacement copies repeatedly, but it also turns the installation into a public-facing service holding names, addresses and financial records.

Recurring invoices only help after scheduling and email really work

Repeat invoices can run weekly, monthly, yearly or on a custom schedule, with a count or end date. This suits retainers, rent and predictable service agreements. The schedule does not charge a customer automatically; it creates the next invoice and can send it through the configured mail system.

That makes three pieces important: the server's scheduled job, the company timezone and outbound email. Release 2.4.2 fixed a Docker timezone problem that previously made scheduled work run in UTC. Set the container's TIMEZONE, configure SMTP inside InvoiceShelf and create a near-term disposable recurring invoice before trusting a monthly bill.

Email is also needed for ordinary invoice delivery, password recovery and useful customer notifications. A dashboard that works perfectly in a browser can still fail as an invoicing system if messages land in spam or never leave the server.

A recurring invoice is not tested until the scheduled document appears at the correct local time and reaches a real inbox.

The sensible first installation is small, pinned and private

InvoiceShelf's own documentation recommends its separate production Docker repository for most self-hosted installations. The smallest Compose option uses SQLite and one application container. On an existing Ubuntu server or a Compose-capable management panel, that is the best trial for one person: there is no separate database service to maintain, and the database lives inside the persistent storage volume.

Before starting it, change the image from a moving tag to invoiceshelf/invoiceshelf:2.4.2. Set APP_URL to the exact address used in the browser, SESSION_DOMAIN to its hostname and SANCTUM_STATEFUL_DOMAINS to the same host plus its port when required. A mismatch can produce login or redirect problems that look like a broken application.

Trial it on the trusted local network first. Public access needs a dedicated subdomain, HTTPS, a reverse proxy, strong administrator credentials and working backups. Do not publish port 8090 directly to the internet just to make the customer portal reachable.

The default PDF engine, dompdf, needs no extra service. InvoiceShelf's documentation warns that mixed writing systems can render as empty boxes, however. Anyone invoicing customers whose names or addresses use Arabic, Hebrew or Chinese should generate a realistic PDF immediately. The optional Gotenberg container uses Chromium and is the documented solution, but adds another service and more memory use.

  • Existing Ubuntu serverFree beyond electricity and storage
  • Small VPSAbout $5–10 per month plus backups
  • Required for public useDomain, HTTPS and outbound email
  • Ongoing workUpdates, restore tests and delivery checks

The invoice archive matters more than the container

InvoiceShelf includes a backup screen that can package the database, stored files or both. Docker's SQLite setup also keeps database.sqlite under /var/www/html/storage/app; the whole storage volume and the separate modules volume persist outside the replaceable application container.

For the starter SQLite installation, protect the complete storage volume rather than copying only the database file and hoping logos, PDFs and attachments exist somewhere else. Keep the Compose configuration and any modules too. A MariaDB or PostgreSQL installation needs its database backed up separately alongside application files.

The built-in backup feature and volume layout are documented, but we did not restore either one. Before entering real customers, make a test company, customer and invoice, create a full backup, restore it into a clean temporary installation and download the recovered PDF. A backup that has never been restored is only a theory.

It is invoicing software, not an accountant or a complete ledger

InvoiceShelf can calculate configured taxes and produce reports from its own records. It does not decide which tax applies, guarantee a legally compliant invoice, reconcile a bank account, run payroll, file a return or replace professional accounting advice. Invoice numbering, currency, tax identifiers, retention periods and credit-note rules still belong to the business and its jurisdiction.

The practical danger is treating a polished dashboard as proof the books are correct. A payment entered twice remains wrong; an omitted expense remains absent; a deleted customer can damage the audit trail. Decide who can edit records, lock down administrator access and reconcile InvoiceShelf against bank and accounting records on a routine schedule.

Good reasons to use it
  • You send estimates and invoices regularly
  • Monthly invoicing fees feel disproportionate
  • An existing server already runs Docker
  • You want customers and documents in one private system
Reasons to choose another route
  • You need integrated online card collection today
  • You require bank feeds, payroll or full bookkeeping
  • Nobody can maintain a public business service
  • Your accountant requires a different approved workflow

Sources checked September 17, 2026: official repository, stable release 2.4.2, production Docker installation, recurring-invoice scheduling, customer portal and payment limitation, PDF engines, backup documentation and AGPL-3.0 license.

The NoSub verdict

InvoiceShelf is a credible step up from editing the same document template every month. Its stable release covers the useful centre of a freelancer's workflow without document limits or per-seat fees, and the official Compose setup makes a cautious SQLite trial realistic on an existing server.

The recommendation is conditional because invoices are business records. Install stable 2.4.2 privately, create a disposable customer and complete the whole loop: estimate, invoice, PDF, email, recurring run, payment entry, expense, backup and clean restore. Only then choose a public subdomain and enter real data.

Recommended forFreelancers and small businesses that already maintain a server, send invoices regularly and can take responsibility for email, HTTPS, backups and local accounting rules.
Next articleLosslessCut: trim videos quickly without losing quality →