Ein produktionsreifer Rechnungsgenerator für Freelancer in 7 EU-Ländern. Drei Rechnungstypen, sieben Sprachen, clientseitige PDF-Erzeugung und ein Stripe-basiertes Freemium-Modell. Alleine gebaut und ausgeliefert.
Freelancer in ganz Europa haben die gleiche Frustration. Jedes Land hat andere MwSt.-Sätze, andere Steuer-ID-Formate, andere rechtliche Anforderungen. Eine slowakische Rechnung braucht IČO, DIČ und IČ DPH. Eine deutsche braucht Steuernummer und USt-IdNr. Eine französische braucht SIRET und RCS. Fehlt ein Feld, ist die Rechnung rechtlich ungültig.
Vorhandene Tools sind entweder US-fokussiert, teuer oder versuchen alles auf einmal. Die meisten Freelancer landen bei Word-Vorlagen und manuellen Berechnungen. Ich habe euinvoice gebaut, um das wirklich zu lösen. Ein kostenloses Tool, das die Komplexität übernimmt, damit der Nutzer es nicht muss.
Das Herzstück von euinvoice ist die MwSt.-Engine. Jedes der sieben unterstützten Länder (Slowakei, Deutschland, Österreich, Niederlande, Polen, Tschechien und Frankreich) hat eigene MwSt.-Sätze, Kleinunternehmer-Schwellenwerte, Rechtstexte, Steuer-ID-Felder und Datumsformate. Ein einziges Konfigurationsobjekt steuert die gesamte App: Formulare, PDF-Ausgabe, Validierung und SEO-Seiten lesen alle aus einer einzigen Quelle.
Die Engine behandelt drei Rechnungstypen automatisch. Standard-MwSt.-Rechnungen wenden den korrekten Ländersatz an. Reverse-Charge-Rechnungen werden automatisch erkannt, wenn Lieferant und Kunde in verschiedenen EU-Ländern sind und der Kunde eine gültige USt-IdNr. hat. Die Steuerschuld geht nach Artikel 196 auf den Käufer über. Steuerbefreite Rechnungen greifen, wenn der Lieferant unter der Kleinunternehmer-Schwelle seines Landes liegt. Alle Berechnungen verwenden Gleitkomma-sichere Arithmetik.
Jede Rechnungs-PDF wird vollständig im Browser mit @react-pdf/renderer erzeugt. Kein Server-Aufruf, keine Warteschlange, keine Infrastrukturkosten. Der Nutzer füllt das Formular aus, klickt auf Download, und die PDF rendert clientseitig in Millisekunden. Daten verlassen nie den Browser.
Die PDF passt sich dem Kontext an. Inländische Rechnungen verwenden die Landessprache für Bezeichnungen: FAKTÚRA für die Slowakei, RECHNUNG für Deutschland, FACTURE für Frankreich. Grenzüberschreitende Rechnungen wechseln automatisch zu Englisch. Rechtshinweise sind länderspezifisch: Die Slowakei zitiert § 69 ods. 12, Deutschland referenziert § 13b UStG. Die auf der PDF angezeigten Steuer-ID-Felder entsprechen den Anforderungen des Lieferantenlandes.
Internationalisierung bei euinvoice geht weit über String-Übersetzungen hinaus. Die Oberfläche läuft in sieben Sprachen: Englisch, Deutsch, Slowakisch, Polnisch, Tschechisch, Französisch und Niederländisch. Aber jede Sprache bedeutet auch andere Formularfelder, andere Validierungsregeln und andere Geschäftslogik.
Eine polnische Rechnung zeigt NIP als Steuerkennung. Eine niederländische zeigt KVK-nummer. Eine deutsche Rechnung unter der Kleinunternehmerregelung bekommt den entsprechenden Rechtstext, während eine tschechische Osvobození od DPH erhält. Datumsformate unterscheiden sich: TT.MM.JJJJ in Deutschland, TT/MM/JJJJ in Frankreich, TT-MM-JJJJ in den Niederlanden. Die Währung wechselt automatisch. EUR für die meisten Länder, CZK für Tschechien, PLN für Polen.
Die Datenbank läuft auf Supabase PostgreSQL mit Row-Level Security auf jeder Tabelle. Nutzer können nur auf ihre eigenen Profile, Rechnungen und Kunden zugreifen. Nicht durch Anwendungslogik, sondern durch Datenbankrichtlinien. Selbst bei API-Missbrauch bleiben die Daten isoliert.
Rechnungen speichern Lieferanten- und Kundendaten als JSONB-Snapshots, entkoppelt vom aktuellen Profil. Wenn ein Nutzer seine Adresse ändert, bleiben bestehende Rechnungen unverändert. Ein atomarer Zähler erfasst die globale Rechnungserstellung für Social Proof auf der Landing Page. Kontolöschung kaskadiert durch alle zugehörigen Daten. Datenexport generiert einen vollständigen JSON-Dump für DSGVO-Portabilität. Magic-Link-Authentifizierung über Resend bedeutet keine Passwörter zum Speichern.
euinvoice nutzt ein dreistufiges Freemium-Modell. Die kostenlose Stufe ermöglicht unbegrenzte Rechnungserstellung ohne Konto. Daten bleiben im Browser. Ein kostenloses Konto fügt Rechnungsverlauf, Lieferanten-Autofill und gespeicherte Rechnungen hinzu. Die Pro-Stufe für 12 €/Monat schaltet ein Kundenverzeichnis, individuelle Rechnungsnummern und Priority-Support frei.
Stripe übernimmt die Zahlungsinfrastruktur. Checkout-Sessions erstellen Abonnements, Webhooks verwalten den Lebenszyklus: Upgrade bei erfolgreicher Zahlung, Downgrade bei Kündigung. Das Kundenportal ermöglicht Abonnement-Verwaltung ohne die App. Webhook-Signaturprüfung stellt sicher, dass jedes Event echt ist.
Finanzsoftware hat keinen Spielraum für Bugs. Ein Rundungsfehler bei der MwSt.-Berechnung bedeutet eine falsche Rechnung. Eine verpasste Reverse-Charge-Erkennung bedeutet Steuerschuld im falschen Land. Deshalb ist jeder kritische Pfad getestet.
379 Vitest-Tests decken MwSt.-Berechnungen mit Gleitkomma-Grenzfällen ab, Reverse-Charge-Autoerkennung über alle Länderpaare, PDF-Ausgabe-Validierung für alle drei Rechnungstypen, länderspezifische Rechtstexte und Steuer-ID-Sichtbarkeit, Pro-Tier-Feature-Gating und Kundenverzeichnis-Prefill. Die Test-Suite läuft in unter 200 Millisekunden. Sentry trackt Fehler in Produktion. Umami liefert datenschutzfreundliche Analytik ohne Cookies.
euinvoice.app ist der Beweis, dass eine Person ein konformes Multi-Länder-SaaS-Produkt bauen, monetarisieren und pflegen kann. Jede MwSt.-Regel, jede PDF, jeder Test. Alleine gebaut und ausgeliefert.