Aller au contenu

🏦 Banking API (finAPI + FinTS + EDI)

Typ: Open Banking API + FinTS/HBCI + EDI (EDIFACT)
Auth: OAuth2 / 2FA / TAN-Verfahren
Status: ✅ Production Ready


Übersicht

Universelle Banking-Integration für maximale Automatisierung:

Funktion Technologie Automatisierungsgrad
Kontoaggregation finAPI 100% automatisch
Mieteingänge finAPI + AI 95% automatisch
SEPA-Zahlungen finAPI PIS 100% automatisch
B2B Rechnungen EDI (EDIFACT) 100% automatisch
Bonitätsprüfung finAPI KYC 100% automatisch
Fallback FinTS/HBCI Manuell

Architektur: 3-Schichten Banking

┌─────────────────────────────────────────────────────────────────┐
│                    BANKING INTEGRATION LAYER                     │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  SCHICHT 1: finAPI (Primär)                             │   │
│  │  ├─ Open Banking API (PSD2)                             │   │
│  │  ├─ Data Intelligence (AI-Kategorisierung)              │   │
│  │  ├─ Payment Initiation (SEPA)                           │   │
│  │  ├─ KYC/Identitätsprüfung                               │   │
│  │  └─ 3000+ Banken in 9 EU-Ländern                        │   │
│  └─────────────────────────────────────────────────────────┘   │
│                           ↓ FALLBACK                            │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  SCHICHT 2: FinTS/HBCI (Fallback DE)                    │   │
│  │  └─ Direktverbindung für Spezialfälle                   │   │
│  └─────────────────────────────────────────────────────────┘   │
│                           ↓ B2B                                 │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  SCHICHT 3: EDI (B2B-Automatisierung)                   │   │
│  │  ├─ EDIFACT (ORDERS, INVOIC, DESADV)                    │   │
│  │  └─ Targobank, Commerzbank, etc.                        │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

🌟 finAPI (Primäre Lösung)

Warum finAPI?

Vorteil Details
BaFin-lizenziert PSD2 ZAD + AIS
100+ Mio. Konten Erreichbar in Europa
20+ Mio. API Calls/Tag Hochskalierbar
7+ Mrd. € monatlich Zahlungsvolumen
TÜV-zertifiziert Höchste Sicherheit
30 Tage kostenlos Test-Account

finAPI Produktmodule

┌────────────────────────────────────────────────────────────────┐
│                     finAPI PRODUCT PLATFORM                     │
├────────────────────────────────────────────────────────────────┤
│                                                                │
│  📊 OPEN BANKING (Access)                                      │
│  ├─ Konten & Depots verbinden                                  │
│  ├─ Umsätze abrufen                                            │
│  ├─ Salden in Echtzeit                                         │
│  └─ PSD2-konform ohne eigene Lizenz                            │
│                                                                │
│  🧠 DATA INTELLIGENCE                                          │
│  ├─ Transaktionskategorisierung (AI/ML)                        │
│  ├─ Cashflow-Analyse                                           │
│  ├─ Risikoanalyse                                              │
│  ├─ Vertragsidentifikation                                     │
│  └─ Kredite, Versicherungen, Energie automatisch erkannt       │
│                                                                │
│  💳 PAYMENT (PIS)                                              │
│  ├─ SEPA-Überweisung                                           │
│  ├─ SEPA-Lastschrift                                           │
│  ├─ Sammelzahlungen                                            │
│  ├─ Terminüberweisungen                                        │
│  ├─ Daueraufträge                                              │
│  └─ Instant Payments (Echtzeit)                                │
│                                                                │
│  🔐 KYC (GiroIdent)                                            │
│  ├─ Namensabgleich                                             │
│  ├─ Altersverifikation                                         │
│  ├─ Adressverifikation                                         │
│  └─ GwG-konforme Identifikation                                │
│                                                                │
└────────────────────────────────────────────────────────────────┘

finAPI Endpoints

Open Banking (Account Information)

Methode Endpunkt Beschreibung Cache TTL
POST /api/banking/finapi/connect Bank verbinden -
GET /api/banking/finapi/accounts Alle Konten 15 min
GET /api/banking/finapi/accounts/:id Kontodetails 15 min
GET /api/banking/finapi/accounts/:id/balance Kontostand 5 min
GET /api/banking/finapi/transactions Umsätze 5 min
POST /api/banking/finapi/sync Aktualisierung -

Data Intelligence

Methode Endpunkt Beschreibung Cache TTL
GET /api/banking/finapi/categorize Kategorisierung 1h
GET /api/banking/finapi/cashflow Cashflow-Analyse 1h
GET /api/banking/finapi/contracts Vertragsidentifikation 24h
GET /api/banking/finapi/risk-score Risikoanalyse 24h

Payment Initiation

Methode Endpunkt Beschreibung Cache TTL
POST /api/banking/finapi/payment/sepa SEPA-Überweisung -
POST /api/banking/finapi/payment/batch Sammelüberweisung -
POST /api/banking/finapi/payment/instant Echtzeit-Überweisung -
POST /api/banking/finapi/payment/standing Dauerauftrag -
GET /api/banking/finapi/payment/:id Zahlungsstatus 1 min

KYC (Know Your Customer)

Methode Endpunkt Beschreibung Cache TTL
POST /api/banking/finapi/kyc/verify-name Namensabgleich -
POST /api/banking/finapi/kyc/verify-age Altersverifikation -
POST /api/banking/finapi/kyc/verify-address Adressverifikation -
POST /api/banking/finapi/kyc/full Vollständige KYC -

finAPI Code-Beispiele

// finAPI Client Setup
import { FinAPI } from '@finapi/client';

const finapi = new FinAPI({
  clientId: process.env.FINAPI_CLIENT_ID,
  clientSecret: process.env.FINAPI_CLIENT_SECRET,
  environment: 'sandbox', // 'sandbox' | 'production'
});

// 1. User registrieren
const user = await finapi.users.create({
  email: 'user@example.com',
  password: 'secure-password',
  isAutoUpdateEnabled: true,
});

// 2. Bank verbinden (OAuth Flow)
const bankConnection = await finapi.bankConnections.import({
  bankId: 277672, // Targobank
});

// Redirect User zur Bank-Authentifizierung
const redirectUrl = bankConnection.redirectUrl;

// 3. Nach Callback: Konten abrufen
const accounts = await finapi.accounts.getAll();

for (const account of accounts) {
  console.log(`${account.accountName}: ${account.balance} EUR`);
}

// 4. Transaktionen mit AI-Kategorisierung
const transactions = await finapi.transactions.getAll({
  accountIds: [accounts[0].id],
  minBankBookingDate: '2024-12-01',
  maxBankBookingDate: '2024-12-31',
});

for (const tx of transactions) {
  console.log(`${tx.valueDate}: ${tx.amount} EUR`);
  console.log(`  Kategorie: ${tx.category?.name}`);
  console.log(`  Vertrag erkannt: ${tx.contract?.name || 'Nein'}`);
}

// 5. SEPA-Zahlung auslösen
const payment = await finapi.payments.createSinglePayment({
  accountId: accounts[0].id,
  recipient: 'Handwerker GmbH',
  recipientIban: 'DE89370400440532013000',
  amount: 500.00,
  purpose: 'Reparatur Heizung WE 3',
});

// Redirect zur TAN-Eingabe
const tanUrl = payment.redirectUrl;

finAPI Verfügbare Länder

Land Banken Status
🇩🇪 Deutschland 3000+ ✅ Vollständig
🇦🇹 Österreich 500+ ✅ Vollständig
🇨🇭 Schweiz 300+ ✅ Vollständig
🇳🇱 Niederlande 50+ ✅ Vollständig
🇧🇪 Belgien 30+ ✅ Vollständig
🇫🇷 Frankreich 100+ ✅ Vollständig
🇪🇸 Spanien 50+ ✅ Vollständig
🇮🇹 Italien 50+ ✅ Vollständig
🇬🇧 UK 100+ 🔄 In Arbeit

📄 EDI Integration (B2B-Automatisierung)

Was ist EDI?

EDI (Electronic Data Interchange) = Automatischer B2B-Dokumentenaustausch

┌─────────────────────────────────────────────────────────────────┐
│                     EDI DOKUMENTENFLUSS                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  MATRIX Platform ──── EDI Gateway ──── Handelspartner           │
│       │                    │                 │                  │
│       ▼                    ▼                 ▼                  │
│  ┌─────────┐        ┌──────────────┐   ┌──────────────┐        │
│  │ Rechnung│  ────► │   INVOIC     │ ──►│ Targobank   │        │
│  │ erstellt│        │   (EDIFACT)  │   │ verarbeitet │        │
│  └─────────┘        └──────────────┘   └──────────────┘        │
│                                                                 │
│  EDIFACT Transaktionscodes:                                     │
│  ├─ ORDERS  → Bestellung                                        │
│  ├─ ORDRSP  → Bestellbestätigung                                │
│  ├─ DESADV  → Lieferavis                                        │
│  └─ INVOIC  → Rechnung                                          │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

EDI Endpoints

Methode Endpunkt Beschreibung Format
POST /api/banking/edi/invoice Rechnung senden EDIFACT
POST /api/banking/edi/order Bestellung senden EDIFACT
GET /api/banking/edi/inbox Eingegangene Dokumente EDIFACT
POST /api/banking/edi/acknowledge Empfang bestätigen ORDRSP

EDI Provider

Provider Beschreibung Targobank Preis
TrueCommerce Full EDI Suite €€€
SEEBURGER Enterprise EDI €€€€
ecosio Cloud EDI €€
Comarch SMB EDI €€

EDI Code-Beispiel

// EDIFACT Invoice erstellen
interface EDIInvoice {
  messageType: 'INVOIC';
  sender: string;
  receiver: string;
  invoiceNumber: string;
  invoiceDate: string;
  lineItems: EDILineItem[];
  totalAmount: number;
}

async function sendEDIInvoice(invoice: EDIInvoice) {
  // 1. EDIFACT Nachricht generieren
  const edifact = new EDIFACT();

  const message = edifact.createMessage('INVOIC', {
    UNH: { messageRef: invoice.invoiceNumber },
    BGM: { documentType: '380', documentNumber: invoice.invoiceNumber },
    DTM: { dateType: '137', date: invoice.invoiceDate },
    NAD: [
      { qualifier: 'BY', partyId: invoice.receiver }, // Käufer (Targobank)
      { qualifier: 'SE', partyId: invoice.sender },   // Verkäufer (wir)
    ],
    LIN: invoice.lineItems.map((item, idx) => ({
      lineNumber: idx + 1,
      productId: item.sku,
      quantity: item.quantity,
      price: item.unitPrice,
    })),
    MOA: { amount: invoice.totalAmount, currency: 'EUR' },
  });

  // 2. An EDI Gateway senden
  const response = await fetch('https://edi.truecommerce.com/api/send', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.EDI_API_KEY}`,
      'Content-Type': 'application/edifact',
    },
    body: message.toString(),
  });

  return response.json();
}

FinTS/HBCI (Direkt zur Bank)

Installation

npm install fints-hbci @types/fints-hbci
# ODER Python-basiert
pip install fints

FinTS Endpoints

Methode Endpunkt Beschreibung Cache TTL
POST /api/banking/fints/connect Bank-Dialog starten -
POST /api/banking/fints/tan-submit TAN übermitteln -
GET /api/banking/fints/accounts Kontenliste 1h
GET /api/banking/fints/statements Umsatzabfrage 5 min
POST /api/banking/fints/transfer SEPA-Überweisung -

FinTS-Dialog Flow

┌─────────────────────────────────────────────────────────────────┐
│  1. Synchronisierung (Bank-Parameter abrufen)                   │
│      ↓                                                           │
│  2. Dialog initialisieren (BLZ, User-ID, PIN)                   │
│      ↓                                                           │
│  3. TAN-Verfahren wählen (pushTAN, chipTAN, smsTAN)             │
│      ↓                                                           │
│  4. Geschäftsvorfall senden (Umsätze, Salden, etc.)             │
│      ↓                                                           │
│  5. TAN anfordern und eingeben (für Transaktionen)              │
│      ↓                                                           │
│  6. Dialog beenden                                               │
└─────────────────────────────────────────────────────────────────┘

Python FinTS Beispiel

from fints.client import FinTS3PinTanClient
import logging

# FinTS Setup für Targo Bank
client = FinTS3PinTanClient(
    bank_identifier="30020900",  # Targo BLZ
    user_id="MEIN_LOGIN",        # Online-Banking User
    pin="MEIN_PIN",              # PIN
    server="https://fints.targobank.de/fints"
)

# Konten abrufen
accounts = client.get_sepa_accounts()
for acc in accounts:
    print(f"IBAN: {acc.iban}, BIC: {acc.bic}")

# Umsätze der letzten 30 Tage
from datetime import date, timedelta
start_date = date.today() - timedelta(days=30)
transactions = client.get_transactions(accounts[0], start_date, date.today())

for tx in transactions:
    print(f"{tx.data['date']}: {tx.data['amount']} EUR - {tx.data['purpose']}")

# Saldo abrufen
balance = client.get_balance(accounts[0])
print(f"Kontostand: {balance.amount} EUR")

TAN-Handling

// Backend TAN Challenge Handler
interface FinTSTanChallenge {
  challengeId: string;
  tanMethod: 'pushTAN' | 'smsTAN' | 'chipTAN' | 'photoTAN';
  challengeData?: string;  // HHD-String für chipTAN/photoTAN
  message: string;
}

// 1. Transaktion startet
const result = await fintsClient.initiateTransfer({
  iban: 'DE89370400440532013000',
  bic: 'COBADEFFXXX',
  amount: 500.00,
  recipient: 'Handwerker GmbH',
  reference: 'Reparatur Heizung WE 3'
});

// 2. TAN angefordert
if (result.tanRequired) {
  const challenge: FinTSTanChallenge = result.challenge;

  // An Frontend senden
  socket.emit('tan-challenge', {
    challengeId: challenge.challengeId,
    method: challenge.tanMethod,
    message: challenge.message,
    // Für chipTAN/photoTAN:
    flickerCode: challenge.challengeData
  });
}

// 3. TAN von User empfangen
socket.on('tan-response', async (data) => {
  const confirmed = await fintsClient.submitTan(
    data.challengeId,
    data.tan
  );

  if (confirmed.success) {
    // Transaktion ausgeführt
    emit('transfer-success', confirmed.transactionId);
  }
});

FinTS Bank-Liste (Wichtigste)

const FINTS_BANKS = {
  'targobank': {
    blz: '30020900',
    url: 'https://fints.targobank.de/fints',
    version: 'FinTS 3.0',
    tanMethods: ['pushTAN', 'smsTAN']
  },
  'commerzbank': {
    blz: '50040000',
    url: 'https://fints.commerzbank.de/fints',
    version: 'FinTS 3.0',
    tanMethods: ['photoTAN', 'pushTAN']
  },
  'ing': {
    blz: '50010517',
    url: 'https://fints.ing-diba.de/fints',
    version: 'FinTS 3.0',
    tanMethods: ['App-TAN', 'iTAN']
  },
  'dkb': {
    blz: '12030000',
    url: 'https://fints.dkb.de/fints',
    version: 'FinTS 3.0',
    tanMethods: ['chipTAN', 'pushTAN']
  },
  'postbank': {
    blz: '10010010',
    url: 'https://fints.postbank.de/fints',
    version: 'FinTS 3.0',
    tanMethods: ['BestSign', 'mobileTAN']
  }
};

PSD2 Account Information Service (AIS)

Methode Endpunkt Beschreibung Cache TTL
GET /api/banking/accounts Alle Konten 15 min
GET /api/banking/accounts/:iban Kontodetails 15 min
GET /api/banking/accounts/:iban/balance Kontostand 5 min
GET /api/banking/accounts/:iban/transactions Umsätze 5 min

PSD2 Payment Initiation Service (PIS)

Methode Endpunkt Beschreibung Cache TTL
POST /api/banking/payments/sepa SEPA-Überweisung -
POST /api/banking/payments/sepa-batch Sammelüberweisung -
GET /api/banking/payments/:id Zahlungsstatus 1 min
DELETE /api/banking/payments/:id Zahlung stornieren -
Methode Endpunkt Beschreibung Cache TTL
POST /api/banking/consents Zugang beantragen -
GET /api/banking/consents/:id Consent Status -
DELETE /api/banking/consents/:id Zugang widerrufen -

Authentifizierungsflow

┌─────────────────────────────────────────────────────────────────┐
│  1. User initiiert Bankverbindung                                │
│      ↓                                                           │
│  2. Redirect zur Bank (Targo Online-Banking)                     │
│      ↓                                                           │
│  3. User authentifiziert sich (Username + PIN)                   │
│      ↓                                                           │
│  4. Bank fordert TAN (SMS, pushTAN, chipTAN)                     │
│      ↓                                                           │
│  5. User gibt TAN ein                                            │
│      ↓                                                           │
│  6. Bank erteilt Consent (90 Tage gültig)                        │
│      ↓                                                           │
│  7. Access Token für API-Zugriff                                 │
└─────────────────────────────────────────────────────────────────┘

Request-Beispiel

// GET /api/banking/accounts/DE89370400440532013000/transactions
const response = await fetch('/api/banking/accounts/DE89370400440532013000/transactions?from=2024-12-01&to=2024-12-30', {
  headers: {
    'Authorization': `Bearer ${bankingToken}`,
    'X-Request-ID': crypto.randomUUID()
  }
});

// Response
{
  "account": {
    "iban": "DE89370400440532013000",
    "bic": "COBADEFFXXX",
    "name": "Hausverwaltung GmbH",
    "currency": "EUR"
  },
  "balance": {
    "available": 45678.90,
    "booked": 45123.45,
    "date": "2024-12-30"
  },
  "transactions": [
    {
      "id": "txn-001",
      "date": "2024-12-28",
      "valueDate": "2024-12-28",
      "amount": 850.00,
      "currency": "EUR",
      "type": "CREDIT",
      "creditor": {
        "name": "Max Mustermann",
        "iban": "DE12345678901234567890"
      },
      "reference": "Miete Januar 2025 Wohnung 3A",
      "category": "RENT_INCOME"
    },
    {
      "id": "txn-002",
      "date": "2024-12-27",
      "amount": -1250.00,
      "type": "DEBIT",
      "debtor": {
        "name": "Stadtwerke München",
        "iban": "DE98765432109876543210"
      },
      "reference": "NK-Abschlag Dezember 2024",
      "category": "UTILITIES"
    }
  ],
  "cached": true,
  "cacheAge": 120000
}

Automatische Mietzuordnung

// Incoming transaction webhook
interface RentTransaction {
  transactionId: string;
  amount: number;
  reference: string;
  creditorName: string;
  creditorIban: string;
  date: string;
}

// Auto-matching logic
async function matchRentPayment(tx: RentTransaction) {
  // 1. Suche Mieter nach IBAN
  let tenant = await findTenantByIban(tx.creditorIban);

  // 2. Fallback: Suche nach Name
  if (!tenant) {
    tenant = await findTenantByName(tx.creditorName);
  }

  // 3. Fallback: Suche nach Referenz (Wohnungsnummer)
  if (!tenant) {
    const unitMatch = tx.reference.match(/Wohnung\s+(\w+)/i);
    if (unitMatch) {
      tenant = await findTenantByUnit(unitMatch[1]);
    }
  }

  if (tenant) {
    await recordRentPayment({
      tenantId: tenant.id,
      amount: tx.amount,
      date: tx.date,
      transactionId: tx.transactionId,
      status: 'MATCHED'
    });
  } else {
    await flagForManualReview(tx);
  }
}

TypeScript Types

interface BankAccount {
  iban: string;
  bic: string;
  name: string;
  currency: 'EUR';
  type: 'CURRENT' | 'SAVINGS' | 'DEPOSIT';
  balance: BankBalance;
}

interface BankBalance {
  available: number;
  booked: number;
  pending?: number;
  date: string;
}

interface BankTransaction {
  id: string;
  date: string;
  valueDate: string;
  amount: number;
  currency: string;
  type: 'CREDIT' | 'DEBIT';
  creditor?: BankParty;
  debtor?: BankParty;
  reference: string;
  category?: TransactionCategory;
  status: 'BOOKED' | 'PENDING';
}

interface BankParty {
  name: string;
  iban?: string;
  bic?: string;
}

type TransactionCategory = 
  | 'RENT_INCOME'
  | 'RENT_PAYMENT'
  | 'UTILITIES'
  | 'MAINTENANCE'
  | 'INSURANCE'
  | 'TAX'
  | 'OTHER';

interface SepaPayment {
  creditorName: string;
  creditorIban: string;
  amount: number;
  currency: 'EUR';
  reference: string;
  executionDate?: string;
}

Compliance

Anforderung Status
PSD2 ✅ EU-reguliert
GDPR ✅ Datenschutz konform
PCI-DSS ✅ Keine Kartendaten
BaFin ⚠️ Prüfen bei PIS

Multi-Banking Provider

Für einfachere PSD2-Integration empfehlen wir einen Aggregator:

Provider Banks PSD2 FinTS Preis
finAPI 3000+ €€
Tink 3400+ €€€
Plaid 2500+ €€€
figo 3000+ €€

💡 Empfehlung: finAPI für DE (FinTS-Fallback inklusive)


Umgebungsvariablen

# ═══════════════════════════════════════════════════════════════
# finAPI (PRIMÄR - Empfohlen)
# ═══════════════════════════════════════════════════════════════
FINAPI_CLIENT_ID="your-client-id"
FINAPI_CLIENT_SECRET="your-client-secret"
FINAPI_ENVIRONMENT="sandbox"              # sandbox | production
FINAPI_REDIRECT_URI="https://app.example.com/banking/callback"
FINAPI_DATA_INTELLIGENCE="true"           # AI-Kategorisierung
FINAPI_KYC_ENABLED="true"                 # GiroIdent

# ═══════════════════════════════════════════════════════════════
# FinTS/HBCI (Fallback DE)
# ═══════════════════════════════════════════════════════════════
FINTS_BANK_BLZ="30020900"                 # Targo Bank
FINTS_USER_ID="ONLINE_BANKING_LOGIN"
FINTS_PIN="ENCRYPTED_PIN"                 # ⚠️ Verschlüsselt speichern!
FINTS_ENDPOINT="https://fints.targobank.de/fints"

# Optional: Second Bank
FINTS_SECONDARY_BLZ=""
FINTS_SECONDARY_USER=""

# ═══════════════════════════════════════════════════════════════
# EDI (B2B-Automatisierung)
# ═══════════════════════════════════════════════════════════════
EDI_PROVIDER="truecommerce"               # truecommerce | seeburger | ecosio
EDI_API_KEY="your-edi-api-key"
EDI_PARTNER_ID="TARGOBANK-AG"             # Trading Partner ID
EDI_SENDER_ID="YOUR-GLN"                  # Ihre GLN/ILN Nummer
EDI_FORMAT="EDIFACT"                      # EDIFACT | X12 | XML

# ═══════════════════════════════════════════════════════════════
# Feature Flags
# ═══════════════════════════════════════════════════════════════
BANKING_MODE="finapi"                     # finapi | fints | dual
BANKING_AUTO_MATCH="true"                 # Auto-Mietzuordnung
BANKING_AI_CATEGORIZATION="true"          # finAPI Data Intelligence
BANKING_KYC_REQUIRED="false"              # Vor Vertragsabschluss
BANKING_EDI_ENABLED="true"                # B2B-Rechnungen

Provider-Vergleich (Vollständig)

Feature finAPI FinTS EDI Tink Plaid
Open Banking
Banken DE 3000+ 3000+ N/A 1000+ 500+
Banken EU 9 Länder N/A 15 Länder 10 Länder
AI-Kategorisierung
Zahlungen (PIS) ⚠️
Instant Payment ⚠️
KYC/Ident ⚠️ ⚠️
B2B-Rechnungen
BaFin-Lizenz N/A N/A
Preis €€ Kostenlos €€€ €€€ €€€

💡 Empfehlung: - Consumer/SMB: finAPI (All-in-One) - Enterprise B2B: finAPI + EDI - DE-Only Budget: FinTS


Automatisierungs-Matrix

Prozess Ohne Integration Mit finAPI Mit finAPI + EDI
Kontostand prüfen Manuell (5 min) Automatisch Automatisch
Mieteingänge Manuell (30 min/Tag) 95% automatisch 95% automatisch
Rechnungen erstellen Manuell (15 min) Manuell 100% automatisch
Rechnungen versenden Email/Post Email/Post EDI (sofort)
Zahlungen ausführen Online-Banking API (1 Click) API (1 Click)
Bonitätsprüfung Schufa (€3+) finAPI KYC finAPI KYC
Vertragsidentifikation Manuell AI erkannt AI erkannt

Zeitersparnis: ~5 Stunden/Woche bei 50 Mieteinheiten


Wann welche Technologie?

Use Case Empfehlung Grund
Entwicklung/Test finAPI Sandbox Kostenlos, schnell
Production finAPI BaFin-konform, skalierbar
Multi-Banking finAPI Unified API
EU-Banken finAPI Einzige Option
B2B-Rechnungen EDI Automatisiert
Großkunden finAPI + EDI Maximum Automatisierung
Budget-Option FinTS Kostenlos (nur DE)

Rate Limits

Typ Limit Window
Balance 4/Tag Per Consent
Transactions 4/Tag Per Consent
Payments 10/Tag Per Account

⚠️ PSD2 reguliert: Max 4 Abrufe pro Tag ohne aktive User-Interaktion

💡 FinTS hat keine offiziellen Rate Limits, aber Banken können blockieren bei zu vielen Anfragen.


Sicherheitshinweise

Credential Storage

  • NIEMALS PIN/TAN im Klartext speichern
  • Nutze crypto.createCipheriv() oder HSM
  • Session-Keys nach Dialog löschen
  • Consent-Tokens sicher verwalten

PCI-DSS nicht erforderlich

Banking-APIs handhaben keine Kartendaten. DSGVO/GDPR ist Hauptanforderung.


Ressource URL
finAPI Dokumentation docs.finapi.io
finAPI Demo Widgets finapi.io/widgets
finAPI Test Account finapi.io/jetzt-testen
TrueCommerce EDI truecommerce.com
Targobank EDI truecommerce.com/de/trading-partner/targobank-ag
FinTS Spezifikation hbci-zka.de

finAPI: Universal & BaFin-lizenziert | FinTS: Kostenlos & DE-only | EDI: B2B-Automatisierung