Für Gründerteams
Startup-Finanzen mit dem KI-Agenten: Buchhaltung aus Claude Code und Cursor
Ein Gründerteam mit technischem Hintergrund kann die Buchhaltung seiner GmbH oder UG direkt aus Claude Code, Cursor oder einem anderen MCP-fähigen Programm führen: Belege einliefern, Bank und Stripe-Einnahmen zuordnen, Rechnungen stellen und die Zahlen für das Investoren-Update aus Saldenliste, offenen Posten und Bankständen ziehen. Zum Ausprobieren gibt es eine Sandbox, die die echten Bücher nie berührt — derzeit für Gesellschaften, die noch keine Jahresabschluss-Daten haben. Die Kanzlei bleibt eingebunden: Sie bekommt Exporte oder arbeitet in derselben Software, und den Jahresabschluss erstellen Sie in der App.
Stand: 2026-10-19
Warum das zu Gründerteams passt
Wer ohnehin im Terminal oder in der Entwicklungsumgebung arbeitet, muss für die Buchhaltung nicht in eine zweite Welt wechseln. Der Agent liest Belege aus dem Download-Ordner, gleicht Zahlungen ab und beantwortet Fragen wie „Wie viel Geld liegt Ende des Monats auf den Konten?“ aus den gebuchten Zahlen — nicht aus einer Tabelle, die jemand nebenher pflegt.
Die Regeln setzt der Server durch: Jede Buchung läuft durch denselben Buchungskern wie in der App, Soll gleich Haben, Storno statt Löschen, keine Buchung in festgeschriebene Monate. Jeder Schlüssel gilt für genau eine Gesellschaft, und das Team entscheidet über die Rechte, was der Agent darf.
Einrichten: Projekt-Konfiguration ohne Schlüssel im Repository
In Claude Code kann eine .mcp.json im Projekt den Server für alle im Team eintragen; der Schlüssel kommt aus der Umgebungsvariable jeder Person:
{
"mcpServers": {
"buchhaltung": {
"type": "http",
"url": "https://api.jahresabschluss.io/functions/v1/bookkeeping-mcp",
"headers": { "Authorization": "Bearer ${JAB_API_KEY}" }
}
}
}Claude Code ersetzt ${JAB_API_KEY} beim Start durch den Wert der Umgebungsvariable und fragt vor der ersten Nutzung eines Servers aus der Projektdatei nach Ihrer Zustimmung. In Cursor heißt die Datei .cursor/mcp.json, der Eintrag trägt url und headers, und die Variable schreibt sich ${env:JAB_API_KEY}.
Jede Person bekommt ihren eigenen Schlüssel mit eigenem Ablaufdatum (höchstens 366 Tage); höchstens zehn sind je Gesellschaft gleichzeitig aktiv. Verlässt jemand das Team, widerrufen Sie genau diesen Schlüssel, ohne die anderen anzufassen. Angelegt werden Schlüssel von Administratoren oder dem Ersteller des Arbeitsbereichs unter „KI-Agent & API“, bestätigt mit dem zweiten Faktor.
Stripe-Einnahmen und Bank
Stripe verbinden Sie in der App mit einem eingeschränkten Stripe-Schlüssel, der nur lesen darf. Die Software holt danach die Buchungen Ihres Stripe-Guthabens als Umsätze herein: jede Zahlung als Eingang, die Stripe-Gebühr als eigene Zeile. Eindeutige Zahlungen zu offenen Ausgangsrechnungen kann die Software selbst zuordnen, wenn Sie das in der App freigeschaltet haben; sonst bleiben es Vorschläge.
Der Agent liest diese Umsätze wie Bankumsätze mit list_bank_transactions, ordnet Kundenzahlungen mit match_bank_transaction den Rechnungen zu und bucht Auszahlungen auf das Geschäftskonto als Umbuchung mit book_bank_transaction. Als Bilanzierer gilt für die GmbH: Ein Erlös entsteht mit der Rechnung, nicht mit der Bankzeile — eine Zahlung ohne Rechnung parkt der Server als offenen Posten.
Investoren-Update aus echten Buchungen
Ein Auftrag zum Monatsende, mit einem Schlüssel, der nur lesen darf:
Bitte die Zahlen für das Investoren-Update Oktober 2026 zusammenstellen: Kontostände zum 31.10., Umsatzerlöse und Kosten von Januar bis Oktober, offene Forderungen über 30 Tage. Rechenwege bitte offenlegen; alles, was geschätzt ist, als Schätzung kennzeichnen.
Der Agent ruft list_bank_accounts mit dem Geschäftsjahr auf und erhält je Konto den Auszugssaldo und den Buchsaldo zum Auszugsstichtag. get_saldenliste mit as_of 2026-10-31 liefert die Salden aller Konten bis zu diesem Tag, list_open_items mit kind debitor die offenen Forderungen samt Fälligkeit. Aus diesen Werten rechnet er Ihre Übersicht.
Wichtig für die Einordnung: Kennzahlen wie Burn-Rate oder Reichweite sind Rechnungen des Agenten aus den gebuchten Zahlen, keine Auswertung, die die Software selbst erstellt, und kein geprüfter Abschluss. Lassen Sie sich die Rechenwege zeigen, bevor Sie sie weitergeben.
Sandbox: erst testen, dann buchen
Die Sandbox ist ein versteckter Zwilling Ihrer Gesellschaft, den Sie in den Einstellungen einschalten. Er bekommt eigene Schlüssel; get_entity meldet dann sandbox: true. Aus dem Zwilling geht nichts hinaus — keine Übermittlung ans Finanzamt, keine E-Mail, kein Bankabruf. Amtlich prüfen ohne Versand geht trotzdem, Exporte und die KI-Belegerkennung sind dort abgeschaltet.
Eine Einschränkung sollten Sie kennen: Derzeit legt die Software die Sandbox nur für Gesellschaften ohne Jahresabschluss-Daten an. Hat die GmbH schon Saldenlisten, Abschlussbuchungen, Abgrenzungen oder Rückstellungen, wird die Kopie abgelehnt. Für eine junge Gesellschaft heißt das: Richten Sie die Sandbox früh ein, solange noch kein Abschluss gebucht ist. Danach bleibt der Probelauf: dry_run bei import_journal_batch, book_incoming_invoice und den Zahlungswerkzeugen zeigt die Wirkung, ohne zu buchen.
Webhooks für eigene Automatisierung
Mit dem Recht webhooks meldet ein Programm per POST /v1/webhooks eine https-Adresse und Ereignisse wie journal_entry.created, bank_transaction.created oder invoice_payment.created an. Die Signatur prüfen Sie so:
import hashlib, hmac, time
def signatur_gueltig(kopf: str, rohdaten: bytes, geheimnis: str, toleranz: int = 300) -> bool:
# kopf = Wert von X-Jab-Signature, z. B. "t=1760000000,v1=ab12…"
teile = dict(teil.split("=", 1) for teil in kopf.split(","))
zeit, v1 = teile.get("t", ""), teile.get("v1", "")
if not zeit.isdigit() or abs(time.time() - int(zeit)) > toleranz:
return False
erwartet = hmac.new(geheimnis.encode(), zeit.encode() + b"." + rohdaten, hashlib.sha256).hexdigest()
return hmac.compare_digest(erwartet, v1)Das Geheimnis zeigt die API nur einmal, in der Antwort auf die Anmeldung. Webhooks melden Sie mit einem Schlüssel der echten Gesellschaft an; aus der Sandbox heraus ist die Anmeldung gesperrt. Ein Ereignis ersetzt keinen Abgleich: Liest Ihr Programm danach nach, nutzt es list_journal_entries mit since_entry_no und holt nur Neues.
Die Kanzlei bleibt eingebunden
Den Jahresabschluss erstellen und stellen Sie in der App aus; der Agent übergibt vorher mit publish_trial_balance die Saldenliste. Körperschaft- und Gewerbesteuererklärung geben Sie in der App frei. Viele Gründerteams lassen beides von ihrer Kanzlei prüfen — die kann in derselben Software mitarbeiten oder bekommt mit export_bookkeeping Journal, Saldenliste, einen Buchungsstapel im Kanzlei Software-Format oder das GoBD-Paket.
Ein eigener Lese-Schlüssel für die Kanzlei hält die Rollen sauber: Sie sieht die Zahlen, ändert aber über die Schnittstelle nichts.
Grenzen
- Übermittlungen an ELSTER sendet der Mensch: über den Freigabe-Link in der App, mit seiner PIN.
- Bank- und Stripe-Anbindung richten Sie in der App ein; über die Schnittstelle gibt es keine Bank-Anmeldung.
- Eine Lohn- und Gehaltsabrechnung bietet die Software derzeit nicht an. Lohnbuchungen eines Lohnbüros bucht der Agent als ausgeglichenen Stapel mit import_journal_batch.
- KI-Ausgaben sind Vorschläge. Die Verantwortung für Buchführung und Abschluss bleibt bei der Geschäftsführung (§ 41 GmbHG).
- Für Gruppen mit Holding und Töchtern gilt: ein Schlüssel je Gesellschaft; einen Konzernabschluss erstellt der Agent nicht.
Häufige Fragen
Können wir die Buchhaltung komplett aus Claude Code führen?
Die laufende Buchhaltung ja: Belege, Bank, Rechnungen, Kasse, Anlagen, Rückstellungen und Festschreibung. In der App bleiben Bankanbindung, Einstellungen, der Jahresabschluss selbst und jede Übermittlung an ELSTER.
Wie kommen Stripe-Zahlungen in die Buchhaltung?
Sie verbinden Stripe in der App mit einem eingeschränkten Schlüssel, der nur lesen darf. Zahlungen und Gebühren erscheinen dann als Umsätze, die der Agent mit match_bank_transaction den Rechnungen zuordnet.
Gehört der API-Schlüssel ins Repository?
Nein. In die Projektdatei gehört nur der Verweis auf eine Umgebungsvariable, etwa ${JAB_API_KEY}. Der Schlüssel selbst steht in der Umgebung oder einem Passwortspeicher jeder Person.
Wie testen wir, ohne die echten Bücher zu verändern?
Mit der Sandbox, solange die Gesellschaft noch keine Jahresabschluss-Daten hat, und sonst mit dem Probelauf dry_run, der Buchungszeilen und Wirkung zeigt, ohne zu buchen.
Brauchen wir trotzdem eine Steuerberatung?
Die Software ersetzt keine Steuer- oder Rechtsberatung. Viele Teams buchen laufend selbst und lassen Abschluss und Erklärungen von ihrer Kanzlei prüfen, die auch in derselben Software arbeiten kann.
Kann der Agent die Lohnabrechnung übernehmen?
Nein, eine Lohn- und Gehaltsabrechnung bietet die Software derzeit nicht an. Die fertigen Lohnbuchungen eines Lohnbüros kann der Agent als Buchungsstapel buchen.
Vom selben Anbieter: Jahresabschluss nach HGB – der komplette Leitfaden auf jahresabschluss.io.