📋

Verfahrensdokumentation nach GoBD

Gemäß GoBD i.d.F. des BMF-Schreibens vom 14.07.2025 (2. Änderung; Ursprung 28.11.2019, BStBl I 2019, S. 1269, geändert 11.03.2024, BStBl I 2024, S. 374)
Hinweis: Diese Seite dokumentiert eine interne technische Selbstprüfung der im Quellcode von MintFolder AI implementierten Maßnahmen. Es handelt sich nicht um ein Testat, Gutachten oder eine Bescheinigung einer Wirtschaftsprüfungsgesellschaft, einer Datenschutzbehörde oder einer anderen fachkundigen Stelle.
System: MintFolder AI v1.4.0
Erstellt am: 23. April 2026
Verantwortlich: Thaeer Sukay (MintFolder AI)
Status: Interne Dokumentation (Selbstprüfung)
Rechtsgrundlage: §§ 145-147 AO, GoBD i.d.F. BMF 14.07.2025
Nächste Prüfung: 09. Dezember 2026 (halbjährlich)

Allgemeine Beschreibung

Unternehmensprofil

MintFolder AI ist ein cloudbasiertes Dokumentenarchivierungswerkzeug zur Archivierung, Klassifizierung und Aufbewahrung von Geschäftsdokumenten nach GoBD-Anforderungen. Das System bedient drei Eingangskanäle: Web-Oberfläche, Telegram-Bot und B2B-API-Schnittstelle.

Zweck des Systems

Dokumentenarten

DokumenttypKürzelAufbewahrungsfristRechtsgrundlage
EingangsrechnungenRE8 Jahre§147 Abs. 3 AO i.d.F. BEG IV, ab 01.01.2025
AusgangsrechnungenAR8 Jahre§147 Abs. 3 AO i.d.F. BEG IV, ab 01.01.2025
BuchungsbelegeBU8 Jahre§147 Abs. 3 AO i.d.F. BEG IV, ab 01.01.2025
VerträgeVT6 Jahre (im Regelfall; Einzelfallprüfung)§147 AO / §257 HGB (einzelfallabhängig)
GeschäftsbriefeGB6 Jahre§147 Abs. 1 Nr. 2, 3 AO
SteuerbescheideST10 Jahre§147 Abs. 1 Nr. 4a AO
Personalunterlagen / Persönliche DokumentePA10 Jahre (konservativer Default; bei Differenzierung Lohnbeleg/Sonstiges einzelfallabhängig)§147 Abs. 1 Nr. 4a AO, §41 EStG, §257 HGB
BankbelegeBA10 Jahre§147 Abs. 1 Nr. 4 AO
SonstigeSO6 Jahre§147 Abs. 1 Nr. 5 AO

Anwenderdokumentation

Eingangskanäle

KanalBeschreibungKennung (archive_source)
Web-OberflächeUpload über Browser-Dashboard (app.mintfolder.ai)web
Telegram-BotDirekte Dokumentenübermittlung per Chatbot
B2B-DashboardAPI-Schnittstelle für Geschäftskundenb2b
Scanner-ModulKamera-basierter Dokumentenscanscan

Verarbeitungsablauf

  1. Dokumenteneingang: Benutzer lädt PDF/Bild über einen der vier Kanäle hoch
  2. KI-Analyse: Vierstufige Fallback-Kette (Lokal/Ollama → Gemini → Claude → GPT-4o) extrahiert Metadaten
  3. Klassifizierung: Automatische Zuordnung zu Kategorie, Kürzel und Aufbewahrungsfrist
  4. Hash-Berechnung: SHA-256-Hash des Dokuments wird vor der Speicherung berechnet
  5. Google Drive Upload: Dokument wird in strukturiertem Ordnerpfad gespeichert
  6. Archivierung: Alle Metadaten werden in der SQLite-Datenbank gespeichert
  7. Auto-Lock: Trigger trg_archive_auto_lock sperrt den Eintrag sofort nach INSERT
  8. Bestätigung: Benutzer erhält Bestätigung mit Archivpfad und Drive-Link

Benutzerrollen

RolleBerechtigungBeschreibung
ownerVollzugriffUnternehmensinhaber, alle Verwaltungsfunktionen
adminVerwaltungTeam-Management, Einstellungen, Export
editorBearbeitungDokumente hochladen und archivieren
viewerNur LesenArchiv einsehen, keine Änderungen
api-onlyAPI-ZugriffNur programmatischer Zugriff über API-Key
auditorNur Lesen (zeitlich begrenzt)Betriebsprüfer — lesender Zugriff auf Archiv, Audit-Trail und Integritätsprüfung

Technische Systemdokumentation

Systemarchitektur

KomponenteTechnologieZweck
BackendPython 3.12 + Uvicorn (ASGI)API-Server & Geschäftslogik
DatenbankSQLite 3 (WAL-Modus)Metadatenspeicherung & Audit Trail
DateispeicherGoogle Drive API v3Dokumentenspeicherung
KI-EngineLokal/Ollama → Gemini → Claude → OpenAI (vierstufige Fallback-Kette)Dokumentenanalyse & Klassifizierung
WebserverNginx (Reverse Proxy)HTTPS-Terminierung, Routing
Bot-Interfacepython-telegram-bot v20Telegram-Kanal
PDF-Verarbeitungpypdf, pypdfium2, PillowPDF-Operationen (18 Tools)

Datenbankschema — Archivtabelle

Tabelle: archive_log — Zentrale Archivtabelle mit 37 Feldern
FeldTypGoBD-Relevanz
idINTEGER PKEindeutige Dokumentennummer
user_idINTEGER FKZuordnung zum Benutzer
original_nameTEXTUrsprünglicher Dateiname
final_nameTEXTArchivierter Dateiname
category / kuerzelTEXTDokumentenkategorie (RE, AR, VT, etc.)
sender / recipientTEXTAbsender/Empfänger
doc_dateTEXTBelegdatum
processed_atTEXTErfassungszeitpunkt (automatisch)
drive_pathTEXTSpeicherpfad in Google Drive
document_hashTEXTSHA-256 Hash für Integritätsprüfung
archive_sourceTEXTHerkunftskanal (web/bot/b2b/scan)
locked_atTEXTSperrzeitpunkt (Unveränderbarkeit)
betrag_nettoREALNettobetrag (für Aufbewahrungsfrist)
waehrungTEXTWährung
rechnungsnummerTEXTRechnungsnummer
ust_id_senderTEXTUSt-IdNr. des Absenders
ibanTEXTIBAN des Absenders
aufbewahrungsfristINTEGERAufbewahrungsfrist in Jahren (6/8/10 gem. §147 Abs. 3 AO i.d.F. BEG IV)
gobd_logTEXTGoBD-Verarbeitungsprotokoll (JSON)

Integritätssicherung — SQLite Triggers

TriggerZweckGoBD-Anforderung
trg_archive_auto_lockAutomatische Sperrung bei INSERT (status='success')Zeitgerechte Erfassung
trg_archive_no_tamper_coreBlockiert UPDATE auf Kernfelder nach SperrungUnveränderbarkeit
trg_archive_no_tamper_financialBlockiert UPDATE auf Finanzfelder nach SperrungUnveränderbarkeit
trg_archive_no_deleteBlockiert DELETE auf alle ArchiveinträgeVollständigkeit
trg_archive_retention_guardVerhindert Soft-Delete vor Ablauf der AufbewahrungsfristAufbewahrungspflicht
trg_archive_audit_summaryProtokolliert Änderungen an ai_summaryNachvollziehbarkeit
trg_archive_audit_statusProtokolliert StatusänderungenNachvollziehbarkeit
trg_archive_audit_drive_deletedProtokolliert Drive-LöschmarkierungenNachvollziehbarkeit
trg_archive_audit_categoryProtokolliert KategorieänderungenNachvollziehbarkeit
trg_audit_trail_no_tamperAudit Trail nach Versiegelung unveränderbarPrüfbarkeit
trg_audit_trail_no_tamper_dataDatenfelder des Audit Trails immer unveränderbarPrüfbarkeit
trg_audit_trail_no_deleteAudit Trail löschgeschütztPrüfbarkeit
trg_credits_non_negativeVerhindert negative Guthaben-SaldenFinanzielle Integrität
trg_ledger_no_tamperKredit-Ledger unveränderbarFinanzielle Integrität
trg_ledger_no_deleteKredit-Ledger löschgeschütztFinanzielle Integrität
trg_action_ledger_no_tamperAktions-Ledger unveränderbarFinanzielle Integrität
trg_action_ledger_no_deleteAktions-Ledger löschgeschütztFinanzielle Integrität
trg_credits_never_negativeZusätzliche Negativsaldo-SperreFinanzielle Integrität
trg_audit_trail_chrono_guardVerhindert rückdatierte Audit-Trail-EinträgeChronologische Erfassung (§146 AO)
trg_billing_events_no_tamperAbrechnungsereignisse unveränderbarFinanzielle Integrität
trg_billing_events_no_deleteAbrechnungsereignisse löschgeschütztFinanzielle Integrität
trg_datev_locked_no_unlockDATEV-Sperre kann nicht aufgehoben werdenDATEV-Exportschutz (§146 AO)
trg_datev_no_summary_changeKI-Zusammenfassung nach DATEV-Export unveränderbarDATEV-Exportschutz
trg_datev_no_kontierung_changeVorkontierung nach Export unveränderbarDATEV-Exportschutz (§146 AO)
trg_datev_no_softdeleteSoft-Delete auf exportierten Datensätzen blockiertDATEV-Exportschutz
trg_datev_no_metadata_overwriteMetadaten nach Export unveränderbarDATEV-Exportschutz
trg_datev_no_ocr_changeOCR-Daten nach Export unveränderbarDATEV-Exportschutz (§146 AO)
trg_datev_no_user_reassignBenutzerzuordnung nach Export unveränderbarDATEV-Exportschutz (§146 AO)
trg_datev_no_retention_changeAufbewahrungsfrist nach Export unveränderbarDATEV-Exportschutz
trg_datev_no_storno_reversalStorno kann nicht rückgängig gemacht werdenDATEV-Exportschutz
trg_datev_no_audit_field_changeAudit-Felder nach Export unveränderbarDATEV-Exportschutz
trg_datev_no_locked_at_changeSperrzeitstempel nach Export unveränderbarDATEV-Exportschutz (§146 AO)
trg_b2b_datev_no_booking_change u. a. (5 Trigger)B2B-Belege (b2b_usage_logs) nach DATEV-Export festgeschrieben: Buchungsfelder, DELETE innerhalb der Aufbewahrungsfrist, Entsperrung, Sperrzeitstempel und Mandantenzuordnung unveränderbar (Sprint 5, Spalte datev_locked)DATEV-Festschreibung (§146 Abs. 4 AO)
2 weitere Festschreibungs-Trigger (Sprint 6)Zwei zusätzliche Festschreibungs-Trigger im Rahmen von Sprint 6 ergänzt; Gesamtbestand der Trigger steigt damit von 91 auf 93 (schema_version v729 → v732)DATEV-Festschreibung (§146 Abs. 4 AO)

Gesamtbestand: 97 SQLite-Trigger (aktive Namen im initialisierten Schema, Stand: 2026-06-14, schema_version v747; davon 95 GoBD-Integritäts-/Append-only- und 2 FTS-Index-Trigger) — kategorisiert in: Integritäts-Trigger (Hash-Chaining, Foreign-Key-Enforcement), Audit-Trigger (UPDATE/DELETE-Protokollierung), DATEV-Exportschutz-Trigger (Unveränderbarkeit nach Festschreibung gem. §146 Abs. 4 AO), Transfervermerk-Trigger (eIDAS-Signaturkette) und Aufbewahrungs-Trigger (§147-AO-Frist-Berechnung).

Die obige Tabelle zeigt gemäß GoBD Rn. 155 (Verhältnismäßigkeitsgrundsatz) eine kuratierte Auswahl der zentralen Trigger zur Veranschaulichung der Kontroll- und Sicherungsmaßnahmen. Die vollständige technische Trigger-Definition mit SQL-DDL, Auslöser, betroffenen Tabellen und Schutzzweck ist Bestandteil der technischen Systemdokumentation (GoBD Rn. 153 lit. c) und wird im Quellcode-Modul db/schema.py versioniert geführt (der Migrations-Runner verbleibt in db/_core.py). Ein Auszug (SQL-Definition aller 97 aktiven Trigger) wird auf Verlangen einer Außenprüfung gem. §147 Abs. 6 AO i.V.m. §146a Abs. 4 AO innerhalb der gesetzlichen Frist bereitgestellt.

Hinweis: Diese Tabelle zeigt eine Auswahl der implementierten Integritäts-Trigger. Die vollständige Liste ist in der technischen Umsetzungsdokumentation aufgeführt.

Hash-Algorithmus

Algorithmus: SHA-256 (256-Bit Secure Hash Algorithm)
Berechnung: hashlib.sha256(file_bytes).hexdigest()
Zeitpunkt: Vor dem Upload in Google Drive, nach der Verarbeitung
Speicherung: Feld document_hash in archive_log
Verifizierung: Funktion verify_document_hash(archive_id, file_bytes)

Kryptographische Verkettung des Audit Trails (Hash-Chaining)

Problemstellung: Als Solo-Gründer (Ein-Personen-Betrieb) verfügt der Systembetreiber über vollständigen Root-/SSH-Zugang zum Produktionsserver. Eine physische Funktionentrennung (Vier-Augen-Prinzip) gemäß GoBD Rn. 152 ist daher organisatorisch nicht darstellbar. Insbesondere könnte der Administrator die SQLite-Datenbankdatei mittels Hex-Editor direkt manipulieren und so die Anwendungs-seitigen Trigger umgehen.

Kompensierende Kontrolle (§ 146 Abs. 4 AO): Als Ersatz für die fehlende Funktionentrennung implementiert das System ein kryptographisches Hash-Chaining-Verfahren in der Tabelle archive_audit_trail:

  1. Sequentielle Verkettung: Jeder Audit-Trail-Eintrag enthält neben seinen Daten zwei zusätzliche Felder: previous_hash (SHA-256-Hash des Vorgänger-Eintrags) und current_hash (SHA-256-Hash des aktuellen Eintrags einschließlich previous_hash). Der erste Eintrag der Kette verweist auf einen deterministischen Genesis-Hash.
  2. Versiegelung (Sealing): Die Hash-Berechnung erfolgt über eine kanonische, pipe-separierte Zeichenkette aller Datenfelder: SHA-256(previous_hash|id|archive_id|user_id|action|field_name|old_value|new_value|performed_by|ip_address|user_agent|created_at). Nach der Versiegelung sind sämtliche Modifikationen durch SQLite-Trigger blockiert.
  3. Manipulationserkennung: Der API-Endpunkt /api/gobd/verify-integrity liest die gesamte Tabelle, berechnet jeden Hash neu und vergleicht ihn mit dem gespeicherten Wert. Jede Abweichung — auch eine einzelne geänderte Zelle — invalidiert die Kette ab diesem Punkt und wird mit der exakten Zeilen-ID (tampered_ids) gemeldet. Status: FAILED.
  4. E-Mail-Attestierung (Zeitstempel-Nachweis via Zoho SMTP — kein zertifizierter WORM-Speicher): Die Funktion send_to_worm_storage() wird nach jeder Versiegelung durch den Scheduler (scheduler.py, alle 60 Sekunden) automatisch aufgerufen. Der aktuelle Ketten-Kopf-Hash (chain_head) wird per Zoho SMTP-Relay (smtppro.zoho.eu, EU) an [email protected] übermittelt. Die E-Mail dient als zeitgestempelter, extern verifizierbarer Nachweis — unabhängig von der MintFolder-Infrastruktur, da Zoho die E-Mail auf eigenen EU-Servern vorhält. Bei Ausfall des SMTP-Relays greift ein lokales Fallback-Log (worm-attestations.log). S3 Object Lock steht als zusätzliche Methode bereit.

Prüfverfahren für den Betriebsprüfer: Der Prüfer ruft den Endpunkt GET /api/gobd/verify-integrity auf (authentifiziert via Bearer-Token). Die Antwort enthält: (a) den Gesamtstatus (PASSED/FAILED), (b) die Anzahl verifizierter Einträge, (c) bei Manipulation die betroffenen Zeilen-IDs, (d) den aktuellen Ketten-Kopf-Hash zur unabhängigen Verifizierung.

Kryptographische Anker-Persistierung (Proof Chain)

Seit April 2026 werden sämtliche Attestierungen zusätzlich in der Tabelle anchor_attestations persistiert. Jeder Eintrag enthält den attested chain_hash, eine Rückverlinkung zum vorherigen Anker (previous_anchor) sowie die externe Referenz (Zoho-SMTP-Versandmarker, S3-Pfad oder lokaler Log-Pfad). Dies ermöglicht:

  • Proof-Chain-Export: GET /api/gobd/proof-chain — liefert die vollständige Attestierungskette als JSON.
  • Einzelanker-Verifizierung: GET /api/gobd/verify-anchor/{hash} — öffentlicher Endpunkt, der für jeden SHA-256-Hash prüft, ob eine korrespondierende Attestierung existiert und die Kette intakt ist.
  • Per-Dokument-Anchoring: anchor_document(archive_id) — erzeugt einen individuellen kryptographischen Anker pro archiviertem Dokument, unabhängig von der periodischen Chain-Head-Attestierung.

E-Rechnung-Validierung (Sprint 6)

Strukturierte elektronische Rechnungen (XRechnung CII/UBL und ZUGFeRD/Factur-X) werden gegen die EN16931-Geschäftsregeln per Schematron geprüft. Es wird keine XSD-Schemavalidierung durchgeführt (XSD ist für die von der Bibliothek tolerierte CII-Elementreihenfolge bewusst nicht maßgeblich; die Schematron-Prüfung der EN16931-Geschäftsregeln — Beträge, Steuersummen, BR-CO-Regeln — ist die substanzielle Korrektheitsprüfung). Die Validierung wirkt in zwei Richtungen unterschiedlich:

Die XRechnung-CIUS-/BR-DE-Validierung nach dem KoSIT-Standard (deutsche nationale Spezifikationen über EN16931 hinaus, KoSIT XRechnung 3.0 Schematron via saxonche) wird beim Finalisieren ausgehender XRechnungen zusätzlich ausgeführt; das Ergebnis wird am Beleg vermerkt (brde_validation_status / brde_validation_errors, nach dem Finalisieren unveränderbar). Sie läuft derzeit warnend/protokollierend (warn-first) und ist noch keine harte Sperre — die blockierende Finalize-Sperre (HTTP 422) bleibt die EN16931-Schematron-Prüfung. Die Heraufstufung der BR-DE-Prüfung zur harten Sperre ist als Folgeschritt vorgesehen.

GDPdU-/Z3-Export (Sprint 6)

Für die Datenträgerüberlassung (Z3) gem. §147 Abs. 6 AO erzeugt services/export/gdpdu.py ein GDPdU-/Audicon-konformes Paket (Beschreibungsstandard für IDEA/AIS-TaxAudit-Import) aus denselben Finanz-Archivzeilen, die auch der DATEV-EXTF-Export verwendet. Das Paket besteht aus genau drei aufeinander abgestimmten Dateien:

DateiInhalt
index.xmlGDPdU-Beschreibungsdatei (INDEX.XML), konform zur amtlichen DTD gdpdu-01-08-2002.dtd (Version 1.1)
gdpdu-01-08-2002.dtdDie amtliche DTD, unverändert dem Paket beigelegt, damit der Datenträger selbstbeschreibend ist
journal.csvDie Buchungsdaten, ein Datensatz je Zeile, in exakt der im Index deklarierten Spaltenreihenfolge

index.xml und journal.csv werden aus einer einzigen Spaltendefinition (_COLUMNS) abgeleitet, sodass die VariableColumn-Reihenfolge/-Namen im XML immer mit dem CSV-Header übereinstimmen. CSV-Konventionen folgen den deutschen Audicon-Vorgaben: Spaltentrennzeichen ;, Datensatztrennzeichen CRLF, Textbegrenzer ", Dezimalzeichen ,, Tausendertrennzeichen ., Datumsformat DD.MM.YYYY, UTF-8. Damit steht den Prüferinnen und Prüfern für die Z3-Datenüberlassung neben dem DATEV-EXTF-Format (Abschnitt 8) ein weiteres maschinell auswertbares, standardkonformes Format zur Verfügung.

Betriebsdokumentation

Systembetrieb

ParameterWert
ServerLinux (Ubuntu 24.04 LTS)
HostingDedizierter Server mit SSH-Zugang
HTTPSLet's Encrypt TLS 1.3 (automatische Erneuerung)
Prozess-ManagerUvicorn mit nohup / systemd
Datenbank-ModusSQLite WAL (Write-Ahead Logging)
Backup-IntervallTäglich (siehe Datensicherungskonzept)
MonitoringHealth-Check Endpoint + Log-Analyse

Wartungsverfahren

Internes Kontrollsystem (IKS)

Gemäß GoBD Rz. 100-103 (BMF-Schreiben 28.11.2019)

Zugangskontrollen

Zugriffsberechtigungen

Aktionowneradmineditorviewerapi-onlyauditor
Dokumente hochladen
Archiv einsehen
Audit-Trail einsehen
Team verwalten
Einstellungen ändern
Daten exportieren
GoBD-Export (Z3)

Erfassungskontrollen

Verarbeitungskontrollen

Zugriffsprotokollierung

Datensicherungskonzept

Backup-Strategie

EbeneMethodeIntervallAufbewahrung
Datenbank (SQLite)Dateibasiertes Backup (archiver.db)Täglich30 Tage rollierend
DokumenteGoogle Drive (Cloud-Speicher)EchtzeitGemäß Aufbewahrungsfrist
QuellcodeGit-RepositoryBei jeder ÄnderungUnbegrenzt
KonfigurationNginx/System-Konfig-BackupBei ÄnderungVorherige Version

Wiederherstellung (Disaster Recovery)

  1. SQLite-Datenbank aus dem letzten täglichen Backup wiederherstellen
  2. Dokumente sind über Google Drive jederzeit zugreifbar
  3. Anwendung aus Git-Repository neu deployen
  4. Nginx-Konfiguration aus Backup wiederherstellen
  5. Integritätsprüfung aller Dokument-Hashes durchführen

Verfügbarkeit

Aufbewahrung und Archivierung

Aufbewahrungsfristen

Automatische Fristberechnung: Das System setzt die Aufbewahrungsfrist kategorien- und datumsabhängig gemäß §147 AO i. V. m. BEG IV:
10 Jahre — z. B. Jahresabschlüsse/Bilanzen und bestimmte Unterlagen nach §147 AO
8 Jahre — bestimmte Buchungsbelege ab 2025 (BEG IV, dokumenttypabhängig)
6 Jahre — insbesondere Geschäftsbriefe/sonstige Unterlagen nach §147 AO

Löschschutz

Originalformat-Aufbewahrung

Hinweis zum Altbestand der Web-Uploads (Stand 2026-06-10): Web-Upload-Dokumente (B2C-Pfad), die vor dem Merge des zugehörigen Fixes (2026-06-10) archiviert wurden, wurden ohne SHA-256-Integritäts-Hash archiviert. Ab diesem Datum wird der Hash bei der Archivierung über die tatsächlich gespeicherten Bytes erzeugt; zusätzlich wird der tatsächlich genutzte KI-Provider je Archiveintrag persistiert (Art. 15 DSGVO / Art. 50 KI-VO). Für Altbestände kann ein nachträglich berechneter Hash die Integrität nur ab dem Zeitpunkt der Nachberechnung belegen, nicht ab der Originalarchivierung. Die Altbestände werden nicht nachträglich verändert.

Datenzugriff für die Betriebsprüfung (Z1/Z2/Z3)

Gemäß §147 Abs. 6 AO

Z1 — Unmittelbarer Zugriff (§147 Abs. 6 AO)

MintFolder stellt eine dedizierte Auditor-Rolle (Betriebsprüfer) bereit, die ausschließlich lesenden Zugriff auf das Archivsystem gewährt:

Zugangseinrichtung

  1. Der Unternehmensinhaber (Owner) lädt den Betriebsprüfer per E-Mail ein (POST /api/b2b/auditor/invite).
  2. Der Prüfer erhält eine zeitlich begrenzte Einladung (Standard: 30 Tage).
  3. Nach Annahme erhält der Prüfer die Rolle auditor im Team-System.
  4. Nach Ablauf der Frist wird der Zugang automatisch deaktiviert.
  5. Der Inhaber kann den Zugang jederzeit vorzeitig widerrufen.

Technische Absicherung (Defense-in-Depth)

Zugriffsbereiche des Prüfers

Einschränkungen

Z2 — Mittelbarer Zugriff

Z2 — Mittelbarer Zugriff: Über /api/gobd/verify-integrity können Hash-Integritätsprüfung, Audit-Trail-Verifizierung und Aufbewahrungsfristen-Status abgerufen werden.

Z3 — Datenüberlassung

Über /api/gobd/export-z3 als ZIP-Archiv: DATEV-Export (EXTF v7.0), Archivdaten mit Metadaten, SHA-256 Validierungshashes.

Konvertierung & Scan & Digitalisierung

Scanverfahren

  1. Bildaufnahme: Kamera/Upload über Web, Bot oder Scanner-Modul
  2. Bildoptimierung: Automatische Scanner-Effekt-Anwendung (Kontrast, Entzerrung)
  3. PDF-Konvertierung: Bild wird in archivtaugliches PDF konvertiert
  4. OCR: Optische Zeichenerkennung für Volltextsuche (sofern aktiviert)
  5. Qualitätsprüfung: Dimensionsprüfung, Mindestauflösung, Dekompressionsbomben-Schutz
  6. Archivierung: Standardverfahren mit Hash-Berechnung und Auto-Lock

Konvertierungsrichtlinie

Grundsatz: Bei der Konvertierung von Bildern in PDF wird sichergestellt, dass:
• Kein inhaltlicher Informationsverlust stattfindet
• Die bildliche Übereinstimmung mit dem Original gewährleistet ist
• Der Konvertierungsprozess im Audit-Trail protokolliert wird
• Der SHA-256-Hash sich auf das Originaldokument bezieht (vor Konvertierung)

Originalformat-Erhaltung (Dual-Version Storage)

Prinzip: Bei jeder Konvertierung (z.B. JPG→PDF, OCR) werden beide Versionen in Google Drive gespeichert:
original_drive_file_id — Referenz auf die bit-exakte Originaldatei
drive_file_id — Referenz auf die konvertierte/verarbeitete Version
• Bei Dateien ohne Konvertierung (z.B. PDF-Upload) sind beide Referenzen identisch.
document_hash (SHA-256) wird vor der Konvertierung berechnet und bezieht sich auf die Originaldatei.
• Die Originalreferenz ist durch den Datenbank-Trigger trg_archive_original_immutable unveränderlich geschützt — einmal gesetzt, kann sie nicht mehr überschrieben werden (Ausnahme: DSGVO-Löschung).

Änderungshistorie

DatumVersionÄnderungVerantwortlich
17.03.20261.0Erstdokumentation gemäß GoBD 2019Thaeer Sukay
17.03.20261.0Implementierung aller technischen GoBD-MaßnahmenThaeer Sukay
24.03.20261.3.0Aktualisierung: Trigger-Anzahl, API-Endpoints, DSGVO-Pseudonymisierung, Vault-IntegrationThaeer Sukay
07.04.20261.4.0Transfervermerk (Rz. 130-146): Automatische Erstellung bei Archivierung, WORM-geschützt, Papiervernichtungs-Genehmigung. Betriebsprüfer-Zugang (Rz. 155-163): Token-basierter Z1/Z2-Zugang mit Protokollierung, Such-UI, Z3-Export. eIDAS AdES Signatur: RSA-PSS-SHA256 Dokumentensignierung gemäß §14 UStG + eIDAS Art. 26.Thaeer Sukay
08.04.20262.2BEG IV: Aufbewahrungsfristen aktualisiert (8/10 Jahre); GoBD 2024/2025 Rechtsgrundlagen ergänzt; Z3-Terminologie aktualisiert; KI-Pipeline auf 5-stufige Fallback-Kette aktualisiertThaeer Sukay
16.04.20262.3Z1 Unmittelbarer Zugriff: Dedizierte Auditor-Rolle (Betriebsprüfer) mit zeitlich begrenztem read-only Zugang, Middleware-Schreibschutz (HTTP 403), vollständige Zugriffsprotokollierung im Audit-Trail (auditor_read/auditor_write_blocked), Defense-in-Depth-Dokumentation.Thaeer Sukay
16.04.20262.4Originalformat-Erhaltung (Dual-Version Storage): Neues Feld original_drive_file_id für bit-exakte Originalreferenz, Unveränderlichkeits-Trigger trg_archive_original_immutable, Backfill bestehender Einträge, document_hash bezieht sich auf Originaldatei vor Konvertierung, DSGVO-Löschung berücksichtigt.Thaeer Sukay
08.06.20262.5Live-Abgleich GoBD-Sprints 4–5: Trigger-Gesamtbestand 81 → 91; Definitionsstelle der Schema-/Trigger-Definitionen db/_core.pydb/schema.py (Migrations-Runner verbleibt in db/_core.py); schema_version v729; DATEV-Festschreibung der B2B-Belege gem. §146 Abs. 4 AO (Spalte datev_locked + 5 Festschreibungs-Trigger auf b2b_usage_logs); Aufbewahrungsfristen 8/10/6 Jahre (BEG IV); Rechtsgrundlage GoBD i.d.F. des BMF-Schreibens vom 14.07.2025 (2. Änderung).Thaeer Sukay
09.06.20262.6GoBD-Sprint 6: E-Rechnung-Schematron-Validierung (EN16931) — eingehende Belege werden markiert und stets archiviert (§147 AO), ausgehende Rechnungen bei Schematron-Verstoß mit HTTP 422 abgelehnt; GDPdU-/Z3-Export (Audicon-konform: index.xml + gdpdu-01-08-2002.dtd + journal.csv) gem. §147 Abs. 6 AO; 2 neue Festschreibungs-Trigger ergänzt; Trigger-Gesamtbestand 91 → 93; schema_version v729 → v732.Thaeer Sukay
10.06.20262.6Audit-Remediation Block 4 (COMP-002/COMP-008): B2C-Web-Upload-Pfad archiviert seit 10.06.2026 mit SHA-256-Integritäts-Hash über die tatsächlich gespeicherten Bytes (gleicher Mechanismus wie Telegram-Bot- und B2B-Pfad) sowie mit KI-Provider-Provenance je Archiveintrag (Art. 15 DSGVO / Art. 50 KI-VO). Datierter Hinweis zum hash-losen Altbestand der Web-Uploads ergänzt; Altbestände werden nicht nachträglich verändert.Thaeer Sukay
Hinweis: Diese Verfahrensdokumentation ist ein lebendes Dokument und muss bei jeder wesentlichen Änderung am System aktualisiert werden. Die nächste reguläre Überprüfung erfolgt spätestens am 09. Dezember 2026 (halbjährlich).

Für ein rechtsverbindliches Testat wenden Sie sich an eine zugelassene Wirtschaftsprüfungsgesellschaft (z.B. nach IDW PS 880 für GoBD oder ISO 27001 für Informationssicherheit).

Interne Dokumentation · Kein Testat · Stand: 2026-06-13 · Version 2.6