StartseiteDokumentationModuleBanking-Integrationen
Finanzen & Controlling · Global

Banking-Integrationen: wann das Modul im Produktalltag Sinn ergibt.

Automatische Bank-Anbindungen und CSV-Importe verwalten, Importzeiträume steuern und Daten vor dem Import bereinigen. Das Modul wird in der passenden Verwaltungs- oder Arbeitsoberfläche freigeschaltet und genutzt.

  • Der Bereich bündelt automatische Bank-Anbindungen und manuellen CSV-Import, statt beide Wege getrennt zu dokumentieren oder zu pflegen.
  • Beim CSV-Import werden potenzielle Duplikate und ungültige Zeilen vor dem finalen Speichern in einer serverseitigen Arbeitsliste sichtbar.
  • Beim ersten Verbinden über finAPI kann der Import bewusst auf ein Startdatum begrenzt werden, damit bestehende Datenquellen kontrolliert weitergeführt oder abgelöst werden können.
Modulzweck

Wofür das Modul gedacht ist

Banking-Integrationen ist Teil des aktiven Modul-Katalogs und deckt einen klaren Ausschnitt des Produktalltags ab.

Automatische Bank-Anbindungen und CSV-Importe verwalten, Importzeiträume steuern und Daten vor dem Import bereinigen. Im tenantweiten Kontext sorgt der Bereich dafür, dass wiederkehrende Entscheidungen, Stammdaten oder Übersichten nicht in Nebensysteme ausweichen müssen.

Banking-Integrationen ist als eigenständiger Produktbaustein gedacht. Gerade deshalb lohnt sich ein Blick darauf, wie der Bereich mit Rollen, Datenkontext und angrenzenden Modulen zusammenspielt.

Das Modul wird in der passenden Verwaltungs- oder Arbeitsoberfläche freigeschaltet und genutzt.
Praxisbezug

Typische Einsatzfälle

Diese Situationen zeigen, wann der Bereich in einem sauberen Rollout oder im laufenden Betrieb konkret Mehrwert liefert.

Bankanbindungen kontrolliert starten

Neue Verbindungen lassen sich so aufsetzen, dass der erste Datenimport fachlich zum vorhandenen Bestand passt. Bei finAPI kann dafür direkt beim Verbinden ein Startdatum gesetzt werden.

CSV-Dateien vor dem Import bereinigen

Die serverseitige Arbeitsliste zeigt importierbare Zeilen, mögliche Duplikate und ungültige Datensätze, bevor Transaktionen endgültig gespeichert werden.

Importpfade sauber abstimmen

Automatische Synchronisation und manuelle Nachimporte bleiben nachvollziehbar, damit die Transaktionsbasis für Finanzen, Zahlungen und Prüfungen konsistent bleibt.

Modulverbindungen

Wie das Modul mit anderen Bereichen zusammenspielt

struct-i-vio ist als zusammenhängende Plattform gedacht. Diese Module liegen fachlich am nächsten bei diesem Bereich.

Sichtbarkeit

Berechtigungen und Sichtbarkeit

Die öffentliche Dokumentation beschreibt die Logik auf Produktniveau - nicht als technische Policy-Liste, sondern als Rollout-Leitfaden.

Die Sichtbarkeit wird tenantweit bzw. organisationsweit freigeschaltet und sollte zu Rolle und Verantwortungsbereich passen.
Das Modul hat keinen eigenständigen Hauptmenüpfad. Zugriff und Aktionen greifen direkt in den jeweiligen Verwaltungs- oder Projektoberflächen.
Finanznahe, freigaberelevante oder buchungsnahe Aktionen sollten nur Rollen mit Management-, Finanz- oder klar delegierter Projektverantwortung erhalten.
Empfohlener Einsatz

Best Practices

So bleibt der Bereich bei Einführung und Nutzung anschlussfähig an den restlichen Produktfluss.

Vor einem CSV-Import immer zuerst die Server-Vorschau laden und Duplikate oder ungültige Zeilen in der Arbeitsliste bereinigen, statt Fehler erst nach dem Import zu klären.
Wenn bereits Transaktionen aus Finmap, CSV oder einer anderen Quelle vorhanden sind, beim ersten finAPI-Connect bewusst ein Import-Startdatum setzen, statt die gesamte verfügbare Historie ungeprüft zu übernehmen.
Automatische Quellen und manuelle Nachimporte regelmäßig mit dem Transaktionsbereich abstimmen, damit Zuordnung, Kontrolle und spätere Auswertungen auf derselben Datenbasis arbeiten.
Tiefer einsteigen

Entwickler Info

Empirisch erhobene Befunde aus Stage-2-Isolations-Probe inkl. 4-Schichten-Enforcement-Scan. Das Modul ist sauber durchgängig auf API-Layer gegated; die einzigen versteckten Kopplungen sind Cross-Module zu guv_transactions, weil die Daten am Ende in fact_transactions landen.

Entwickler-Info aufklappen (6)

view: API-Permission + RLS auf 8 Banking-Tabellen (defence in depth)

Das API-Gate steht in providers.ts:160 und an mehreren weiteren Endpoints. Zusätzlich liegen RLS-SELECT-Policies auf banking_provider_connections, csv_import_mappings, finapi_accounts, finapi_bank_connections, finapi_sync_log, finapi_users, gocardless_accounts und gocardless_requisitions. Verweigerung wirkt sofort als 403 (API), aber selbst bei API-Bypass würde RLS leere Listen zurückgeben.

  • pages/api/banking/providers.ts:160
  • RLS: bpc_select, csv_map_select, finapi_acc_select, finapi_bc_select, finapi_sl_select, finapi_users_select, gc_acc_select, gc_req_select

manage: API-Permission + RLS auf alle Banking-Tabellen-Mutations

API-Pre-Check in csv/mappings.ts:21, providers.ts:237/278, gocardless/requisitions.ts:22, finapi/* (connect/callback/update/disconnect/sync/status/confirm-selection). RLS auf INSERT/UPDATE/DELETE der gleichen 8 Tabellen wie view. Standalone — keine Cross-Module-Coupling.

  • pages/api/banking/csv/mappings.ts:21
  • pages/api/banking/providers.ts:237

⚠ KRITISCHModul hat keine eigene UI-Page — alle 4 Actions hängen am /guv/transactions-Tab

In dim_modules ist route=NULL. Die Banking-Provider-Konfiguration wird als Tab-Komponenten (FinmapSettings, GoCardlessSettings, FinapiSettings, CsvImportSettings) IM /guv/transactions-Page eingebettet. Diese Page ist gegated auf hasAccess('guv_transactions') — Modul-Visibility. Konsequenz: Wer banking_settings.* hat aber das guv_transactions-Modul nicht sehen darf, kommt nie an die Banking-UI. Der Backend-Permission-Toggle ist live, aber praktisch unerreichbar.

  • pages/guv/transactions.tsx:165 (hasAccess('guv_transactions') gate)
  • pages/guv/transactions.tsx:19-23 (FinmapSettings/GoCardlessSettings/FinapiSettings/CsvImportSettings imports)
  • dim_modules.banking_settings.route = NULL

⚠ KRITISCHsync: versteckte Cross-Module-Kopplung an guv_transactions.sync_transactions

Banking-Sync-Endpoints (sync-all.ts, gocardless/sync.ts, finapi/sync.ts) verwenden supabaseWithTenant (User-Kontext, RLS aktiv) und INSERTen abgerufene Transaktionen in fact_transactions. Die WITH_CHECK-Policy fact_transactions_insert verlangt guv_transactions.sync_transactions — ohne diese Permission scheitert die Insertion still im DB-Layer trotz erfolgreichem API-Permission-Check. Statisch entdeckt; im Probe wurde 200 zurückgegeben, weil kein Provider konfiguriert war (also keine Daten zum INSERTen). Im echten Betrieb tritt das Phänomen auf, sobald ein Provider tatsächlich Daten liefert.

  • pages/api/banking/sync-all.ts:27 (supabaseWithTenant)
  • pages/api/banking/finapi/sync.ts:27
  • pages/api/banking/gocardless/sync.ts:25
  • lib/permission-dependencies.ts (cross_module conditional)

⚠ KRITISCHcsv_import: gleiche Cross-Module-Kopplung wie sync

pages/api/banking/csv/import.ts INSERTet die geparsten CSV-Zeilen als User-Kontext in fact_transactions. Gleiche RLS-Voraussetzung: guv_transactions.sync_transactions. Die /preview-Route allein triggert das Coupling NICHT (kein INSERT) — relevant ist nur der eigentliche Import.

  • pages/api/banking/csv/import.ts:153 (supabaseWithTenant) + :211 (fact_transactions Lookup)

Kein vestigialer Toggle, kein Backdoor

Alle 4 Actions sind effektiv durchgesetzt. Es gibt keine alternative SELECT-Policy, die die view-Permission umgeht (anders als bei guv_transactions, wo project_payments.view eine Teilsicht öffnet).