Ein SaaS-Unternehmen in Europa hat vier Buchhaltungsprobleme, die ein Ladengeschäft oder eine Agentur nicht hat: Der Umsatz kommt herein, bevor er erwirtschaftet ist; der Zahlungsdienstleister zahlt in Sammelbeträgen aus, die zu keiner Rechnung passen; die umsatzsteuerliche Behandlung eines Abonnements hängt davon ab, wo der Kunde sitzt und ob er ein Unternehmen ist; und jede dieser Tatsachen liegt in Ihrer eigenen Datenbank statt in einer Tabellenkalkulation. Die Antwort sind nicht mehr Buchhaltungsstunden. Die Antwort ist ein Hauptbuch, das Kunden, Rechnungen und Zahlungen über eine API aus Ihrer Anwendung entgegennimmt, das steuerliche Ergebnis je Rechnung festhält und die Steuererklärung dem Fachmann überlässt.
Umsatzrealisierung: Ein Jahresabo ist kein Jahresumsatz
Wenn ein Kunde 1.200 € für ein Jahr im Voraus zahlt, haben Sie 1.200 € Geld und 1.200 € einer Verbindlichkeit namens passive Rechnungsabgrenzung (Deferred Revenue); Sie verdienen davon jeden Monat 100 €, während Sie die Leistung erbringen. Das ist die Grundregel hinter IFRS 15 und seinen nationalen Entsprechungen, und deshalb sieht die Bilanz eines SaaS für Gründer, die bisher nur auf ein Bankkonto geschaut haben, seltsam aus.
Der Kerngrundsatz von IFRS 15 lautet, dass „ein Unternehmen Umsatzerlöse erfasst, um die Übertragung zugesagter Güter oder Dienstleistungen auf den Kunden in Höhe der Gegenleistung darzustellen, die das Unternehmen erwartungsgemäß erhalten wird“. Der Standard beschreibt fünf Schritte: den Vertrag identifizieren, die Leistungsverpflichtungen identifizieren, den Transaktionspreis bestimmen, ihn verteilen und Umsatz erfassen, wenn — oder während — jede Verpflichtung erfüllt wird. Ein Abonnement wird in der Regel zeitraumbezogen erfüllt, der Umsatz wird also über die Abolaufzeit erfasst.
Welches Rahmenwerk Sie tatsächlich anwenden, ist Sache Ihres Steuerberaters. Kleine Unternehmen in Deutschland, Frankreich, Belgien und Polen bilanzieren normalerweise nach nationalem Handelsrecht, nicht nach IFRS, und für kleine Einheiten gibt es einige Vereinfachungen. Der Mechanismus ist überall derselbe: Vorauszahlungen sind zuerst eine Verbindlichkeit, später Umsatz. Was sich ändert, sind die Details — ob eine Einrichtungsgebühr eine eigene Leistungsverpflichtung ist, wie ein Rabatt für Jahreszahlung zu behandeln ist, was ein Gratismonat bewirkt. Diese Punkte erfordern eine fachliche Bestätigung.
- Passive Rechnungsabgrenzung (Vertragsverbindlichkeit)
- Erhaltenes Geld für eine Leistung, die Sie noch schulden. Eine Verbindlichkeit in der Bilanz, die über den Leistungszeitraum in den Umsatz aufgelöst wird.
- Abgegrenzter Umsatz (Vertragsvermögenswert)
- Eine Leistung, die Sie erbracht, aber noch nicht in Rechnung gestellt haben — nutzungsabhängige Tarife, die nachträglich abgerechnet werden, erzeugen das zum Monatsende.
- MRR / ARR
- Steuerungskennzahlen, keine Buchhaltungsgrößen. Nützlich für Investoren; sie sind nicht das, was in den Jahresabschluss eingeht.
Stripe-Auszahlungen sind keine Rechnungen
Eine Stripe-Auszahlung (Payout) ist eine einzige Banküberweisung, die viele Zahlungen bündelt, abzüglich Erstattungen und Gebühren, nach einer Abwicklungsfrist. Ihr Umsatz sind die einzelnen Zahlungen und die Rechnungen dahinter; die Auszahlung ist nur der Weg, auf dem das Geld bei Ihnen ankam. Buchen Sie beides als zwei verschiedene Dinge.
Die Dokumentation von Stripe ist beim Ablauf eindeutig: „Stripe sendet Guthaben aus Ihrem verfügbaren Saldo als Auszahlungen an Ihr Bankkonto“, gemäß dem Auszahlungsplan des Kontos, und „der Zeitpunkt, zu dem Guthaben verfügbar wird, hängt von Ihrem Abwicklungszeitpunkt ab“. Eine Zahlung erscheint zunächst als ausstehender Saldo „abzüglich etwaiger Stripe-Gebühren“ und wird später verfügbar. Der empfohlene Ausgangspunkt für den Abgleich ist die Balance Transaction, die Stripe „für jede Art von Transaktion anlegt, die in den Saldo Ihres Stripe-Kontos hinein- oder aus ihm herausfließt“ — Typen wie charge, refund, stripe_fee, payout und currency_conversion.
Ein sauberer Ansatz behandelt Stripe als Verrechnungskonto:
- Wenn ein Kunde belastet wird, buchen Sie den Verkauf: Forderung (oder direkt das Stripe-Verrechnungskonto) gegen Umsatz oder passive Rechnungsabgrenzung, mit der für diesen Kunden festgelegten umsatzsteuerlichen Behandlung.
- Buchen Sie die Stripe-Gebühr als Aufwand gegen dasselbe Verrechnungskonto, anhand der Balance Transaction statt einer Schätzung.
- Wenn die Auszahlung im Bankfeed erscheint, übertragen Sie den Auszahlungsbetrag vom Verrechnungskonto auf die Bank. Geht das Verrechnungskonto nicht auf null zurück, fehlt etwas — eine Erstattung, eine Rückbuchung, eine Währungsumrechnung.
Ob Sie für jede Kartenzahlung eine förmliche Rechnung ausstellen, hängt vom Kunden ab. Für einen Unternehmenskunden in der EU ist eine Rechnung für Umsatzsteuerzwecke erforderlich; für einen Verbraucher häufig nicht, obwohl viele SaaS-Unternehmen ohnehin eine ausstellen, weil Kunden danach fragen. Die Rechnung ist das Dokument, das das umsatzsteuerliche Ergebnis trägt; die Stripe-Quittung ist keine Umsatzsteuerrechnung, es sei denn, sie enthält alles, was eine solche Rechnung braucht.
EU-Umsatzsteuer auf ein Abonnement: B2C über OSS, B2B über Reverse Charge
Ein online bereitgestelltes Software-Abonnement ist eine „auf elektronischem Weg erbrachte Dienstleistung“. An einen Verbraucher in einem anderen EU-Land verkauft, wird sie dort besteuert, wo der Verbraucher wohnt; an ein umsatzsteuerlich registriertes Unternehmen in einem anderen EU-Land verkauft, wird sie dort besteuert, wo das Unternehmen sitzt, und das Unternehmen führt die Umsatzsteuer selbst im Reverse-Charge-Verfahren ab. Zwei Kunden, die dieselben 20 € zahlen, können daher vier verschiedene umsatzsteuerliche Ergebnisse haben.
Die Zusammenfassung der Kommission zum Leistungsort nennt die drei Regeln, die hier zählen. Bei B2B-Dienstleistungen „ist der Ort der Besteuerung der Ort, an dem der Kunde ansässig ist“ (Artikel 44 der Mehrwertsteuerrichtlinie). Bei B2C-Dienstleistungen gilt standardmäßig „der Ort, an dem der Leistende ansässig ist“ (Artikel 45) — aber „B2C-Telekommunikations-, Rundfunk- und elektronische Dienstleistungen werden dort besteuert, wo der Kunde wohnt“ (Artikel 58). Ein SaaS-Verkauf an einen Verbraucher wird also zum nationalen Steuersatz des Verbrauchers besteuert, nicht zu Ihrem.
27 verschiedene nationale Sätze gegenüber Verbrauchern zu berechnen, würde normalerweise 27 Registrierungen bedeuten. Der One-Stop-Shop vermeidet das: Er ist ein optionales Verfahren, gestartet am 1. Juli 2021, bei dem ein in einem Mitgliedstaat registriertes Unternehmen die in allen anderen geschuldete Umsatzsteuer in einer vierteljährlichen Erklärung anmeldet und zahlt. Der OSS umfasst unter anderem „grenzüberschreitende Dienstleistungen an Nichtsteuerpflichtige“. Es gibt eine jährliche Schwelle von 10.000 EUR für grenzüberschreitende B2C-TBE-Dienstleistungen — darunter darf ein Leistender weiterhin im eigenen Land besteuern — und „die OSS-Verfahren sind für Steuerpflichtige optional“. Ob OSS, die Schwelle oder eine lokale Registrierung für Ihr Unternehmen richtig ist, erfordert eine fachliche Bestätigung.
| Kunde | Wo besteuert | Wer zahlt die Umsatzsteuer | Was die Rechnung ausweist |
|---|---|---|---|
| Unternehmen im eigenen Land | Ihr Land | Sie berechnen und führen ab | Regelsteuersatz |
| Umsatzsteuerlich registriertes Unternehmen in einem anderen EU-Land | Land des Kunden (Art. 44) | Kunde, im Reverse-Charge-Verfahren | Keine Umsatzsteuer; beide USt-IdNrn.; Hinweis auf die Umkehr der Steuerschuldnerschaft |
| Verbraucher in einem anderen EU-Land | Land des Verbrauchers (Art. 58) | Sie, über OSS oder eine lokale Registrierung | Nationaler Steuersatz des Verbrauchers |
| Unternehmen oder Verbraucher außerhalb der EU | In der Regel außerhalb des EU-Umsatzsteuerbereichs | Hängt vom Bestimmungsland ab | Keine EU-Umsatzsteuer; lokale Regeln können gelten |
Das Reverse-Charge-Verfahren setzt voraus, dass der Käufer tatsächlich ein Steuerpflichtiger ist. VIES, das Mehrwertsteuer-Informationsaustauschsystem der Kommission, „ermöglicht Unternehmen, rasch eine Bestätigung der USt-IdNrn. ihrer Handelspartner zu erhalten“. Dieselbe Seite begrenzt, was eine Prüfung beweist: Die Daten „stammen aus den Datenbanken der Mitgliedstaaten, über die die Kommissionsdienststellen keine Kontrolle haben“, und eine Bestätigung „begründet für sich genommen keinen Anspruch auf Steuerbefreiung innergemeinschaftlicher Lieferungen“. Prüfen Sie die Nummer zum Zeitpunkt des Verkaufs, speichern Sie das Ergebnis mit der Rechnung und bewahren Sie Nachweise darüber auf, wo der Kunde sitzt.
Erstattungen, Gutschriften und Rückbuchungen
Eine Erstattung ist keine gelöschte Rechnung. In der EU wird ein bereits in Rechnung gestellter Verkauf durch eine Gutschrift (Stornorechnung) korrigiert, die auf die ursprüngliche Rechnung verweist, sodass beide Dokumente erhalten bleiben und die Umsatzsteuer in der richtigen Periode berichtigt werden kann. Die Stripe-Erstattung ist dann die Zahlung dieser Gutschrift.
- Vollständige Erstattung innerhalb desselben Voranmeldungszeitraums — Gutschrift über den vollen Betrag, Erstattung dagegen gebucht, Nettoeffekt null.
- Teilerstattung — Gutschrift über den erstatteten Anteil; die passive Rechnungsabgrenzung für die stornierten Monate wird ausgebucht, nicht als Umsatz erfasst.
- Chargeback / Rückbuchung — Stripe zieht den Betrag als Balance Transaction vom Typ
adjustmentab; behandeln Sie ihn wie eine Erstattung, bis der Streitfall entschieden ist, und stornieren Sie die Buchung, wenn Sie gewinnen. - Fehlgeschlagene Erstattung — Stripe schreibt das Geld Ihrem Saldo wieder gut (
refund_failure); die Gutschrift bleibt bestehen, die Zahlungsseite wird wieder geöffnet.
Fremdwährungen: Welcher Kurs, und wann
Wenn Sie Preise in EUR, USD und GBP haben, hat Ihr Hauptbuch trotzdem eine einzige Berichtswährung, und jede Fremdwährungsrechnung wird zum Kurs am Rechnungsdatum umgerechnet. Die Differenz zwischen diesem Kurs und dem Kurs, zu dem das Geld tatsächlich eingeht, ist ein Kursgewinn oder -verlust, der getrennt vom Umsatz gebucht wird.
Stripe fügt eine Ebene hinzu: Eine USD-Zahlung, die auf ein EUR-Bankkonto ausgezahlt wird, rechnet Stripe um, und die Umrechnung erscheint als eigene Balance Transaction (currency_conversion, gegebenenfalls mit einer stripe_fx_fee). Die realisierte Differenz ist die Lücke zwischen Ihrer Umrechnung zum Rechnungsdatum und Stripes Umrechnung bei der Abwicklung. Offene Fremdwährungsforderungen zum Jahresende werden in der Regel zum Stichtagskurs neu bewertet, was eine unrealisierte Differenz erzeugt; die Behandlung hängt von Ihrem Rechnungslegungsrahmen ab und erfordert eine fachliche Bestätigung. Eine ausführlichere Darstellung finden Sie auf der Seite mehrere Firmen, mehrere Währungen.
Was Sie über eine API automatisieren sollten — und was nicht
Automatisieren Sie die Ereignisse, die Ihre Anwendung ohnehin kennt: Ein Kunde registriert sich, eine Abonnementrechnung wird fällig, eine Zahlung ist erfolgreich, eine Erstattung wird ausgelöst. Automatisieren Sie nicht die Ermessensentscheidungen: welches Umsatzsteuerregime bei einem Grenzfall gilt, wie ein Paketpreis aufzuteilen ist, wann eine Forderung abzuschreiben ist.
Eine minimale Integration hat drei Abläufe. Ihre App legt den Kunden mit Land und USt-IdNr. im Hauptbuch an. Wenn Stripe (oder Ihre Abrechnungslogik) eine Abonnementrechnung erzeugt, legt Ihre App den entsprechenden Rechnungsentwurf im Hauptbuch an, das die umsatzsteuerliche Behandlung aus den Fakten ableitet und das Dokument validiert. Wenn Stripe eine erfolgreiche Zahlung meldet, bucht Ihre App die Zahlung. Der Webhook-Leitfaden von Stripe erklärt, warum der letzte Schritt idempotent sein muss: „Webhook-Endpunkte erhalten gelegentlich dasselbe Ereignis mehr als einmal“, und Stripe „garantiert nicht die Zustellung von Ereignissen in der Reihenfolge, in der sie erzeugt werden“. Das Hauptbuch, in das Sie schreiben, braucht auf seiner Seite denselben Schutz — einen Idempotenzschlüssel bei jedem Schreibvorgang.
Wie KRONENWERK damit umgeht
KRONENWERK ist ein Hauptbuch mit doppelter Buchführung, Rechnungsstellung, Gutschriften, Bankfeeds und einer öffentlichen API, gebaut für Unternehmen in Deutschland, Frankreich, Belgien, Polen (eingeschränkt), Kanada und den Vereinigten Staaten. Für ein SaaS-Unternehmen sind das steuerliche Ergebnis, die API und die Webhooks die relevanten Bausteine. Mit Einschränkungen unterstützt
- Steuerliches Ergebnis je Rechnung. Aus dem Land des Verkäufers und des Käufers, der Frage, ob der Käufer Unternehmen oder Verbraucher ist, und der Art der Leistung erhält jede Rechnung ein Ergebnis: Regelsteuersatz, Nullsatz, steuerfrei, Reverse Charge, nicht steuerbar oder „Eingabe erforderlich“ / „fachliche Bestätigung erforderlich“. USt-IdNrn. der Käufer werden bei der Ausstellung gegen VIES geprüft, und das Ergebnis wird mit der Rechnung gespeichert. KRONENWERK rät nicht.
- Kunden, Rechnungen und Zahlungen über die API. Die API unter
https://kronenwerk.org/api/extern/v1akzeptiertPOST /customers,POST /invoices/draftsundPOST /transactions, jeweils mit einemIdempotency-Key-Header. Entwürfe werden nach der Validierung im Produkt ausgestellt; die API stellt keine rechtsgültigen Rechnungen direkt aus. Siehe ein SaaS anbinden und die Rechnungs-API. - Webhooks. Signierte Zustellungen für
invoice.issued,invoice.paid,invoice.cancelled,purchase.recordedundpayment.recorded, mit Wiederholungen und einemIdempotency-Keyje Ereignis. - Bankfeeds. Europäische Bankkonten werden über Enable Banking angebunden, kanadische und US-Konten über Plaid, sodass die Stripe-Auszahlung im Hauptbuch zum Abgleich erscheint.
- Mehrere Währungen und mehrere Firmen. Rechnungen in Fremdwährungen, ein Hauptbuch je Firma, ein API-Schlüssel je Firma.
Häufig gestellte Fragen
Muss ich für jede Kartenzahlung eine Rechnung ausstellen?
Für einen Unternehmenskunden in der EU ja — für die meisten B2B-Leistungen ist eine Rechnung für Umsatzsteuerzwecke erforderlich. Für Verbraucher sind die Regeln lockerer, aber ein Dokument, das die umsatzsteuerliche Behandlung trägt, bleibt der sicherste Beleg. Ob eine Kleinbetragsrechnung genügt, erfordert eine fachliche Bestätigung.
Kann ich jedem Verbraucher in der EU die Umsatzsteuer meines eigenen Landes berechnen?
Nur solange Ihre grenzüberschreitenden B2C-Umsätze mit elektronischen Dienstleistungen unter der jährlichen Schwelle von 10.000 EUR bleiben, und nur wenn Sie nicht auf sie verzichten. Oberhalb der Schwelle gilt der nationale Satz des Verbrauchers, und der OSS ist der übliche Weg, ihn zu erklären.
Was ist, wenn die USt-IdNr. des Kunden die VIES-Prüfung nicht besteht?
Wenden Sie das Reverse-Charge-Verfahren nicht auf Grundlage einer fehlgeschlagenen Prüfung an. Behandeln Sie den Kunden als Verbraucher, bis eine gültige Nummer vorliegt, oder verlangen Sie andere Nachweise der Unternehmereigenschaft. Bewahren Sie das VIES-Ergebnis in jedem Fall mit der Rechnung auf.
Importiert KRONENWERK meine Stripe-Transaktionen?
Nicht direkt. Auszahlungen kommen über die Bankanbindung; einzelne Zahlungen, Gebühren und Erstattungen werden von Ihrer Anwendung über die API oder von Hand erfasst. Ein Stripe-Konnektor ist heute nicht Teil des Produkts.
Berechnet KRONENWERK die passive Rechnungsabgrenzung?
Nein. Es erfasst die Rechnung und die Zahlung; die monatliche Auflösung von der passiven Rechnungsabgrenzung in den Umsatz ist eine Transaktion, die Sie oder Ihre Integration buchen. Ihr Steuerberater legt den Zeitplan fest.
Quellen
- European Commission — One Stop Shop: overview — gelesen am
- European Commission — Where to tax: place of taxable transactions — gelesen am
- European Commission — VIES (VAT Information Exchange System) — gelesen am
- IFRS Foundation — IFRS 15 Revenue from Contracts with Customers — gelesen am
- Stripe documentation — Receive payouts — gelesen am
- Stripe documentation — Balance transaction types — gelesen am
- Stripe documentation — Receive Stripe events in your webhook endpoint — gelesen am
- KRONENWERK developer documentation — gelesen am