Open Source · MIT · Jungherz GmbH

Stripe-Umsätze nach DATEV — in einem Befehl.

StripeJack erzeugt aus einem Stripe-Konto das vollständige Paket, das die Buchhaltung erwartet: EXTF-Buchungsstapel, Rechnungsbelege im BEDI-Archiv und die Abgrenzung für Abonnements. Es läuft auf dem eigenen Rechner — ohne Zwischendienst, ohne Anmeldung, ohne dass ein Dritter die Zahlungsdaten zu sehen bekommt.

# Einrichten und den letzten abgeschlossenen Monat exportieren
$ npx @jungherz-de/stripe-jack init
$ npx @jungherz-de/stripe-jack export

→ out/DATEV_Stripe_…_2026-07.zip  (58 Transaktionen, 7 Belege)

Node.js 20 oder neuer · MIT-Lizenz · SKR 03 und SKR 04 · funktioniert als Cronjob

Das Problem

Stripe kennt keine Debitoren. DATEV kennt kein Stripe.

Wer Zahlungen über Stripe abwickelt und in Deutschland bilanziert, kennt die monatliche Fleißarbeit: Stripe schreibt den Betrag abzüglich Gebühren gut, die Rechnung lautet aber über den Bruttobetrag. Die Auszahlung auf das Bankkonto kommt Tage später und fasst mehrere Zahlungen zusammen. Abonnements laufen über Monatsgrenzen und müssen abgegrenzt werden. Und je nachdem, wo der Kunde sitzt und ob er eine Umsatzsteuer-Identifikationsnummer hat, gehört der Erlös auf ein anderes Konto.

Ein CSV-Export aus dem Stripe-Dashboard löst davon nichts. Er kennt weder Debitorenkonten noch Buchungsschlüssel, ordnet keine Belege zu und weiß nichts von Geldtransit oder Rechnungsabgrenzung. Was DATEV erwartet, ist ein EXTF-Buchungsstapel im Format 700 — feldgenau, mit Belegdatum, Soll-/Haben-Kennzeichen und verknüpften Belegen.

StripeJack schließt genau diese Lücke. Es liest die Transaktionen und Rechnungen eines Zeitraums aus der Stripe-API, bildet daraus vollständige Buchungssätze und legt die Rechnungs-PDFs als Belege dazu. Ein Befehl, ein Archiv, fertig für den Upload in DATEV Unternehmen online.

1 Befehlstatt einer Stunde Handarbeit im Monat
EXTF 700Buchungsstapel, wie DATEV ihn erwartet
SKR 03/04beide Kontenrahmen, frei konfigurierbar
0 Dienstekein Anbieter zwischen dir und Stripe
Das Ergebnis

Ein Archiv, das die Kanzlei so entgegennimmt.

Pro Konto und Zeitraum entsteht eine ZIP-Datei — plus ein Manifest mit Zählern, Summen und Prüfsummen als Nachweis, was ausgeliefert wurde.

DATEV_Stripe_…_2026-07.zip ├── EXTF_Stripe_Zahlungen_….csv Buchungsstapel: Zahlungen, Gebühren, Auszahlungen ├── EXTF_Stripe_Rechnungen_….csv Buchungsstapel: Rechnungen und Gutschriften ├── Stripe_PRAP_….xlsx Passive Rechnungsabgrenzung je Abo-Rechnung ├── Income_By_Product_….xlsx Nettoerlöse je Produkt — Woche, Monat, Jahr └── documents.zip Rechnungsbelege als PDF + BEDI-Index

Vollständige Buchungssätze

Zahlungen gleichen Forderungen aus, Gebühren werden zum Aufwand, Auszahlungen laufen über das Geldtransitkonto. Rückerstattungen drehen dasselbe Kontenpaar um, damit die Steuerautomatik der Erlöskonten wirksam bleibt.

Belege gleich mit

Die Rechnungs-PDFs kommen als BEDI-Archiv mit und sind über Beleglink direkt mit der Buchung verknüpft. Auch die Zahlung einer Rechnung aus einem früheren Monat findet ihren Beleg.

Umsatzsteuer abgeleitet

Inland zum Regel- oder ermäßigten Satz, innergemeinschaftliches Reverse Charge, One-Stop-Shop, Drittland — hergeleitet aus Kundenland, USt-IdNr. und dem tatsächlich berechneten Satz statt je Kunde konfiguriert.

So läuft es

Einrichten, exportieren, hochladen.

Einmal einrichten

Der geführte Dialog fragt Stripe-Schlüssel, Berater- und Mandantennummer ab und belegt alle Kontonummern nach gewähltem Kontenrahmen vor. Geprüft wird vor dem Speichern.

$ stripe-jack init

Monatlich exportieren

Ohne Argumente nimmt StripeJack den letzten abgeschlossenen Monat — genau richtig für einen Cronjob. Zeiträume lassen sich frei angeben.

$ stripe-jack export
$ stripe-jack export --month 2026-07

In DATEV hochladen

Das Archiv liegt im Ausgabeverzeichnis, bereit für DATEV Unternehmen online. Auf Wunsch verschickt StripeJack es direkt an die Kanzlei.

# optional, standardmäßig aus
MAIL_ENABLED=true
Mit KI-Assistenten

Von Claude Code bedienbar — ohne die Doku zu lesen.

Dem Paket liegt eine SKILL.md bei: eine maschinenlesbare Anleitung, die Agenten wie Claude Code die Befehle, die Bedeutung der Exit-Codes und die Reihenfolge der Einrichtung beibringt.

Praktisch heißt das: Statt Kontonummern in einer .env zusammenzusuchen, beschreibt man das Vorhaben in normaler Sprache. Der Assistent prüft zuerst, ob überhaupt eine Konfiguration vorliegt, fragt gezielt die Werte ab, die er nicht erraten kann — Beraternummer, Mandantennummer, Kontenrahmen — und weiß, welche Kontonummern zu SKR 03 und SKR 04 gehören.

Er weiß auch, wo Vorsicht geboten ist: dass ein Debitorenkonto zwischen 10000 und 69999 liegen muss, weil DATEV es sonst als Sachkonto verbucht und jede Zahlung still ihren Kundenbezug verliert. Und dass im Zweifel das Klärungskonto die richtige Antwort ist — nie eine plausible Vermutung.

Nötig ist ein Assistent dafür nicht: stripe-jack init führt dieselbe Einrichtung eigenständig durch.

Du
Richte StripeJack für mein Stripe-Konto ein
und exportiere den letzten Monat.

Claude Code
Ich prüfe zuerst die Konfiguration …
$ stripe-jack accounts
→ keine .env gefunden

Dafür brauche ich drei Angaben aus dem
Schreiben deiner Kanzlei:
  1. Beraternummer
  2. Mandantennummer
  3. Kontenrahmen — SKR 03 oder SKR 04?
Belastbarkeit

Warum man den Zahlen trauen kann.

StripeJack ist nicht aus der Formatbeschreibung heraus geraten, sondern gegen einen echten, von DATEV akzeptierten Export desselben Monats geprüft — Feld für Feld, Zeile für Zeile. Der Vergleich läuft als automatischer Test bei jeder Änderung mit und ist im Repository nachvollziehbar.

Der eingebaute Befehl stripe-jack verify macht dasselbe mit den eigenen Daten: Er erzeugt den Export für einen Monat und stellt ihn einer vorhandenen Referenzdatei gegenüber. Wer von einem anderen Werkzeug umsteigt, sieht damit vor dem Wechsel, ob sich etwas ändert.

  • Nie geraten. Was sich nicht sicher zuordnen lässt, geht auf das Klärungskonto — mit Warnung im Protokoll und im Manifest.
  • Nichts fällt hinten runter. Auch unbekannte Transaktionsarten werden gebucht statt übergangen.
  • Prüfspur. Neben jedem Archiv liegt ein Manifest mit Zeitraum, Zählern, Summen und SHA-256-Prüfsummen.
  • Wiederholbar. Ein bereits exportierter Zeitraum wird nicht stillschweigend überschrieben, parallele Läufe sperren sich gegenseitig.
  • Offen einsehbar. Jede Buchungsregel steht als Quelltext und als Dokumentation im Repository.
Datenschutz

Die Zahlungsdaten bleiben zwischen dir, Stripe und der Kanzlei.

StripeJack ist ein Werkzeug, kein Dienst. Es gibt nichts, wo man sich anmeldet, und keinen Server des Herausgebers, der etwas zu sehen bekäme.

Ein Export enthält personenbezogene Daten: Kundennamen, Anschriften, Rechnungsbeträge und die Belege selbst. Bei einer SaaS-Lösung für denselben Zweck fließen diese Daten zusätzlich über die Systeme eines Dritten — mit allem, was daran hängt: Auftragsverarbeitungsvertrag nach Art. 28 DSGVO, Eintrag im Verarbeitungsverzeichnis, Prüfung des Serverstandorts.

Weil StripeJack lokal läuft, entfällt das vollständig. Beteiligt sind nur das eigene Unternehmen, Stripe — das die Daten ohnehin hat — und die Steuerkanzlei, an die man die Buchhaltung ohnehin übergibt. Ein weiterer Anbieter kommt nicht hinzu.

  • Zwei ausgehende Verbindungen, beide vom eigenen Rechner: zur Stripe-API und — nur wenn ausdrücklich eingeschaltet — zum eigenen Mailserver.
  • Keine Telemetrie, keine Nutzungsstatistik, kein Update-Check. Nachprüfbar im offenen Quelltext.
  • Nur lesender Zugriff. Ein eingeschränkter Stripe-Schlüssel mit Leserechten genügt; geschrieben wird nie.
  • Keine Datenhaltung. Außer dem Archiv im eigenen Ausgabeverzeichnis wird nichts gespeichert — keine Datenbank, kein Cache.
Loslegen

Installieren und den letzten Monat exportieren.

# global installieren
$ npm install -g @jungherz-de/stripe-jack

# oder ohne Installation ausprobieren
$ npx @jungherz-de/stripe-jack export --month 2026-07 --dry-run

Voraussetzung ist Node.js 20 oder neuer. --dry-run ruft dieselben Daten ab wie ein echter Lauf, schreibt aber nichts — gut geeignet, um die Rechte des Stripe-Schlüssels zu prüfen.