Python + KI: CAMT.053 automatisch in FIBU-CSV wandeln

1. Vom CAMT-File zum Buchungssatz

Stell dir vor, du hast ein sehr spezifisches IT-Problem in deiner Buchhaltung. Ein Datenformat passt nicht zum Import in Deine Buchhaltungs-Software. Früher bedeutete das eine manuelle Transformation in Excel oder ein Ticket für die IT, wochenlange Wartezeiten oder teure externe Berater. Heute? Vielleicht bald chatten mit einer KI.

2. Problem-Darstellung

Die KI wird exponentiell besser im Coden. Das heisst für uns im Finance-Bereich: Viele kleinere Probleme, für die man früher richtig investieren musste, könnten wir heute mit Python und KI selbst lösen.

Mein konkretes Thema: Ich führe meine Buchhaltung (FIBU) über eine eigene Datenbank und habe dafür eine spezifische Schnittstelle für den CSV-Import gebaut. Diese Schnittstelle ist für den Import klar strukturiert, sie erwartet über 40 Spalten in einem fixen Format.

Der Schmerzpunkt: Die Bank liefert für die Verbuchung der Bank die Transaktionen natürlich als CAMT-File (XML). Diese manuell in mein CSV-Format zu überführen, ist mühsam und fehleranfällig.

Das Experiment: Kann ich Claude (in diesem Fall Sonnet 4.5) dazu bringen, ein Python-Programm zu schreiben, das…

  1. Ein Schweizer CAMT-File von einem Laufwerk einliest.
  2. Jede einzelne Bank-Transaktion verarbeitet.
  3. Sie in mein 40-Spalten-CSV-Format umstrukturiert.
  4. Für jede Transaktion automatisch eine Soll- und eine Haben-Buchung generiert.
  5. Die Beträge korrekt als Plus- und Minus-Werte einträgt.
  6. Den Banktext und das korrekte FIBU-Konto der Bank einfügt.

Das Ganze war als “Vorstufe” gedacht – ein erster Baustein für eine spätere, vollautomatische Verarbeitung via n8n und eine angebundene Kontierungs-KI.

Das Ergebnis? Ich war verblüfft. Nach wenigen Minuten und zwei kurzen Korrektur-Prompts lief der Python-Code einwandfrei.

3. Hauptteil: Der Weg zum Code – Ein iterativer Dialog

Der Schlüssel zum Erfolg war nicht der erste Prompt. Der Schlüssel war der Dialog – ein iterativer Prozess aus Anforderung, Code-Vorschlag, Test und fachlichem Feedback.

Hier ist der nachvollzogene Chat-Verlauf, der zeigt, wie Fachexpertise und KI-Codierfähigkeit ineinandergreifen.

Schritt 1: Die (sehr spezifische) Erstanforderung

Ich habe der KI nicht einfach gesagt “Wandle CAMT in Excel”. Ich habe ihr die gesamte, 40-spaltige Zielstruktur meines CSVs gegeben und die Logik erklärt:

  • SourceFilename soll den Dateinamen enthalten.
  • TrxID soll eine laufende Nummer sein.
  • DocumentDate und BookingDate sollen das Transaktionsdatum bekommen.
  • AccountingDocumentText1 soll den Banktext enthalten.
  • WICHTIG: Jede Bewegung soll zwei Zeilen ergeben (Soll/Haben), mit dem Betrag einmal im Plus und einmal im Minus.
  • FinancialDimensionID und FinancialMetricsID sollen immer 1 sein.

Die KI lieferte ein erstes Script, das xml.etree.ElementTree und openpyxl nutzte. Es war ein guter Start, basierte aber auf einer Annahme über die CAMT-Struktur.

Schritt 2: Der Realitäts-Check (Input-Datei)

Damit die KI nicht rät, habe ich ein echtes Schweizer CAMT-File (camt.053.001.04) hochgeladen. Erkenntnis der KI: “Perfekt! Jetzt sehe ich die tatsächliche Struktur.” Die KI passte sofort den XML-Namespace und die Pfade (Tags) im Code an, um die echten Daten (<Amt>, <CdtDbtInd>, <AddtlNtryInf>) korrekt auszulesen. Das Script funktionierte auf Anhieb und fand im Testfile 35 Transaktionen, was 70 Buchungszeilen ergab.

Schritt 3: Technische Hürden (Pfad & Encoding)

Problem 1: Ich wollte den Dateipfad nicht im Code suchen müssen. Lösung: “Kannst du das direkt im Programm abbilden, damit ich nur den Pfad anpassen muss?” – Die KI baute sofort einen sauberen Konfigurations-Block am Anfang des Scripts ein.

Problem 2: Beim Ausführen in meiner “Spyder” (einer Python-Umgebung) bekam ich einen SyntaxError: invalid character '·' (U+00B7). Lösung: Ein klassisches Encoding-Problem. Die KI erkannte das und lieferte eine “saubere” Version der Datei, die sofort funktionierte.

Schritt 4: Das entscheidende Fach-Feedback (Domain Expertise)

Jetzt kam der wichtigste Teil. Der Code lief, aber der Output war fachlich noch nicht 100% korrekt für meine FIBU.

Mein Feedback an die KI:

  1. “Hinten baut das Programm eine Spalte Bank_CS rein, die muss weg.”
  2. “Folgende Felder müssen leer sein: DebitCredit, VATCodeID, VATpercentage, InsertTimestamp.”
  3. “Folgende Felder müssen den Integer-Wert 1 haben: FinancialDimensionID, FinancialMetricsID.”
  4. Die Kernlogik: “Bei FinancialAccountingAccountID muss eine Logik rein: Bei einem Bankeingang (Kredit) soll das Bankkonto (z.B. 1024) in der Zeile mit dem Plus-Betrag stehen. Bei einer Auszahlung (Debit) soll das Bankkonto 1024 in der Zeile mit dem Minus-Betrag stehen.”

Das ist reines Fachwissen. Die KI kann das nicht erraten. Sie muss es gesagt bekommen.

Schritt 5: Die finale Korrektur (Feintuning)

Die KI (Claude) setzte alles perfekt um. Sie baute die Logik mit dem CdtDbtInd (Credit/Debit) Tag aus dem CAMT-File.

Ein letztes Detail fiel mir im Excel-Export auf: Die Kontonummer 1024 wurde als 1'024.00 formatiert. Mein Feedback: “Die Felder TrxID, FinancialAccountingAccountID, etc. dürfen keine Kommas haben, nur absolute Werte.” Lösung: Die KI passte die letzte Code-Zeile an, sodass die Zahlenformatierung nur auf das Feld AmountInMainCurrency angewendet wird.

Ergebnis: Ein perfektes Python-Script, das exakt mein Problem löst.

4. Praxis-Tipps: Was wir daraus lernen

Dieser Dialog mit Claude (der in der Realität über ein paar Iterationen ging) zeigt die neue Arbeitsweise:

  1. Du bist der Fachexperte, KI der Coder: Die KI kannte mein 40-Spalten-Format nicht. Sie wusste nicht, wie ich mein Bankkonto (1024) logisch zuweise. Ich war der Architekt, die KI war der extrem schnelle Programmierer.
  2. Iteration ist der Schlüssel: Der erste Prompt ist selten die finale Lösung. Der wahre Wert liegt im Dialog, im Testen und im schrittweisen Verfeinern. Gib der KI Feedback, als wäre sie ein Junior-Entwickler.
  3. “Micro-Lösungen” sind Gold wert: Wir müssen nicht immer auf das grosse, teure IT-Projekt warten. Mit Tools wie Python und KI können wir “Micro-Lösungen” für Nischenprobleme (wie ein spezifischer Import) selbst bauen, die uns sofort Zeit sparen.
Picture of Roman Kalberer

Roman Kalberer

29. Oktober 2025

Diesen Beitrag teilen

Warenkorb
Nach oben scrollen