As a freelancer working across Europe, invoicing was a mess: different VAT rules per country, different e-invoicing formats, and no single tool that handled more than one or two markets well.
So I built Quorvinfact — a Windows desktop app that generates invoices, quotes, and credit notes for 32 European countries, with proper e-invoicing XML for the four that require it: Italy (FatturaPA), Belgium (Peppol BIS), Poland (KSeF), and Romania (RO e-Factura).
What it does
- Company profile + client address book, saved locally
- Invoices, quotes, and credit notes with automatic VAT calculation
- E-invoicing XML generation for IT/BE/PL/RO, alongside a standard PDF for every other supported country
- Document register with search, CSV export, and a monthly VAT summary
- Payment tracker for unpaid invoices (overdue / due-soon status)
- Interface in Italian, English, and Spanish
The technically annoying part
Each country's e-invoicing format is its own small nightmare. FatturaPA wants a specific XML schema with SDI transmission codes. Peppol BIS has its own UBL structure. KSeF requires a different set of mandatory fields entirely. There's no shared standard — I ended up building a separate module per country (fatturapa.py, peppol.py, ksef.py, ro_efactura.py) instead of trying to force one generic invoice generator to cover all four.
Font handling was its own problem: DejaVu Sans had to be bundled directly for the extended character sets some countries' fields require (diacritics, etc.), since relying on system fonts broke silently on some Windows installs after PyInstaller packaging.
Important caveat, stated upfront
The app generates the correct file, but it does not auto-submit it to tax authorities — uploading to the government portal (or a Peppol Access Point for Belgium) is still a manual step. It's a document generator, not a filing service, and I say that explicitly in the app's disclaimer too.
Where it stands now
Windows-only, no subscriptions. Free 7-day trial, full features, no credit card:
If anyone here invoices across multiple EU countries, curious what you currently use and what's missing from it.
Top comments (0)