From c438d1ec50dfe8a93b40fc7ed619f7d9f8789dda Mon Sep 17 00:00:00 2001 From: Guido Date: Fri, 21 Aug 2026 09:07:21 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20Bank-Vorlage=20f=C3=BCr=20N26?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Spaltenzuordnung aus einem echten Export (Betrag in Spalte „Amount (EUR)", Partner als Empfänger, Payment Reference als Zweck, Partner-IBAN für die Transfer-Erkennung). Eine Kontostand-Spalte liefert N26 nicht, dort bleibt der Saldo-Abgleich also aus. Nachgerechnet: 246 Zeilen, Summe -719.51; mit Anfangssaldo 872.95 ergibt das exakt die tatsächlichen 153.44 EUR. Co-Authored-By: Claude Opus 4.8 --- backend/app/services/csv_import.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/backend/app/services/csv_import.py b/backend/app/services/csv_import.py index 1f3caf3..5ea0e19 100644 --- a/backend/app/services/csv_import.py +++ b/backend/app/services/csv_import.py @@ -50,6 +50,22 @@ PRESETS: list[dict] = [ "column_map": {"date": 1, "amount": 3, "payee": 2, "balance": 4, "purpose": None, "counterparty_iban": None}, }, + { + "name": "N26", + "delimiter": ",", + "decimal_sep": ".", + "date_format": "%Y-%m-%d", + "encoding": "utf-8", + "has_header": True, + "skip_rows": 0, + "amount_mode": "signed", + # Spalten: 0=Buchungsdatum, 1=Valuta, 2=Partner, 3=Partner-IBAN, 4=Typ, + # 5=Verwendungszweck, 6=Kontoname, 7=Betrag (EUR), 8=Originalbetrag, + # 9=Originalwährung, 10=Kurs. Eine Saldo-Spalte gibt es hier nicht, + # deshalb ist beim Import kein Saldo-Abgleich möglich. + "column_map": {"date": 0, "amount": 7, "payee": 2, "purpose": 5, + "counterparty_iban": 3}, + }, { "name": "Revolut", "delimiter": ",",