Fakturo

Funktionsübersicht

Fakturo liest XRechnung (CII/UBL), ZUGFeRD/Factur-X und Mails mit Rechnungen, prüft sie, zeigt sie an und speichert sie als PDF. Mit --watch überwacht es einen Ordner, archiviert nach GoBD-Grundsätzen und meldet Auffälligkeiten per Mail.

OfflineKein Internet nötig. Das Netz wird nur für optionale Mail-Meldungen an Ihren SMTP-Server genutzt. Beim Anzeigen läuft kein JavaScript.
VoraussetzungenWindows mit .NET 8 Desktop Runtime und WebView2-Runtime (unter Windows 11 meist vorhanden).
EingangsformateXML (CII, UBL, Invoice, CreditNote), PDF mit eingebettetem XML, Mails .eml und .msg bis Schachtelungstiefe 8.
MengenOrdner und viele Dateien auf einmal: bis 5000 Dateien, 200 MB je Datei.

Oberfläche

  • Öffnen / Ordner / Drag & Drop: Dateien oder Ordner laden, auch per Ziehen auf das Fenster. Mehrere Rechnungen erscheinen links in einer Liste.
  • Liste: Volltextfilter (Nummer, Aussteller, Betrag, IBAN, Positionen, Notiz) und Statusfilter (Prüffehler, Warnungen, ohne Beanstandung, Dubletten und IBAN-Wechsel, nicht lesbar, je Bearbeitungsstatus). Rechtsklick: Status setzen, Notiz (F2), im Explorer zeigen, entfernen (Entf), Liste leeren.
  • Rechnungsansicht: Kopfdaten, Parteien, Positionen, Steuer, Summen, Zahlungsangaben und Prüfergebnis. Ein Klick auf einen Wert kopiert ihn.
  • Rohansicht (XML) mit Suche und Anhänge: eingebettete Dateien öffnen, einzeln oder alle speichern.
  • PDF speichern, Drucken, Zoom und Dunkelmodus im Menü Ansicht. Der Dialog „Über Fakturo“ steht im selben Menü.

Prüfungen und Verlauf

Jede Rechnung wird offline auf Plausibilität geprüft. Stufen: Fehler, Warnung, Hinweis, in Ordnung. Das ist keine Validierung gegen die offiziellen KoSIT-/Schematron-Regeln.

  • Pflichtangaben (Nummer, Datum, Parteien, Positionen) mit Verweis auf die BT-Nummern.
  • Summen von Positionen, Netto, Steuer, Brutto und Zahlbetrag (Toleranz 0,01) sowie Steuer je Kategorie und Satz.
  • IBAN-Prüfsumme (Modulo 97), Format der Leitweg-ID, Hinweis bei überschrittener Fälligkeit.
  • Dubletten: identische Datei, gleiche Rechnungsnummer desselben Ausstellers, gleicher Betrag am gleichen Tag unter anderer Nummer.
  • IBAN-Wechsel: Die Zahlungs-IBAN weicht von früheren Rechnungen desselben Ausstellers ab. Das ist die Warnung vor der Betrugsmasche „geänderte Bankverbindung“.

Für diese Prüfungen merkt sich Fakturo je Rechnung nur Kennzahlen (Nummer, Datum, Betrag, IBAN, Prüfsumme der Datei, Aussteller-Kennung), keine Inhalte. Der Verlauf gehört zum jeweiligen Mandanten und lässt sich über Ansicht → Verlauf ein- und ausschalten oder löschen.

Export und PDF

FunktionErgebnis
PDF speichernLesbare Ansicht mit Seitenrändern, bei IBAN und Betrag mit GiroCode-QR (EPC) für die Überweisung
XMLRechnungs-XML als Datei
Positionen (CSV)Eine Zeile je Rechnungsposition
Übersicht (CSV)Eine Zeile je Rechnung der angezeigten Liste, mit Prüfung, Status und Notiz. Excel-tauglich (Semikolon, Dezimalkomma, UTF-8 mit BOM, Schutz vor Formel-Einschleusung)
Alle als PDFJede Rechnung der Liste in einen Zielordner
Prüfbericht (PDF)Prüfergebnis aller Rechnungen mit SHA-256 des XML, Status und Notiz
PDF-LayoutLogo, Kopfzeile, Fußzeile (auf jeder Seite) und Eingangsstempel mit Datum auf Seite 1

Das Layout gilt je Mandant und auch im Stapel- und Watch-Modus. Logo: PNG, JPG, GIF, SVG oder WebP bis 700 KB. Platzhalter: {Datum} {Zeit} {Nummer} {Aussteller} {Empfänger} {Betrag}. Das Stempeldatum ist der Tag, an dem die Rechnung zuerst gesehen wurde.

Status und Notiz

Jede Rechnung hat einen Bearbeitungsstand (Offen, Geprüft, Freigegeben, Bezahlt, Abgelehnt) und eine Notiz.

  • Der Stand hängt an der XML-Prüfsumme. Dieselbe Rechnung hat in jeder Datei denselben Stand.
  • Gespeichert als anhängendes Protokoll verlauf.status.tsv mit Zeit, Benutzer und Quelle.
  • Sichtbar in Liste, Filter, Suche, CSV und Prüfbericht.

Mandantenprofile Neu

Je Firma ein eigener Satz an Einstellungen, umschaltbar über den Knopf „Mandant: …“ in der Werkzeugleiste.

Eigener VerlaufDubletten, IBAN-Wechsel und Status bleiben je Mandant getrennt.
Eigenes PDF-LayoutLogo, Kopf-/Fußzeile und Stempel je Firma.
Eigene OrdnerArchiv, Mail-Datei sowie Eingang und Ausgang der Überwachung.
  • Der Mandant „Standard“ nutzt weiter den Datenordner selbst, alle anderen liegen unter %LOCALAPPDATA%\Fakturo\profiles\<Name>.
  • Im Menü des Knopfs: Mandant wählen, neu anlegen, bearbeiten, löschen. Löschen entfernt Verlauf, Status und Layout des Mandanten, das Archiv bleibt unangetastet.
  • Auf der Kommandozeile wählt --profile "Name" den Mandanten. Verlauf, Layout, Archiv, Mail und die Ordner der Überwachung kommen dann aus dem Profil.

Kommandozeile

Fakturo.exe --convert <Eingang> [<Ausgang>] [Optionen]
Fakturo.exe --watch <Eingangsordner> [<Ausgang>] [Optionen]
Fakturo.exe --watch --profile "Müller"
Fakturo.exe --verify <Archivordner>
Fakturo.exe --mailtest <Mail-Datei>
Fakturo.exe --watch ... --install-task | --remove-task

Ohne Parameter oder mit einer Datei startet die Oberfläche. --help zeigt die Hilfe. Pfade mit Leerzeichen in Anführungszeichen setzen.

ParameterGilt fürWirkung
--convertStapelDatei oder Ordner ohne Oberfläche in PDF umwandeln. Standard-Ausgang: Ordner der Quelle
--watchWatchEingangsordner dauerhaft überwachen. Standard-Ausgang: <Eingang>\PDF
--profilebeideMandant wählen. Bei --watch dürfen Eingang und Ausgang aus dem Profil kommen
--recurseStapelUnterordner einbeziehen, Struktur wird gespiegelt
--overwriteStapelVorhandene PDFs überschreiben (Standard: überspringen)
--attachmentsbeideEingebettete Anhänge in <Name>_Anlagen speichern
--reportbeideZusätzlich <Name>_Pruefbericht.pdf
--history <Datei>beideVerlaufsdatei für Dubletten und IBAN-Wechsel
--branding <Datei>beideLayoutdatei (Logo, Kopf-/Fußzeile, Stempel)
--archive <Ordner>beideJede erfolgreich umgewandelte Rechnung im GoBD-Archiv ablegen
--mail <Datei>beideSMTP-Meldungen bei Auffälligkeiten
--strictbeideRechnungen mit Prüffehlern gelten als fehlgeschlagen
--log <Datei>beideProtokolldatei, Standard <Ausgang>\Fakturo.log
--install-task / --remove-taskWatchAutostart-Aufgabe in der Aufgabenplanung anlegen oder entfernen
--verify <Ordner>alleinArchiv prüfen, Exit-Code 1 bei Auffälligkeiten
--mailtest <Datei>alleinTestmail senden

Exit-Codes: 0 = alles in Ordnung, 1 = mindestens eine Datei fehlgeschlagen (bei --verify: Auffälligkeiten), 2 = Aufruf- oder Startfehler. Fehler stehen auf der Konsole und im Log, nicht in Meldungsfenstern.

Watch-Ordner

Fakturo.exe --watch "D:\Rechnungen\Eingang" "D:\Rechnungen\PDF" --archive "D:\Archiv" --mail "C:\Fakturo\mail.ini" --report
Eingang prüfen (5 s)
→
Datei fertig kopiert?
→
Prüfen · PDF · Archiv
→
Quelle verschieben
  • Geprüft werden .xml, .pdf, .eml und .msg im Eingangsordner (ohne Unterordner). Namen mit ~ oder . am Anfang werden ignoriert.
  • Eine Datei wird erst verarbeitet, wenn sie 2 Sekunden unverändert und nicht gesperrt ist. Die ältesten kommen zuerst.
  • Eine Mail mit mehreren Rechnungen ergibt je Rechnung ein PDF. Das PDF entsteht erst als .tmp und wird dann umbenannt, vorhandene Namen werden nie überschrieben.
ErgebnisQuelldatei landet inZusätzlich
ErfolgreichEingang\VerarbeitetPDF im Ausgang, Zeile im Rechnungsjournal.csv, Verlauf, ggf. Archiv
FehlerEingang\Fehler<Name>.fehler.txt mit dem Protokoll. Mit --strict zählen auch Prüffehler
DubletteEingang\DublettenKein PDF

Dateien im Ausgang: Fakturo.log, Rechnungsjournal.csv (für die Buchhaltung, Excel-tauglich), Fakturo-Verlauf.tsv und Fakturo-Verlauf.status.tsv.

Steuerung: Fakturo.lock verhindert eine zweite Überwachung desselben Ordners. Zum Beenden eine Datei Fakturo.stop in den Eingangsordner legen oder im Tray „Überwachung beenden“ wählen. Ausstehende Meldungen werden noch verschickt.

Autostart-Aufgabe Neu

Die Überwachung läuft als Aufgabe der Windows-Aufgabenplanung und nicht als Dienst, weil WebView2 eine angemeldete Benutzersitzung braucht.

  • Start: 30 Sekunden nach der Anmeldung des Benutzers, mit normalen Benutzerrechten, ohne Zeitlimit.
  • Stabil: Bei einem Absturz startet die Aufgabe nach einer Minute neu. Eine zweite Instanz wird verhindert.
  • Name: Fakturo\Überwachung <Mandant>, je Mandant eine Aufgabe.

Drei Wege zur Einrichtung

WegAufruf
OberflächeMandant bearbeiten → „Überwachung als Autostart-Aufgabe einrichten“ (speichert den Mandanten und startet die Aufgabe sofort)
KommandozeileFakturo.exe --watch "D:\Eingang" --profile "Müller" --install-task
PowerShell.\Scripts\Install-FakturoTask.ps1 -Eingang D:\Eingang -Ausgang D:\PDF -Mandant Müller (mit -Entfernen wieder löschen)

Tray-Symbol und Explorer Neu

Tray im FensterAnsicht → Tray-Symbol: Schließen minimiert in den Infobereich, Fakturo läuft weiter.
Tray bei WatchSymbol mit Zähler (verarbeitet, Dubletten, Fehler), Balloon-Meldungen und Menü: Eingangsordner, Ausgang, Protokoll, Fakturo öffnen, Überwachung beenden.
Eine InstanzEin Doppelklick auf eine Datei öffnet sie im bereits laufenden Fenster. Es läuft je Benutzer nur ein Fakturo.

Doppelklick im Explorer

  • Ansicht → Als Standardprogramm anbieten registriert Fakturo für .xml, .eml, .msg und .pdf und öffnet die Windows-Einstellung „Standard-Apps“.
  • Kontextmenü: „Mit Fakturo öffnen“ über Ansicht → Shell-Integration (unter Windows 11 bei „Weitere Optionen“).
Windows 10 und 11 erlauben es Programmen nicht, sich selbst zum Standard zu machen. Die endgültige Auswahl treffen Sie einmal in den Standard-Apps. Für .pdf empfehle ich das nicht, weil sonst jedes PDF in Fakturo statt in Ihrem PDF-Reader aufgeht.

GoBD-Archiv

Ablage je Rechnung unter <Archiv>\<Jahr>\<Aussteller>\<Nummer>_<Kennung>\

DateiInhalt
Rechnung.xmlDas strukturierte Original
Original_<Name>Die ursprüngliche Datei (XML, ZUGFeRD-PDF oder Mail)
Ansicht.pdfLesbare PDF-Ansicht
manifest.txtRechnungsdaten und SHA-256 jeder Datei
  • Die Dateien werden schreibgeschützt. Archivprotokoll.tsv im Archivstamm verkettet alle Ablagen per Hash, damit fallen auch geänderte Manifeste, fehlende oder zusätzliche Dateien und entfernte Protokolleinträge auf.
  • Bereits archivierte Rechnungen bleiben unverändert.
  • GUI: Export → In GoBD-Archiv ablegen, Export → Archiv prüfen. Kommandozeile: --archive und --verify. Den Archivordner legt jeder Mandant selbst fest.
Das Archiv schützt nicht gegen Administratoren. Sichern Sie es zusätzlich auf einem Medium mit Schreibschutz oder Versionierung.

Mail-Meldungen

Textdatei für --mail oder im Mandanten hinterlegt, eine Zeile je Einstellung. Zeilen mit # sind Kommentare.

SchlüsselBedeutung
hostSMTP-Server (Pflicht)
portStandard 25, üblich 587
securitystarttls oder none (Port 465 mit SSL wird nicht unterstützt)
user, passwordAnmeldung, falls nötig
passwordenvName einer Umgebungsvariable mit dem Kennwort
from, toAbsender und Empfänger (Pflicht), mehrere Empfänger mit ;
subjectBetreff-Anfang, Standard [Fakturo]
onGemeldete Arten, Standard fehler,dublette,iban,pruefung
trustcert1 akzeptiert selbst ausgestellte Zertifikate (nur interne Server)

Arten: fehler, dublette, iban, pruefung, warnung. Pro Durchlauf geht höchstens eine Sammelmail raus. Schlägt der Versand fehl, werden die Meldungen behalten und nach 5 Minuten erneut versucht. Anhänge enthält die Mail nicht. Das Kennwort steht im Klartext in der Datei, schützen Sie sie per Dateirechten.

Speicherorte

PfadZweck
%LOCALAPPDATA%\Fakturo\settings.txtGUI-Einstellungen (Dunkelmodus, aktiver Mandant, Tray, Verlauf)
%LOCALAPPDATA%\Fakturo\verlauf.tsvVerlauf des Mandanten „Standard“ (Status in verlauf.status.tsv)
%LOCALAPPDATA%\Fakturo\layout.iniPDF-Layout des Mandanten „Standard“
%LOCALAPPDATA%\Fakturo\profiles\<Name>\Verlauf, Status, Layout und profile.ini je weiterem Mandanten

Grenzen

  • Plausibilitätsprüfung, keine Schematron-Validierung. Für die verbindliche Prüfung bleibt das KoSIT-Prüftool.
  • Keine Seitenzahlen im PDF, kein PDF/A, kein DATEV-Export, keine Rechnungserstellung.
  • Längere Rechnungen brauchen mit Kopf- und Fußzeile mehr Seiten.
  • Die Autostart-Aufgabe läuft nur, solange der Benutzer angemeldet ist.