Zum Hauptinhalt springen

Rechnungsstellung

[billing] [admin]

Stripe-Connect-basierte Abrechnung — licensio = Plattform, Tenants = Connected Accounts. 1 % Plattformgebühr pro Transaktion. Stripe Tax automatisch.

Für wen

Admins. Der Tab "Rechnungsstellung" sammelt alle Daten, die Stripe für korrekte Rechnungen, MwSt, Zahlungs-Abwicklung braucht.

Was du einstellst

Rechtlicher Name + Rechtsform

  • z.B. "Plant Technology GmbH"
  • Wird in Stripe als business_profile.name gesetzt
  • Erscheint auf jeder Rechnung als Absender

Adresse

  • Straße, PLZ, Stadt, Land
  • Wird in Stripe als company.address versucht zu setzen (Express-Accounts akzeptieren das oft nur via Onboarding)

Steuer

  • USt-ID — wird zu Stripe-tax_ids hinzugefügt
  • Steuernummer — informativ, auf Rechnungen abgedruckt
  • Stripe Tax muss separat im Stripe-Dashboard aktiviert werden (Tab Tax → Automatic Tax ON)

Kontakt

  • E-Mail (für Stripe-Mails)
  • Telefonnummer

Eigenes Logo das auf Stripe-Rechnungen erscheint. Upload via:

  1. licensio-Storage (für Vorschau im Admin)
  2. Stripe Files API mit purpose: 'business_icon'
  3. accounts.update auf Connected Account mit settings.branding.logo

Empfohlen: PNG quadratisch, ≥256x256, < 200 KB.

Schritt für Schritt

1. Stripe-Connect aktivieren

Einstellungen → Stripe → Account anlegen → Stripe-Onboarding (Express Account). Liefert deine Bankdaten, Person-Verifikation etc.

2. Rechnungsstellung-Tab füllen

Alle Felder ausfüllen + Logo hochladen. Speichern triggert automatisch Stripe-Sync (best-effort).

3. Stripe Tax im Dashboard aktivieren

  • dashboard.stripe.com → Tax → Settings
  • Automatic Tax auf ON
  • Tax registrations → Deutschland hinzufügen
  • Firmenadresse muss vollständig sein

4. Erstes Paket testen

Pakete erstellen → bei Speichern wird Stripe-Product + Price erzeugt. Im Stripe-Dashboard sichtbar unter Products des Connected Accounts.

5. Erste Zahlung

Kunde durchläuft Stripe-Checkout (Subscription für monatliche Pakete oder Single-Charge für einmalige). Webhook-Events bestätigen Zahlung in licensio.

Stripe Tax — Logik

SenderEmpfängerUSt-IDErgebnis
DEDEbeliebig19 % MwSt
DEEUmit USt-IDReverse Charge 0 %
DEEUohne USt-IDLokaler Satz des Empfängerlandes
DENicht-EUbeliebig0 %

Stripe wendet das automatisch an, wenn automatic_tax: { enabled: true } und tax_behavior: 'exclusive' (Netto-Preise).

Webhook-Events (eingehend)

licensio empfängt von Stripe Connect via /api/stripe/webhook:

  • checkout.session.completed — Erstzahlung erfolgreich
  • setup_intent.succeeded — Payment-Method gespeichert (Flow B)
  • invoice.paid — wiederkehrende Zahlung
  • invoice.payment_failed — Zahlung gescheitert (Notification + Mahnung)
  • charge.refunded — Erstattung
  • customer.subscription.updated / .deleted — Abo-Lifecycle
  • account.updated — Connected-Account-Status

Rechnungen im Portal

Kunden sehen ihre Stripe-Rechnungen direkt im Portal-Account-Tab "Lizenz & Vertrag" → Rechnungen-Kachel mit PDF-Download (über Stripe Invoices API).

Häufige Fragen

Was ist die 1 % Plattformgebühr? licensio.io behält 1 % jeder Transaktion ein (application_fee_amount in Stripe). Der Rest geht an dich. Sichtbar in deinem Stripe-Dashboard als Application Fee.

Wer sieht meine Stripe-Daten? Nur du. licensio-Plattform-Admins haben Read-Zugriff für Support-Fälle, aber keine Modifikations-Rechte.

Was wenn der Stripe-Webhook fehlschlägt? Webhook-Endpoint mit STRIPE_WEBHOOK_SECRET validiert Signaturen. Bei Fehler retryt Stripe automatisch (~mehrere Stunden). Fehler-Logs in Vercel-Logs sichtbar.

Kann ich Rechnungen auch ohne Stripe schicken? Aktuell läuft alles über Stripe. Manuelle Rechnungsstellung (PDF generation außerhalb Stripe) ist nicht implementiert.

Reverse Charge bei EU-Kunden — wie? Stripe Tax erkennt EU-USt-IDs automatisch (validiert via VIES). Wenn Kunde im Checkout USt-ID eingibt, wird Reverse Charge angewandt. tax_id_collection ist in unseren Checkouts aktiviert.

Verwandt