Skip to content

Case study: SlimFact

An invoicing service for freelancers and small businesses — recurring invoices, a client portal, and e-invoicing for the Netherlands and the EU.

The problem

Invoicing is the part of running a business nobody wants to think about — and the part that quietly goes wrong: an invoice edited after it was sent, a payment that cannot be traced back to a booking, a Dutch e-invoicing requirement discovered too late.

What we built

SlimFact, an invoicing service in daily use by freelancers and small companies. See it at slimfact.app or read the product page.

  • Immutable invoices. Once an invoice exists it never changes, so there is no gap between what the customer received and what the books say.
  • Bills, receipts and invoices for work that still changes: a bill becomes a receipt when it is paid, and a receipt becomes an invoice on request.
  • A client portal. Customers see their invoices, bills and receipts in one place instead of chasing paperwork.
  • Recurring billing on a schedule — weekly to quarterly — so subscriptions are invoiced without anyone remembering to invoice them.
  • Several companies from one account, each with its own branding, bank details and invoice numbering.
  • E-invoicing that fits the Netherlands and the EU: UBL and Peppol XML, pixel-perfect PDFs rendered with Typst, EPC QR codes for bank transfers, and CSV exports when someone insists on a spreadsheet.
  • A headless API. SlimFact is API-first, so invoicing can be automated or built into another application.
  • Single sign-on through any OpenID Connect provider, and a UI in English, Dutch or German.

How it is built

A Vue and Quasar front end on a Fastify API, backed by PostgreSQL, with PDFs generated on the fly. It runs in the same self-hosted stack as the rest of our software, and the same stack we build client applications on.

The result

  • An invoice cannot be edited after it is sent, so the version the customer holds and the version in the books cannot drift apart.
  • Subscriptions are invoiced on schedule without anyone remembering to invoice them.
  • A Dutch or EU e-invoicing requirement is met by the export that is already there, not by a scramble before a deadline.
  • One account runs several companies, each with its own numbering, banking details and branding.

What it costs

€15 per month. Get in touch and we will help you set it up.