DEV Community

Mack
Mack

Posted on

I Built a Free Invoice Generator for EU Freelancers (Because Every Tool Ignores VAT Reverse Charge)

The Rant

I'm a freelancer based in France. I invoice clients across the EU. This should be simple. It is not.

Every invoicing tool I've tried — and I've tried a lot — treats Europe as an afterthought. They'll handle USD beautifully, give you a clean American-style invoice, and then completely fall apart when you need:

  • VAT reverse charge ("Autoliquidation de la TVA" — required for B2B services across EU borders)
  • Intra-community VAT numbers validated and displayed correctly
  • IBAN/BIC payment details (not "routing number")
  • Multi-currency with proper EUR formatting (1.234,56 €, not €1,234.56)
  • Legally compliant French invoices with all the mandatory mentions

I tried Stripe Invoicing. Wave. Invoice Ninja. Zoho. They all assume you're American, or at best, British. The EU VAT system might as well not exist.

So I built my own.

Meet InvoiceFlow

InvoiceFlow is a free, open-source invoice generator built specifically for EU freelancers. It handles the stuff that other tools ignore.

Live App →
GitHub →

The Features That Actually Matter

VAT Reverse Charge (Done Right)

If you invoice a business in another EU country, you don't charge VAT. Instead, you apply the reverse charge mechanism and include the magic words on your invoice. Different countries have different requirements for how this is displayed.

InvoiceFlow handles this automatically. Select your client's country, mark them as a business, and the correct reverse charge text appears. In French. In English. In both if you need it.

This alone took me weeks to get right. The EU VAT directive is... something.

Intra-Community VAT Validation

You need your client's VAT number on the invoice. But you also need to verify it's valid — HMRC and the French tax authority both require this. InvoiceFlow validates EU VAT numbers against the VIES database so you're not putting garbage on your invoices.

IBAN & Bank Details

American tools give you "Bank Name" and "Routing Number" fields. In Europe, we use IBAN and BIC/SWIFT. InvoiceFlow has proper IBAN fields with formatting and basic validation. Your payment details look correct because they are correct.

Multi-Currency That Works

I invoice in EUR, but some clients want GBP or CHF. InvoiceFlow supports multiple currencies with proper locale formatting:

  • EUR: 1 234,56 €
  • GBP: £1,234.56
  • CHF: CHF 1'234.56

The little things matter. A French accountant seeing $1,234.56 on an invoice will send it back.

French & English

The entire interface works in both French and English. More importantly, the invoices themselves can be generated in either language (or both). This matters when your client is German but your accountant is French.

PDF Export

One-click PDF generation with proper formatting, your logo, and all the legally required mentions. The PDFs look professional — not like someone printed a webpage.

Why This Matters (The EU Freelancer Tax Nightmare)

If you've never freelanced in the EU, let me paint the picture:

  1. You do work for a client in Germany
  2. You're based in France
  3. You need to issue an invoice with: your French VAT number, their German VAT number, the reverse charge mention in the correct legal language, the correct intra-community service code, no VAT charged (but displayed as 0% with explanation), your IBAN, the invoice in a format your French accountant accepts
  4. You then need to declare this on your French CA3 VAT return, separately from domestic invoices
  5. You might also need to file an EC Sales List (DES in France)

Most invoicing tools help with exactly zero of these steps. They give you a blank invoice template and wish you luck.

InvoiceFlow won't file your taxes for you, but it will generate invoices that make your accountant happy and keep you compliant.

The Tech Stack

  • Ruby on Rails 7 — Server-rendered, fast, simple
  • PostgreSQL — Invoice and client storage
  • Prawn — PDF generation (pure Ruby, no headless Chrome needed)
  • Tailwind CSS — Clean UI
  • Fly.io — Deployed in Paris (CDG region, naturally)

I went with server-side rendering because invoicing doesn't need a SPA. You fill out a form, you get a PDF. Rails is perfect for this.

Prawn for PDF generation was a deliberate choice. Most Rails apps use wkhtmltopdf or headless Chrome for PDFs, but those are heavy dependencies. Prawn generates PDFs in pure Ruby — fast, lightweight, and pixel-perfect.

Who This Is For

InvoiceFlow is built for:

  • EU-based freelancers who invoice across borders
  • Solo developers tired of paying Freshbooks €15/month for features they don't need
  • French freelancers (micro-entrepreneur or not) who need legally compliant invoices
  • Anyone who's ever tried to explain VAT reverse charge to an American invoicing tool

It's NOT trying to be a full accounting suite. No expense tracking, no bank reconciliation, no payroll. Just invoices, done right.

What's Next

  • Client management — Save client details for recurring invoices
  • Invoice numbering sequences — Auto-increment with customizable formats (2024-001, etc.)
  • Recurring invoices — Set it and forget it for retainer clients
  • More EU languages — German, Spanish, Italian, Dutch
  • E-invoicing (Factur-X) — France is mandating electronic invoicing starting 2026

That last one is a big deal. France is rolling out mandatory e-invoicing for all businesses, and most tools aren't ready. I plan to have Factur-X support before the deadline.

Try It

If you're an EU freelancer struggling with invoicing tools that don't understand your reality:

It's free, open source, and built by someone who actually has to deal with EU VAT.


Fellow EU freelancers — what's your biggest invoicing pain point? I'm actively building features based on real needs. Drop a comment or open an issue.

Top comments (0)