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
Zwei Wege

Dasselbe Paket. Zwei Arten, es zu erzeugen.

Die Ausgabe ist identisch — derselbe Buchungsstapel, dieselben Belege, dieselbe Abgrenzung. Verschieden ist nur, wo der Export läuft und wer dafür geradesteht.

StripeJack — das Werkzeug

Läuft auf dem eigenen Rechner oder Server, als Befehl oder Cronjob. Quelloffen unter MIT, kostenlos.

  • Kein Anbieter zwischen dir und Stripe. Keine Auftragsverarbeitung nach Art. 28 DSGVO, weil niemand in deinem Auftrag verarbeitet.
  • Node.js, eine .env und ein Cronjob sind einzurichten — und zu betreuen.
  • Läuft der Rechner nicht, läuft der Export nicht. Das zu merken ist deine Aufgabe.

StripeJack Cloud — der Dienst

Derselbe Kern, nur gehostet: einmal über Formularfelder einrichten, danach kommt der Export monatlich von selbst. Kostenpflichtig.

  • Keine Kommandozeile, keine Installation, kein Cronjob. Verarbeitung auf einem Server in Deutschland.
  • Hier verarbeitet die Jungherz GmbH in deinem Auftrag. Der Vertrag nach Art. 28 DSGVO gehört also dazu — er wird mit dem Abo geschlossen und ist im Preis enthalten.
  • Der hinterlegte Stripe-Schlüssel hat nur Leserechte und liegt verschlüsselt.

StripeJack Cloud ansehen

Die ehrliche Kurzfassung: Wer die Verantwortung für Betrieb und Datenhaltung selbst tragen will und kann, nimmt das Werkzeug — es ist deshalb quelloffen. Wer sie abgeben will, nimmt den Dienst und bekommt dafür einen Vertrag, der genau das regelt. Ein dritter Weg wäre, so zu tun, als gäbe es diesen Unterschied nicht.

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. Wer diese Daten verarbeitet, entscheidet darüber, welche Pflichten daran hängen.

Weil StripeJack lokal läuft, sind nur das eigene Unternehmen, Stripe — das die Daten ohnehin hat — und die Steuerkanzlei beteiligt, an die man die Buchhaltung ohnehin übergibt. Ein weiterer Anbieter kommt nicht hinzu, und damit entsteht keine Auftragsverarbeitung nach Art. 28 DSGVO: Es gibt niemanden, der im Auftrag verarbeitet.

Bei StripeJack Cloud ist das anders, und das gehört an dieselbe Stelle gesagt: Dort läuft der Export auf einem Server der Jungherz GmbH, also in deinem Auftrag. Ein Vertrag nach Art. 28 DSGVO ist dann nicht Beiwerk, sondern Voraussetzung — er wird mit dem Abo geschlossen und ist im Preis enthalten. Das ist kein Nachteil des einen und kein Vorzug des anderen, sondern schlicht der Unterschied zwischen einem Werkzeug und einem Dienst.

  • 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.