📋

Verfahrensdokumentation nach GoBD

Gemäß BMF-Schreiben vom 28.11.2019 (BStBl I 2019, S. 1269), geändert durch BMF-Schreiben vom 11.03.2024 (BStBl I 2024, S. 374) und 14.07.2025
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 — laufende Produktionsfassung
Erstellt am: 17. März 2026
Verantwortlich: MintFolder AI UG (haftungsbeschränkt), vertreten durch Thaeer Sukay
Status: Interne Dokumentation (Selbstprüfung)
Rechtsgrundlage: §§ 145-147 AO, GoBD 2019 in der jeweils geänderten Fassung (u. a. 2024/2025)
Nächste Prüfung: 17. März 2027

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
PersonalunterlagenPE6-10 Jahre (einzelfallabhängig)§147 AO, §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: Lokale/rule-basierte Vorverarbeitung und funktionsabhängige Fallback-Kette (Ollama/lokale Regeln → Gemini → Claude → GPT-4o) extrahiert Metadaten; Groq ist dekommissioniert
  3. Klassifizierung: Automatische Zuordnung zu Kategorie, Kürzel und Aufbewahrungsfrist
  4. Hash-Berechnung: SHA-256-Hash des Dokuments wird vor der Speicherung berechnet
  5. Zielablage: B2C-Dokumente werden in Google Drive gespeichert; B2B-Dokumente können je nach Vertrag im Hetzner Object Storage Vault gespeichert werden
  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

Technische Systemdokumentation

Systemarchitektur

KomponenteTechnologieZweck
BackendPython 3.12 + Uvicorn (ASGI)API-Server & Geschäftslogik
DatenbankSQLite 3 (WAL-Modus)Metadatenspeicherung & Audit Trail
DateispeicherGoogle Drive API v3; Hetzner Object Storage für B2B VaultDokumentenspeicherung je nach Produktmodus
KI-EngineLokale Regeln/Ollama, Gemini, Claude, OpenAI (funktionsabhängig)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 bzw. B2B-Vault-Referenz
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/10)
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)

Gesamt: 63 SQLite-Trigger — Basis-Trigger + DATEV-Exportschutz-Trigger + Transfervermerk-Trigger + eIDAS-Signatur-Trigger + weitere Integritäts-Trigger.

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 der Speicherung in der Zielablage (Google Drive oder B2B Vault), 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. Externe Attestierung (manipulationserschwerender Nachweis — E-Mail-Attestierung): Die Funktion send_to_worm_storage() wird nach jeder Versiegelung durch den Scheduler (scheduler.py, alle 5 Minuten) automatisch aufgerufen. Der aktuelle Ketten-Kopf-Hash (chain_head) wird per E-Mail-API an [email protected] übermittelt. Die E-Mail dient als zeitgestempelter, extern nachvollziehbarer Nachweis — unabhängig von der MintFolder-Infrastruktur, da der E-Mail-Dienst die Nachricht auf eigenen Servern vorhält. Bei Ausfall der E-Mail-API greift ein lokales Fallback-Log (worm-attestations.log). Diese Kontrolle ist manipulationserschwerend und beweissichernd, ersetzt aber kein externes GoBD-Testat und keine zertifizierte WORM-DMS-Lösung.

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 März 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 (Brevo-messageId, S3-Pfad oder 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.

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-IntervallMehrstufig: Restic/Hetzner primär, zusätzlicher Google-Drive-Backup-Pfad; siehe Datensicherungskonzept
MonitoringHealth-Check Endpoint + Log-Analyse

Wartungsverfahren

Internes Kontrollsystem (IKS)

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

Zugangskontrollen

Zugriffsberechtigungen

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

Erfassungskontrollen

Verarbeitungskontrollen

Zugriffsprotokollierung

Datensicherungskonzept

Backup-Strategie

EbeneMethodeIntervallAufbewahrung
Datenbank (SQLite)Verschlüsselte Backups (Restic primär; sekundärer Backup-Pfad)Regelmäßig/automatisiert30 Tage rollierend; gesetzliche Archivpfade nach Fristentscheidung
DokumenteB2C: Google Drive; B2B: Hetzner Object Storage VaultEchtzeit bzw. nach VerarbeitungGemäß Aufbewahrungsfrist und Vertrag
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 je nach Produktmodus über Google Drive oder B2B Vault wiederherstellbar
  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

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

Gemäß §147 Abs. 6 AO

Z1 — Unmittelbarer Zugriff

Der Betriebsprüfer erhält über den Admin-Zugang (/api/gobd/audit-trail) Lesezugriff auf:

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 archivierte Endformat bezieht

Ä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 Fallback-Kette aktualisiertThaeer Sukay
21.05.20262.3Rechts- und Transparenzabgleich: Groq entfernt, lokale KI-Kette und B2B-Vault-Speicher ergänzt, Google Drive/B2B-Zielablage präzisiert, WORM-Überbehauptung zu manipulationserschwerender externer Attestierung korrigiert, GoBD 2025-Änderung referenziert.Codex-assisted review / 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 17. März 2027.

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: April 2026 · Version 2.2