All work

Case study 02

EUInvoice

Invoicing for EU freelancers that is correct by default: the right VAT, reverse charge and legal text for eight countries, free in the browser, and ready the moment e-invoicing becomes mandatory.

Role
Solo: product, design, engineering
Timeline
2026 to today
Platforms
Web, iOS (since July 2026)
Stack
Next.js, TypeScript, Supabase, Stripe
Status
Live
8EU countries, each with its own rules
3invoice types, picked automatically
7languages
€0for unlimited invoices, no account
The euinvoice.app home page: Invoice in a minute. Compliant by default.

01The problem

I built euinvoice for myself first. I had to write invoices, and the tools out there were either enterprise software or free tools that looked bad and didn’t feel good to use. So I made the one I wanted, and then opened it up for people in the same situation.

The problem behind it: every EU country invoices differently. Different VAT rates, different tax ID formats, different legal wording. A Slovak invoice needs IČO, DIČ and IČ DPH. A German one needs a Steuernummer and a USt-IdNr. A French one needs SIRET and RCS. Miss one field and the invoice isn’t legally valid. Cross-border work adds reverse charge on top.

Existing tools tend to be US-focused, expensive, or try to do everything, so many freelancers end up with Word templates and manual calculations. And now a second wave is coming: structured e-invoicing is becoming mandatory across the EU, country by country, on different dates.

02The product

A free invoice generator at the core, and an e-invoicing layer around it for when compliance gets serious. Everything that makes an invoice correct is free; Pro is for the work that grows with a business.

Feature overview: correct VAT and legal text, e-invoicing checker, automatic reverse charge, e-invoice viewer, scan-to-pay QR, VIES VAT-ID check, Factur-X e-invoices, sync and payment reminders

03Correct by default

The editor does the thinking. Pick the supplier and client countries and it shows the tax fields each country requires, applies the right VAT rate and adds the required legal wording, in the user’s language.

The invoice editor: reverse charge selected, with Slovak tax fields for the supplier and German ones for the client

Three invoice types, chosen for you

Standard VAT applies the country’s rate. Reverse charge is detected automatically for cross-border B2B with a valid VAT ID and cites Article 196. VAT-exempt invoices cover small businesses, like the German Kleinunternehmer rule.

Getting paid, built in

Every EUR invoice carries an EPC scan-to-pay QR code that the client’s banking app reads, and client VAT IDs can be checked against the EU’s VIES register in one click.

04Ready for e-invoicing

Mandatory e-invoicing is arriving on different dates per country. Instead of scaring people into a subscription, euinvoice answers the real question first: does it apply to me yet? The checker uses dates from official sources, verified monthly.

The e-invoicing checker: pick your country and see exactly where you stand

Factur-X when you need it

Pro exports EN 16931 Factur-X: a PDF with embedded XML that satisfies the German and French mandates. When e-invoicing reaches a user, nothing about their workflow changes.

A free viewer for incoming e-invoices

Received an XRechnung, Factur-X or UBL file you can’t read? The viewer turns it into a readable invoice, processed locally in the browser.

05On iOS

In July 2026 euinvoice came to the iPhone. Invoices are stored on the device, the full free tier works without an account, and Pro adds sync across devices, payment reminders, an accountant CSV export and custom branding.

Dashboard: outstanding and overdue invoices and the VAT threshold at a glance Reverse charge, detected automatically Payment reminders in three escalating levels The e-invoicing checker on mobile

06Business model

Unlimited invoices are free, forever, with no account. A free account adds a saved profile and invoice history. Pro, at €12 a month or €99 a year, is for when compliance gets serious: e-invoice export, sync, a client directory and payment reminders. Max, at €49 a month, is aimed at agencies running several companies.

Pricing: Free, Free Account, Pro at €12 per month or €99 per year, Max at €49 per month

Pro only matters once compliance does: until a user’s country makes e-invoicing compulsory, the free tool is enough, and that is fine.

07Key decisions

Free where it matters

A correct invoice should never sit behind a paywall or a sign-up. Everything that makes an invoice valid is free, with no account.

Honest about e-invoicing

Official dates, checked monthly, and a clear answer per country and business type. No scare tactics, even though fear would sell more Pro.

Security in the database, not just the app

Row-level security on every table in Supabase, so users can only ever reach their own data, enforced by the database itself rather than by application code.

Separate from the studio

EUInvoice has its own brand and its own database, apart from the Sapplify apps. Business data for paying customers gets its own space.

Explored further, in the open

Invoicing also lives in Meridian, my open-source modular operations app, as one module next to contacts and projects, isolated from them by database roles and row-level security. A different goal: there, the architecture is the product.

08Results

8countries with country-specific rules
2platforms: web and iOS
~100invoices generated, without paid marketing

Small on purpose. I don’t actively advertise euinvoice; it grows by people finding it when they need it.

09What I learned

Solving your own problem is the best starting point: I knew exactly what a good invoice tool had to feel like, because I was the user. Turning it into something for other people meant learning the rules of eight countries properly, not just my own.

The market has changed since. With AI, anyone can build an invoice generator, and the space is crowded and scattered. So I don’t compete on volume. I keep euinvoice correct, honest and free where it matters, and if it helps someone in the same spot I was in, that’s enough.

Next project

How’s the World Feeling?