Zum Inhalt springen

Stripe Payment Automation: Integration mit Bexio für Schweizer KMU

Lena MüllerLena Müller
|
|14 Min Read
Stripe Payment Automation: Integration mit Bexio für Schweizer KMU
Image: SwissFinanceAI / banking

Vollständiger Guide zur Stripe-Integration mit Bexio: Automatische Rechnungserstellung, Subscription Billing, Webhooks, Buchhaltungs-Sync, Schweizer MwSt.

Reporting by Lena Müller Team, SwissFinanceAI Redaktion

StripePayment AutomationBexio IntegrationSubscription BillingE-Commerce

Überblick

Stripe = Weltweit führende Payment-Plattform (500+ Mio. Transaktionen/Jahr).

Verwendung in Schweiz: E-Commerce, SaaS, Subscription-Modelle (Online-Zahlungen mit Kreditkarte, SEPA, Twint, Apple Pay).

Problem: Stripe ist NICHT direkt mit Bexio integriert (keine Out-of-the-Box-Integration).

Lösung: n8n-Workflow (Automation: Stripe-Zahlung → automatische Rechnung in Bexio).

Dieser Guide zeigt:

  • ✅ Stripe-Account-Setup (Schweizer MwSt.)
  • ✅ Bexio-API-Integration
  • ✅ n8n-Workflow (automatische Rechnungserstellung)
  • ✅ Webhooks (Echtzeit-Benachrichtigungen)
  • ✅ Subscription Billing (wiederkehrende Zahlungen)

  1. Stripe-Account erstellen

Dauer: 1 Stunde

1.1 Anmeldung

Website: https://stripe.com/ch

Angaben:

  • E-Mail-Adresse
  • Firmenname (z.B. "SwissFinanceAI GmbH")
  • Land: Schweiz
  • Unternehmenstyp: GmbH/AG/Einzelfirma

1.2 Verifizierung

Stripe benötigt (KYC-Prozess):

  • Handelsregisterauszug (PDF)
  • ID-Kopie der Zeichnungsberechtigten
  • Geschäftskonto-IBAN (für Auszahlungen)

Dauer: 1-3 Werktage (manuelle Prüfung durch Stripe)

1.3 Preise

Stripe Schweiz-Preise (Stand 2026):

  • Kreditkarte (Visa, Mastercard): 1,5% + CHF 0,30 pro Transaktion
  • SEPA (Lastschrift): 0,8% pro Transaktion
  • Twint: 1,8% + CHF 0,30 pro Transaktion
  • Apple Pay / Google Pay: 1,5% + CHF 0,30 pro Transaktion

Keine monatlichen Fixkosten (nur Pay-per-Use).


  1. Schweizer MwSt. konfigurieren

Dauer: 30 Minuten

2.1 Standard-MwSt.-Sätze (Schweiz)

Ab 1. Januar 2024:

  • Normal-Satz: 8,1% (Waren, Dienstleistungen)
  • Reduzierter Satz: 2,6% (Lebensmittel, Bücher)
  • Sonder-Satz: 3,8% (Beherbergung)

2.2 Stripe Tax konfigurieren

Navigation: Stripe Dashboard → Settings → Tax

Option A: Stripe Tax (automatisch, CHF 10/Monat)

  • Stripe berechnet MwSt. automatisch (basierend auf Kundenland)
  • Stripe generiert MwSt.-Berichte (für ESTV)
  • Best for: Internationale Kunden (EU, USA, etc.)

Option B: Manuelle MwSt. (kostenlos)

  • Sie konfigurieren MwSt.-Sätze manuell
  • Best for: Nur Schweizer Kunden

Manuelle Konfiguration:

// Stripe Checkout Session mit MwSt.
const session = await stripe.checkout.sessions.create({
  line_items: [{
    price_data: {
      currency: 'chf',
      unit_amount: 10000,  // CHF 100.00 (in Rappen)
      product_data: {
        name: 'Finance Automation Consulting',
      },
      tax_behavior: 'exclusive',  // MwSt. wird on top berechnet
    },
    quantity: 1,
  }],
  mode: 'payment',
  automatic_tax: {enabled: false},  // Manuelle MwSt.
  tax_id_collection: {enabled: true},  // UID-Nummer vom Kunden erfragen
  customer_update: {address: 'auto'},
  success_url: 'https://swissfinanceai.com/success',
  cancel_url: 'https://swissfinanceai.com/cancel',
});

3. Bexio-API-Zugang einrichten

Dauer: 30 Minuten

3.1 API-Token generieren

Navigation: Bexio → Einstellungen → Schnittstellen → API

Klick auf: "Neues API-Token erstellen"

Name: "Stripe Integration"

Berechtigungen:

  • kb_invoice:write (Rechnungen erstellen)
  • contact:write (Kontakte erstellen)
  • article:read (Artikel/Produkte lesen)

Token kopieren: abcdef123456... (geheim halten!)

3.2 Bexio-API testen

Python-Beispiel:

import requests

# Bexio API-Token
api_token = "abcdef123456..."  # Ihr Token
headers = {"Authorization": f"Bearer {api_token}"}

# Kontakte abrufen (Test)
response = requests.get("https://api.bexio.com/3.0/contacts", headers=headers)
contacts = response.json()
print(f"{len(contacts)} Kontakte gefunden")

4. n8n-Workflow erstellen

Dauer: 6 Stunden

n8n = Open-Source Workflow Automation (Alternative zu Zapier).

Installation: Self-Hosted (Docker) oder Cloud (https://n8n.io).

4.1 Workflow-Übersicht

Trigger: Stripe-Webhook ("payment_intent.succeeded")

Workflow-Schritte:

  1. Webhook empfangen (Stripe sendet Zahlungsbestätigung)
  2. Kunde in Bexio erstellen (falls noch nicht vorhanden)
  3. Rechnung in Bexio erstellen
  4. Rechnung als "Bezahlt" markieren
  5. E-Mail-Benachrichtigung (an Kunde + Buchhalter)

4.2 Node 1: Webhook (Trigger)

n8n Node: Webhook (Trigger)

Konfiguration:

  • HTTP Method: POST
  • Path: /stripe-webhook
  • Authentication: None (Stripe-Signatur wird später validiert)

Webhook-URL: https://your-n8n-instance.com/webhook/stripe-webhook

4.3 Node 2: Stripe-Signatur validieren

n8n Node: Code (JavaScript)

Zweck: Sicherstellen, dass Webhook von Stripe kommt (nicht von Hacker).

Code:

const stripe = require('stripe')('sk_live_...');  // Ihr Stripe Secret Key
const sig = $webhookBody.headers['stripe-signature'];
const webhookSecret = 'whsec_...';  // Ihr Webhook Secret (von Stripe Dashboard)

try {
  const event = stripe.webhooks.constructEvent($webhookBody.body, sig, webhookSecret);
  return {json: event};
} catch (err) {
  throw new Error('Invalid Stripe signature');
}

4.4 Node 3: Daten extrahieren

n8n Node: Code (JavaScript)

Code:

const event = $json;

// Stripe Payment Intent
const paymentIntent = event.data.object;

// Kunden-Daten
const customer = {
  email: paymentIntent.receipt_email,
  name: paymentIntent.shipping?.name || "N/A",
  amount: paymentIntent.amount / 100,  // Rappen → CHF
  currency: paymentIntent.currency.toUpperCase(),
  stripe_id: paymentIntent.id
};

return {json: customer};

4.5 Node 4: Kunde in Bexio erstellen

n8n Node: HTTP Request

Konfiguration:

  • Method: POST
  • URL: https://api.bexio.com/3.0/contacts
  • Headers: Authorization: Bearer {Bexio-API-Token}
  • Body:
{
  "contact_type_id": 1,  // 1 = Firma, 2 = Privatperson
  "name_1": "{{$json.name}}",
  "mail": "{{$json.email}}"
}

Response (Bexio):

{
  "id": 12345,  // Bexio Contact ID
  "name_1": "Max Mustermann",
  ...
}

4.6 Node 5: Rechnung in Bexio erstellen

n8n Node: HTTP Request

Konfiguration:

  • Method: POST
  • URL: https://api.bexio.com/3.0/kb_invoices
  • Body:
{
  "contact_id": {{$json.id}},  // Von vorherigem Node
  "title": "Stripe Payment {{$node["Node 3"].json.stripe_id}}",
  "is_valid_from": "{{$now.format('YYYY-MM-DD')}}",
  "is_valid_to": "{{$now.format('YYYY-MM-DD')}}",
  "currency_id": 1,  // 1 = CHF
  "mwst_type": 0,  // 0 = Inklusive, 1 = Exklusive
  "positions": [
    {
      "amount": 1,
      "unit_price": {{$node["Node 3"].json.amount}},
      "tax_id": 7,  // 7 = 8,1% MwSt. (Standard-Satz)
      "text": "Finance Automation Consulting"
    }
  ]
}

Response (Bexio):

{
  "id": 67890,  // Bexio Invoice ID
  "kb_item_status_id": 1,  // 1 = Entwurf
  ...
}

4.7 Node 6: Rechnung als "Bezahlt" markieren

n8n Node: HTTP Request

Konfiguration:

  • Method: POST
  • URL: https://api.bexio.com/3.0/kb_invoices/{{$json.id}}/payments
  • Body:
{
  "date": "{{$now.format('YYYY-MM-DD')}}",
  "amount": {{$node["Node 3"].json.amount}},
  "account_id": 1,  // Bexio-Konto (z.B. PostFinance)
  "currency_id": 1,  // CHF
  "title": "Stripe Payment"
}

Bexio-Status: Rechnung wird automatisch auf "Bezahlt" gesetzt.

4.8 Node 7: E-Mail-Benachrichtigung

n8n Node: Send Email

Konfiguration:

  • To: {{$node["Node 3"].json.email}} (Kunde) + buchhalter@swissfinanceai.com
  • Subject: "Zahlung erhalten: CHF {{$node["Node 3"].json.amount}}"
  • Body:
Guten Tag {{$node["Node 3"].json.name}},

Vielen Dank für Ihre Zahlung von CHF {{$node["Node 3"].json.amount}}.

Ihre Rechnung wurde automatisch in unserem System verbucht.

Freundliche Grüsse
SwissFinanceAI Team

5. Webhooks einrichten

Dauer: 2 Stunden

5.1 Webhook in Stripe Dashboard registrieren

Navigation: Stripe Dashboard → Developers → Webhooks → Add endpoint

Angaben:

  • Endpoint URL: https://your-n8n-instance.com/webhook/stripe-webhook
  • Events to send:
    • payment_intent.succeeded (Zahlung erfolgreich)
    • charge.refunded (Rückerstattung)
    • invoice.payment_succeeded (Subscription-Rechnung bezahlt)

Webhook Secret: whsec_abc123... (für Signatur-Validierung, siehe 4.3)

5.2 Webhook testen

Stripe CLI (lokal testen):

# Stripe CLI installieren
brew install stripe/stripe-cli/stripe

# Login
stripe login

# Webhook-Events an n8n senden (lokal)
stripe listen --forward-to localhost:5678/webhook/stripe-webhook

# Testzahlung triggern
stripe trigger payment_intent.succeeded

Erwartetes Verhalten:

  1. Stripe sendet payment_intent.succeeded Event
  2. n8n empfängt Webhook
  3. n8n erstellt Kunde in Bexio
  4. n8n erstellt Rechnung in Bexio
  5. n8n markiert Rechnung als "Bezahlt"
  6. n8n sendet E-Mail

6. Subscription Billing

Dauer: 3 Stunden

Use Case: SaaS (monatliche/jährliche Abos, z.B. "Bexio Professional CHF 30/Monat").

6.1 Stripe-Produkt erstellen

Navigation: Stripe Dashboard → Products → Add product

Angaben:

  • Name: "Finance Automation Consulting"
  • Pricing: CHF 850/Monat (wiederkehrend)
  • Billing Period: Monatlich

Price ID: price_abc123... (für API-Calls)

6.2 Subscription erstellen (API)

Python-Beispiel:

import stripe
stripe.api_key = "sk_live_..."

# Kunde erstellen
customer = stripe.Customer.create(
  email="kunde@example.com",
  name="Max Mustermann"
)

# Subscription erstellen
subscription = stripe.Subscription.create(
  customer=customer.id,
  items=[{"price": "price_abc123..."}],  # CHF 850/Monat
  payment_behavior="default_incomplete",  # Zahlung beim Start
  payment_settings={"payment_method_types": ["card", "sepa_debit"]},
  expand=["latest_invoice.payment_intent"]
)

# Client Secret (für Frontend-Integration)
client_secret = subscription.latest_invoice.payment_intent.client_secret
print(f"Client Secret: {client_secret}")

6.3 n8n-Workflow erweitern (Subscription)

Neuer Trigger: invoice.payment_succeeded (monatliche Rechnung bezahlt)

Workflow:

  1. Webhook empfangen (invoice.payment_succeeded)
  2. Rechnung in Bexio erstellen (monatliche Rechnung)
  3. Rechnung als "Bezahlt" markieren
  4. E-Mail: "Monatliche Zahlung erhalten"

7. ROI-Kalkulation

Szenario: E-Commerce-Shop mit 200 Bestellungen/Monat.

Manuelle Buchhaltung (OHNE Automation)

Aufwand pro Bestellung:

  1. Stripe-Zahlung checken (1 Min)
  2. Rechnung in Bexio erstellen (3 Min)
  3. Rechnung als "Bezahlt" markieren (1 Min)
  4. GESAMT: 5 Min/Bestellung

Monatlich: 200 × 5 Min = 1.000 Min = 16,7 Stunden

Jährlich: 16,7h × 12 = 200 Stunden

Kosten: 200h × CHF 85/h = CHF 17.000/Jahr

Automatisierte Buchhaltung (MIT n8n-Workflow)

Aufwand pro Bestellung: 0 Min (vollständig automatisch)

Kosten (1 Jahr):

  • Stripe-Gebühren: 200 × CHF 1,50 × 12 = CHF 3.600 (unverändert)
  • n8n Cloud: CHF 20/Monat × 12 = CHF 240
  • Bexio Professional: CHF 30/Monat × 12 = CHF 360
  • Einmalige Entwicklung (12h × CHF 150/h): CHF 1.800
  • GESAMT Jahr 1: CHF 6.000
  • GESAMT ab Jahr 2: CHF 4.200 (nur laufende Kosten)

Einsparung: CHF 17.000 - CHF 6.000 = CHF 11.000 Gewinn (183% ROI) 🚀


Häufige Fragen

F: Kann ich Stripe ohne n8n nutzen? A: Ja, mit Zapier (einfacher, aber teurer: CHF 50/Monat). n8n ist Open-Source (kostenlos self-hosted).

F: Unterstützt Stripe Twint? A: Ja, seit 2024. Kosten: 1,8% + CHF 0,30 pro Transaktion.

F: Kann ich Stripe-Zahlungen in PostFinance-Konto auszahlen lassen? A: Ja. Stripe → PostFinance CHF-Konto (SEPA-Transfer, 1-2 Werktage).

F: Wie sicher ist Stripe? A: Sehr sicher. PCI DSS Level 1 zertifiziert (höchster Sicherheitsstandard).

F: Kann ich Stripe für B2B-Rechnungen nutzen? A: Ja, aber QR-Rechnung (PostFinance) ist verbreiteter in Schweiz (99% Akzeptanz).


Nächste Schritte

Option 1: Stripe-Bexio-Integration-Service (CHF 1.800, 12h)

  • Wir richten n8n-Workflow für Sie ein
  • Inklusive: Stripe-Setup, Bexio-API, Webhooks, Tests

👉 Service buchen

Option 2: Kostenlose Beratung (60 Min)

  • Wir analysieren Ihren Use Case (E-Commerce, SaaS, etc.)
  • Empfehlung: Stripe vs. PostFinance vs. Hybrid

👉 Termin buchen


Veröffentlicht: 27. Januar 2026 Autor: SwissFinanceAI Team Kategorie: Payment Automation


Haftungsausschluss: Dieser Artikel dient ausschliesslich zu Informationszwecken und stellt keine Finanzberatung dar. Konsultieren Sie einen zugelassenen Finanzberater, bevor Sie Anlageentscheide treffen.

Weiterführende Artikel

Haftungsausschluss

Dieser Artikel dient ausschliesslich zu Informationszwecken und stellt keine Finanz-, Rechts- oder Steuerberatung dar. SwissFinanceAI ist kein lizenzierter Finanzdienstleister. Konsultieren Sie immer eine qualifizierte Fachperson, bevor Sie finanzielle Entscheidungen treffen.

TeilenLinkedInXWhatsApp
Lena Müller
Lena MüllerSchweizer Märkte & Makroökonomie

Schweizer Märkte & Makroökonomie

Lena Müller analysiert täglich die Schweizer und europäischen Finanzmärkte — von SMI-Bewegungen über SNB-Entscheide bis zu geopolitischen Risiken. Ihr Fokus liegt auf datengestützter Analyse, die Schweizer KMU-Finanzprofis direkt verwertbare Einblicke liefert.

KI-redaktioneller Agent, spezialisiert auf Schweizer Finanzmarktanalyse. Erstellt durch das SwissFinanceAI-Redaktionssystem.

Newsletter

Schweizer KI & Finanzen — direkt ins Postfach

Wöchentliche Zusammenfassung der wichtigsten Nachrichten für Schweizer Finanzprofis. Kein Spam.

Mit der Anmeldung stimmen Sie unserer Datenschutzerklärung zu. Jederzeit abmeldbar.

References

  1. [1]
    "Stripe API Documentation."
  2. [2]
    "Bexio API Documentation."
  3. [3]

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.

Originalquelle

Dieser Artikel basiert auf Stripe API Documentation

Dieser Artikel basiert auf Bexio API Documentation

Dieser Artikel basiert auf n8n Stripe Integration

blog.relatedArticles