n8n Finance Workflow Templates: 10 Automation-Blueprints für KMU

Production-Ready n8n-Workflows für Schweizer KMU: Invoice Automation, Expense Tracking, Bank Reconciliation, MWST-Meldung, Bexio-Integration, Self-Hosted.
Überblick
n8n = Open-Source Workflow Automation (Alternative zu Zapier, Make.com).
Vorteile:
- ✅ Self-Hosted: Daten bleiben in Schweiz (DSG/nDSG-konform)
- ✅ Kostenlos: Unlimitierte Workflows (Zapier: ab CHF 50/Monat)
- ✅ 400+ Integrationen: Bexio, Gmail, Slack, HTTP, SQL, etc.
- ✅ Code-Support: JavaScript, Python (für komplexe Logik)
Dieser Guide liefert 10 Production-Ready Workflows für Schweizer KMU:
- Invoice Automation (E-Mail → Bexio)
- Expense Tracking (Receipt → OCR → Bexio)
- Bank Reconciliation (EBICS → Bexio)
- MWST-Meldung (automatische Quartalsabrechnung)
- Payment Reminder (überfällige Rechnungen)
- Cash Flow Forecast (wöchentlicher Report)
- Client Onboarding (Neuer Kunde → Bexio + CRM)
- Payroll Automation (Lohnzettel generieren)
- Compliance Alert (FINMA-Meldepflicht prüfen)
- Dashboard Reporting (Slack/E-Mail-Zusammenfassung)
1. n8n Installation (Self-Hosted)
Option A: Docker Compose (empfohlen)
1.1 docker-compose.yml
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=your_secure_password
- N8N_HOST=n8n.yourcompany.com
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://n8n.yourcompany.com/
- GENERIC_TIMEZONE=Europe/Zurich
volumes:
- n8n_data:/home/node/.n8n
postgres:
image: postgres:15
restart: always
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=n8n_password
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
n8n_data:
postgres_data:
1.2 Starten
# Starten
docker-compose up -d
# Logs prüfen
docker-compose logs -f n8n
# Öffnen: http://localhost:5678
Option B: n8n Cloud (CHF 20/Monat, hosted by n8n.io)
- Schnellster Start (kein Setup)
- Aber: Daten in EU (nicht Schweiz)
2. Bexio-Credentials einrichten
n8n → Credentials → New Credential → Bexio OAuth2 API
Angaben:
- Client ID: (von Bexio Developer Portal)
- Client Secret: (von Bexio Developer Portal)
- Redirect URL:
https://n8n.yourcompany.com/rest/oauth2-credential/callback
OAuth-Flow durchführen → Bexio-Zugriff autorisieren
3. Workflow Templates
Template 1: Invoice Automation (E-Mail → Bexio)
Trigger: Neue E-Mail mit PDF-Anhang
Workflow:
1. Gmail Trigger (neue E-Mail mit "Rechnung" im Betreff)
2. Extract Attachment (PDF speichern)
3. HTTP Request: GPT-4 Vision API (PDF → JSON: Lieferant, Betrag, Datum)
4. Bexio: Lieferant suchen (oder erstellen)
5. Bexio: Kreditorenrechnung erstellen
6. Slack: Benachrichtigung "Neue Rechnung in Bexio erfasst"
n8n JSON (Import-Ready):
{
"nodes": [
{
"parameters": {
"pollTimes": {"item": [{"mode": "everyMinute"}]},
"filters": {
"subject": "Rechnung"
}
},
"name": "Gmail Trigger",
"type": "n8n-nodes-base.gmail",
"typeVersion": 1,
"position": [250, 300]
},
{
"parameters": {
"operation": "download",
"binaryPropertyName": "attachment_0"
},
"name": "Extract Attachment",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 1,
"position": [450, 300]
},
{
"parameters": {
"url": "https://api.openai.com/v1/chat/completions",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "openAiApi",
"method": "POST",
"jsonParameters": true,
"body": {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Extract: supplier, amount, date (JSON)"},
{"type": "image_url", "image_url": {"url": "data:application/pdf;base64,{{$binary.attachment_0.data}}"}}
]
}
]
}
},
"name": "GPT-4 Vision",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 1,
"position": [650, 300]
},
{
"parameters": {
"resource": "contact",
"operation": "create",
"name": "={{$json.supplier}}"
},
"name": "Bexio Create Supplier",
"type": "n8n-nodes-base.bexio",
"typeVersion": 1,
"position": [850, 300]
},
{
"parameters": {
"resource": "bill",
"operation": "create",
"contact_id": "={{$json.id}}",
"amount": "={{$node['GPT-4 Vision'].json.amount}}"
},
"name": "Bexio Create Bill",
"type": "n8n-nodes-base.bexio",
"typeVersion": 1,
"position": [1050, 300]
},
{
"parameters": {
"channel": "#finance",
"text": "✅ Neue Rechnung: {{$node['GPT-4 Vision'].json.supplier}} (CHF {{$node['GPT-4 Vision'].json.amount}})"
},
"name": "Slack Notification",
"type": "n8n-nodes-base.slack",
"typeVersion": 1,
"position": [1250, 300]
}
],
"connections": {
"Gmail Trigger": {"main": [[{"node": "Extract Attachment", "type": "main", "index": 0}]]},
"Extract Attachment": {"main": [[{"node": "GPT-4 Vision", "type": "main", "index": 0}]]},
"GPT-4 Vision": {"main": [[{"node": "Bexio Create Supplier", "type": "main", "index": 0}]]},
"Bexio Create Supplier": {"main": [[{"node": "Bexio Create Bill", "type": "main", "index": 0}]]},
"Bexio Create Bill": {"main": [[{"node": "Slack Notification", "type": "main", "index": 0}]]}
}
}
Import: n8n → Workflows → Import from File → Paste JSON
Template 2: Expense Tracking (Receipt → Bexio)
Trigger: Foto von Beleg in Slack hochgeladen
Workflow:
1. Slack Trigger (Datei hochgeladen in #receipts)
2. Download Image
3. OCR (Tesseract oder Google Vision API): Betrag extrahieren
4. Bexio: Spesen-Kategorie klassifizieren (GPT-4)
5. Bexio: Spesen-Beleg erstellen
6. Slack: "✅ Beleg erfasst (CHF 45,50 - Büromaterial)"
ROI: 100 Belege/Monat × 3 Min = 5h gespart (CHF 425/Monat).
Template 3: Bank Reconciliation (EBICS → Bexio)
Trigger: Täglich 08:00 Uhr (Cron)
Workflow:
1. Cron Trigger (täglich 08:00)
2. HTTP Request: PostFinance EBICS API (camt.053 XML abrufen)
3. XML Parser: Transaktionen extrahieren
4. FOR EACH Transaction:
a. Bexio: Offene Rechnung suchen (QR-Referenz)
b. IF gefunden: Zahlung buchen
c. IF nicht gefunden: Slack-Alert "Unbekannte Zahlung"
5. Slack: "✅ Bank-Abgleich: 15 Zahlungen verbucht, 2 unklar"
Zeitersparnis: 30 Min/Tag → 10h/Monat gespart.
Template 4: MWST-Meldung (Automatische Quartalsabrechnung)
Trigger: Quartalsende (Cron: 31. März, 30. Juni, 30. Sept, 31. Dez)
Workflow:
1. Cron Trigger (Quartalsende)
2. Bexio API: Alle Rechnungen Q1-Q4 abrufen
3. Code Node (JavaScript):
- Umsatz berechnen (Summe aller Rechnungen)
- MwSt. berechnen (8,1% × Umsatz)
4. Generate PDF (MWST-Abrechnung)
5. E-Mail: An Steuerberater (mit PDF-Anhang)
6. Slack: "✅ MWST Q1 2026: CHF 24,300 (PDF an Steuerberater gesendet)"
JavaScript-Code (MwSt. berechnen):
// Bexio-Rechnungen (von vorherigem Node)
const invoices = $input.all();
let total_revenue = 0;
let total_vat = 0;
for (const invoice of invoices) {
const amount = invoice.json.total_gross;
const vat_rate = invoice.json.vat_rate || 8.1;
total_revenue += amount;
total_vat += (amount * vat_rate) / (100 + vat_rate);
}
return {
json: {
quarter: "Q1 2026",
total_revenue: total_revenue.toFixed(2),
total_vat: total_vat.toFixed(2),
net_revenue: (total_revenue - total_vat).toFixed(2)
}
};
Template 5: Payment Reminder (Überfällige Rechnungen)
Trigger: Täglich 10:00 Uhr
Workflow:
1. Cron Trigger (täglich 10:00)
2. Bexio API: Offene Rechnungen abrufen (Fälligkeit < heute)
3. FOR EACH Rechnung:
a. IF 7 Tage überfällig: E-Mail-Mahnung (Stufe 1, freundlich)
b. IF 30 Tage überfällig: E-Mail-Mahnung (Stufe 2, dringend)
c. IF 60 Tage überfällig: Slack-Alert an CFO (Inkasso prüfen)
4. Slack: "⚠️ 3 Rechnungen überfällig (CHF 12,500), Mahnungen versendet"
E-Mail-Template (Stufe 1):
Betreff: Zahlungserinnerung - Rechnung #{{invoice_id}}
Guten Tag {{customer_name}},
unsere Rechnung #{{invoice_id}} (CHF {{amount}}) ist seit {{days_overdue}} Tagen fällig.
Bitte überweisen Sie den Betrag auf folgendes Konto:
IBAN: CH93 0900 0000 1234 5678 9
Referenz: {{qr_reference}}
Freundliche Grüsse
{{company_name}}
Template 6: Cash Flow Forecast (Wöchentlicher Report)
Trigger: Montag 08:00 Uhr
Workflow:
1. Cron Trigger (Montag 08:00)
2. Bexio API: Offene Forderungen abrufen
3. Bexio API: Offene Verbindlichkeiten abrufen
4. Code Node: Prognose berechnen (nächste 4 Wochen)
5. Generate Chart (Matplotlib/QuickChart)
6. E-Mail: An CFO (mit Chart-Bild)
JavaScript-Code (Forecast):
const receivables = $node["Bexio Receivables"].json;
const payables = $node["Bexio Payables"].json;
// Wochenweise gruppieren
const weeks = [1, 2, 3, 4];
const forecast = weeks.map(week => {
const week_receivables = receivables.filter(r => r.week === week).reduce((sum, r) => sum + r.amount, 0);
const week_payables = payables.filter(p => p.week === week).reduce((sum, p) => sum + p.amount, 0);
return {
week: week,
receivables: week_receivables,
payables: week_payables,
net: week_receivables - week_payables
};
});
return {json: {forecast}};
Template 7: Client Onboarding (Neuer Kunde)
Trigger: Webhook (von CRM oder Formular)
Workflow:
1. Webhook Trigger (neuer Kunde)
2. Bexio: Kunde erstellen
3. Gmail: Willkommens-E-Mail senden
4. Slack: "#sales - Neuer Kunde: {{customer_name}}"
5. Google Sheets: Zeile hinzufügen (CRM-Tracking)
6. Trello: Card erstellen (Onboarding-Tasks)
Template 8: Payroll Automation (Lohnzettel)
Trigger: Monatsende (Cron: letzter Tag des Monats)
Workflow:
1. Cron Trigger (Monatsende)
2. Bexio API: Mitarbeiter-Liste abrufen
3. FOR EACH Mitarbeiter:
a. Lohn berechnen (Basis-Lohn + Überstunden)
b. PDF generieren (Lohnzettel)
c. E-Mail: An Mitarbeiter (mit PDF)
4. Slack: "✅ Lohnzettel versendet (15 Mitarbeiter)"
Template 9: Compliance Alert (FINMA-Meldepflicht)
Trigger: Täglich 09:00 Uhr
Workflow:
1. Cron Trigger (täglich 09:00)
2. SQL Query: Transaktionen > CHF 100k abrufen (PostgreSQL)
3. FOR EACH Transaktion:
a. Empfängerland prüfen (API: https://restcountries.com)
b. IF Hochrisiko-Land (Panama, Cayman): FINMA-Alert
4. E-Mail: An Compliance-Officer (Liste aller Hochrisiko-Transaktionen)
Template 10: Dashboard Reporting (Slack-Summary)
Trigger: Täglich 17:00 Uhr
Workflow:
1. Cron Trigger (täglich 17:00)
2. Bexio API: Tageszusammenfassung
- Neue Rechnungen (Anzahl, Summe)
- Zahlungseingänge (Anzahl, Summe)
- Offene Forderungen (Total)
3. Slack: Formatierte Nachricht
📊 Finance-Summary (04.02.2026)
Neue Rechnungen: 8 (CHF 12,500)
Zahlungseingänge: 12 (CHF 18,200)
Offene Forderungen: CHF 45,000
✅ Cashflow: +CHF 5,700 (positiv)
4. Kosten-Vergleich (n8n vs. Zapier)
Szenario: 10 Workflows, 10.000 Executions/Monat
n8n (Self-Hosted)
Kosten:
- Server (Hetzner Cloud CPX11): CHF 5/Monat
- Domain + SSL: CHF 2/Monat
- GESAMT: CHF 7/Monat
Zapier
Kosten:
- Professional-Plan: CHF 50/Monat (6.000 Tasks)
- Zusätzliche Tasks: 4.000 × CHF 0,01 = CHF 40/Monat
- GESAMT: CHF 90/Monat
n8n ist 92% günstiger (CHF 7 vs. CHF 90).
5. ROI-Kalkulation
Szenario: KMU automatisiert 5 Workflows (Invoice, Expense, Bank Reconciliation, Payment Reminder, Reporting).
Manuell (OHNE Automation)
Aufwand:
- Invoice Processing: 100 × 5 Min = 500 Min
- Expense Tracking: 100 × 3 Min = 300 Min
- Bank Reconciliation: 20 × 30 Min = 600 Min
- Payment Reminders: 10 × 10 Min = 100 Min
- Reporting: 4 × 2h = 480 Min
- GESAMT: 1.980 Min/Monat = 33h/Monat
- Kosten: 33h × CHF 85/h = CHF 2.805/Monat
Automation (MIT n8n)
Kosten:
- n8n Self-Hosted: CHF 7/Monat
- Entwicklung (einmalig, 24h × CHF 150/h): CHF 3.600
- Jahr 1: CHF 3.600 + CHF 84 = CHF 3.684
- Ab Jahr 2: CHF 84/Jahr
Einsparung:
- Jahr 1: CHF 33.660 (12 × CHF 2.805) - CHF 3.684 = CHF 29.976 (814% ROI)
- Jahr 2: CHF 33.660 - CHF 84 = CHF 33.576 (39.971% ROI) 🚀
Nächste Schritte
Option 1: n8n Workflow Development (CHF 3.600, 24h)
- Wir entwickeln Custom-Workflows für Ihre Anforderungen
- Inklusive: n8n-Setup (Self-Hosted), Bexio-Integration, Testing, Deployment
Option 2: Kostenlose Beratung (60 Min)
- Wir analysieren Ihre Prozesse, identifizieren Automation-Potenzial
- ROI-Berechnung: Welche Workflows lohnen sich?
Veröffentlicht: 04. Februar 2026 Autor: SwissFinanceAI Team Kategorie: Workflow Automation
References
Transparency Notice: This article may contain AI-assisted content. All citations link to verified sources. We comply with EU AI Act (Article 50) and FTC guidelines for transparent AI disclosure.


