Lokales E-Rechnungs-Gateway: XRechnung/ZUGFeRD empfangen, bytegenau archivieren, validieren, als PDF an Altsysteme weitergeben - und der Rueckweg zur strukturierten E-Rechnung.
  • C# 72.4%
  • HTML 24.6%
  • CSS 1.4%
  • PowerShell 1%
  • JavaScript 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
ki b0d0767da4 1.0.0-rc.1: Freigabekandidat - alle offenen Punkte abgearbeitet, live geprueft
Vollstaendiger Live-Durchlauf auf einer FRISCHEN Installation: 54 Pruefpunkte,
alle bestanden. 311 automatische Tests, warnungsfreier Bau.

JEDES FORMAT, DAS EIN RECHNUNGSPROGRAMM AUSGIBT
- Neu: RTF, Text-/Druckdateien und Tabellen (CSV/TSV, auch Tabulator/Pipe)
  zusaetzlich zu PDF, Word, Bild/Scan und fertigen E-Rechnungen.
- Tabellen werden in beschrifteten Text umgeschrieben, den dieselbe
  Felderkennung liest wie eine gedruckte Rechnung - EINE Erkennungsstelle.
- Live: dieselbe Rechnung als PDF, CSV, Druckdatei und RTF ergibt jeweils eine
  XRechnung mit 0 Fehlern und 0 Warnungen im amtlichen KoSIT-Pruefer.

AMTLICHE PRUEFUNG OHNE HANDARBEIT
- Ein Knopf richtet Pruefpaket UND Java-Laufzeit ein; Bezug beim Herausgeber
  mit Pruefsummenabgleich, Schutz gegen Pfadausbruch beim Auspacken.
  Ohne Oberflaeche: --pruefung-einrichten.
- Live auf einer Installation OHNE jedes Java nachgewiesen.
- Damit geht weiterhin kein fremder Code mit der Auslieferung mit: Der Betrieb
  laedt die Werkzeuge selbst und wird deren Lizenznehmer.

KUNDE UND FIRMENDATEN
- Pruefansicht kennt den Kunden (Name, Anschrift, E-Mail, USt-ID) samt Hinweis,
  dass ohne elektronische Adresse jede XRechnung abgewiesen wird.
  Haken "Kunden merken" legt ihn im Verzeichnis an.
- "Meine Firma" sagt, welche Angabe fuer eine XRechnung noch fehlt.
- Aussteller und Bankverbindung einer eigenen Rechnung kommen aus den
  Firmendaten, wenn sie nicht auf dem Beleg stehen.

AUFBEWAHRUNG, SPEICHER, BETRIEB
- Loeschen nach Fristablauf: eigene Seite, nie automatisch, nur mit Begruendung
  und Bestaetigung; Aufbewahrungsvermerk blockiert; protokolliert wird VOR dem
  Loeschen. WORM-Schutz wird dafuer gezielt aufgehoben.
- Warnung bei vollem Speicher (ab 90 % belegt oder unter 1 GB frei).
- Umzug des Bestands auf einen anderen Speicher, mit Fingerabdruckpruefung;
  eine bereits veraenderte Datei wird gemeldet statt mitgenommen.
- Schnittstellen-Seite mit Waechter, der die Beschreibung gegen die
  tatsaechlichen Endpunkte prueft; dazu OpenAPI-Datei.
- Installationsprogramm (MSI) mit Dienst, Firewallregel und Verknuepfungen.
  Die EXE laeuft weiterhin per Doppelklick ohne Installation.

GEFUNDENE UND BEHOBENE FEHLER
- HOCH, Geldfehler: Betraege ohne Tausenderpunkt wurden vorne abgeschnitten -
  aus "1500,00" wurde 500,00. Betraf Gesamt-, Netto- und Steuerbetrag.
- HOCH: Fuer Text-, Tabellen- und RTF-Dateien wurde die Felderkennung gar nicht
  angestossen - die Datei lag im Archiv, die Rechnung blieb leer.
- MITTEL: CSV-Export EINER Rechnung (2 Zeilen) galt nicht als Tabelle.
- MITTEL: Steuersatz und Steuerbetrag standen getrennt; Positionen bekamen 0 %.
- MITTEL: Kunde stand in Spalten statt als Anschriftenblock.
- MITTEL: Ohne Bankverbindung fehlten die Zahlungsangaben (BR-DE-1).
- NIEDRIG: Die Schnittstellen-Uebersicht war unvollstaendig - ihr eigener
  Waechter hat es beim ersten Lauf gemeldet.

BEWUSST NICHT UMGESETZT (in docs/IMPLEMENTATION-STATUS.md begruendet)
Peppol (braucht einen zertifizierten Zugangspunkt), PostgreSQL und lokale KI
(beide braeuchten Fremdcode im Produkt), weitere Speicherarten wie S3/SFTP
(ohne echtes Zielsystem nicht live pruefbar - ungepruefter Code gehoert nicht
in eine Freigabefassung).
2026-08-16 03:49:06 +02:00
deploy v0.5.0: Zweitarchiv, geplante Wartung, Steuerberater-Paket, Dienst-Installer, verstaendlichere Oberflaeche 2026-08-16 00:15:19 +02:00
docs 1.0.0-rc.1: Freigabekandidat - alle offenen Punkte abgearbeitet, live geprueft 2026-08-16 03:49:06 +02:00
installer 1.0.0-rc.1: Freigabekandidat - alle offenen Punkte abgearbeitet, live geprueft 2026-08-16 03:49:06 +02:00
src 1.0.0-rc.1: Freigabekandidat - alle offenen Punkte abgearbeitet, live geprueft 2026-08-16 03:49:06 +02:00
tests 1.0.0-rc.1: Freigabekandidat - alle offenen Punkte abgearbeitet, live geprueft 2026-08-16 03:49:06 +02:00
.gitignore 1.0.0-rc.1: Freigabekandidat - alle offenen Punkte abgearbeitet, live geprueft 2026-08-16 03:49:06 +02:00
Directory.Build.props 1.0.0-rc.1: Freigabekandidat - alle offenen Punkte abgearbeitet, live geprueft 2026-08-16 03:49:06 +02:00
Directory.Packages.props InvoiceBridge v0.1.0 - lokales E-Rechnungs-Gateway (Phase 1 + Rueckweg) 2026-08-15 17:51:01 +02:00
dotnet-tools.json InvoiceBridge v0.1.0 - lokales E-Rechnungs-Gateway (Phase 1 + Rueckweg) 2026-08-15 17:51:01 +02:00
InvoiceBridge.slnx v0.2.0: Erkennung, PDF/A-3B, Mehrformat-Export, eigener Fremdcode-Verzicht 2026-08-15 22:12:44 +02:00
Invoices.razor InvoiceBridge v0.1.0 - lokales E-Rechnungs-Gateway (Phase 1 + Rueckweg) 2026-08-15 17:51:01 +02:00
LICENSE v0.2.0: Erkennung, PDF/A-3B, Mehrformat-Export, eigener Fremdcode-Verzicht 2026-08-15 22:12:44 +02:00
README.md InvoiceBridge v0.1.0 - lokales E-Rechnungs-Gateway (Phase 1 + Rueckweg) 2026-08-15 17:51:01 +02:00
THIRD-PARTY-NOTICES.md 1.0.0-rc.1: Freigabekandidat - alle offenen Punkte abgearbeitet, live geprueft 2026-08-16 03:49:06 +02:00

InvoiceBridge

Ein vollständig lokal betreibbares E-Rechnungs-Gateway: empfängt moderne elektronische Rechnungen (XRechnung, ZUGFeRD/Factur-X), archiviert die Originale bytegenau und unveränderlich, validiert und visualisiert sie und stellt sie älteren Finanz-, ERP-, DMS- und Fachverfahren als PDF bereit. Der Rückweg funktioniert ebenso: Rechnungen aus dem Altsystem werden erfasst, geprüft, freigegeben und als XRechnung oder ZUGFeRD-Hybrid-PDF erzeugt.

Grundprinzipien

  • Original bleibt Original. Jede eingegangene Datei bleibt exakt bytegleich erhalten sie wird niemals verändert, überschrieben, normalisiert oder ersetzt. Konvertierungen sind immer neue, abgeleitete Dokumente.
  • Erst verifiziert, dann archiviert. Eine Rechnung gilt erst als archiviert, wenn das Original auf dem Primärspeicher gespeichert, zurückgelesen und per SHA-256 verifiziert wurde. Bis dahin liegt sie sicher im lokalen, neustartfesten Spool.
  • Nichts Ungültiges versenden. Erzeugte Ausgangsrechnungen werden vor Export und Versand zwingend validiert; aus unstrukturierten Quellen erfasste Daten brauchen immer eine menschliche Freigabe.
  • Nachvollziehbar. Jeder Schritt landet im Audit-Trail als SHA-256-Hash-Kette, die nachträgliche Veränderungen erkennbar macht.

Schnellstart

Voraussetzungen: .NET 10 SDK.

dotnet run --project src/InvoiceBridge.Web

Beim ersten Aufruf im Browser führt ein Einrichtungsassistent durch: Administrator anlegen → lokale Verzeichnisse prüfen → Originalarchiv (lokal, NAS oder UNC-Pfad) konfigurieren und testen → optional Exportordner für das Altsystem.

Danach: XRechnung hochladen (oder in einen Watchfolder legen) InvoiceBridge archiviert, erkennt, parst, validiert, erzeugt HTML-/PDF-Darstellung und legt das PDF automatisch in den Exportordner des Altsystems.

Projektstruktur

src/
    InvoiceBridge.Domain          Rechnungsmodell, Statusmaschine, Audit-Kette, Geldrechnung
    InvoiceBridge.Application    Schnittstellen, sichere Pfade/XML, Optionen
    InvoiceBridge.Formats        Formaterkennung, UBL-/CII-Parser und -Writer, PDF-Einbettungsleser
    InvoiceBridge.Validation     Business-Plausibilitätsprüfung, KoSIT-Validator-Anbindung
    InvoiceBridge.Rendering      HTML-/PDF-Darstellung, ZUGFeRD-Hybriderzeugung
    InvoiceBridge.Storage        Dateisystem-Storage-Provider (lokal/UNC/NAS)
    InvoiceBridge.Persistence    EF Core, SQLite, Audit-Trail, Migrationen
    InvoiceBridge.Transports     Watchfolder, Legacy-Export
    InvoiceBridge.Infrastructure Verarbeitungspipeline, Jobsystem, Hintergrunddienste
    InvoiceBridge.Web            Blazor-Weboberfläche, REST-API, Identity, Setup
    InvoiceBridge.Worker         optionaler eigenständiger Verarbeitungsdienst
tests/                           Unit- und Integrationstests (inkl. kritischer Invarianten)
docs/                            Architektur-, Betriebs- und Sicherheitsdokumentation

Wichtige Hinweise

  • Die SQLite-Datenbank liegt lokal auf dem Server (Standard: %ProgramData%\InvoiceBridge bzw. /var/lib/invoicebridge) niemals auf SMB/NFS. Dokumente dürfen selbstverständlich auf NAS/Netzwerkpfaden liegen.
  • Ohne installiertes KoSIT-Validator-Bundle führt InvoiceBridge nur eigene Plausibilitätsprüfungen durch und behauptet keine offizielle XRechnung-Konformität (Einrichtung: siehe docs/FORMATS.md).
  • Erzeugte ZUGFeRD-Hybrid-PDFs werden ohne technische PDF/A-3-Prüfung nicht als „geprüftes PDF/A“ bezeichnet.

Details: docs/ARCHITECTURE.md · docs/STORAGE.md · docs/SECURITY.md · docs/FORMATS.md · docs/BACKUP-RESTORE.md · docs/DEPLOYMENT.md · docs/OPERATIONS.md · docs/IMPLEMENTATION-STATUS.md