Offenlegung per API
Offenlegungsdatei per API abrufen und prüfen
Über die REST-API und den MCP-Server rufen Sie die archivierten Offenlegungsdateien Ihres Jahresabschlusses ab: list_disclosure_files nennt je Datei Dokumentart, Ziel, Dateiname, Größe und SHA-256, download_disclosure_file liefert die exakten XML-Bytes. Erzeugt wird die Datei in der App; an das Unternehmensregister übermittelt die Software derzeit nicht direkt, die Einreichung bleibt bei Ihnen oder Ihrer Kanzlei. Mit der Prüfsumme belegen Sie, dass die Kopie in Ihrer Ablage genau der archivierten Fassung entspricht.
Stand: 2026-10-19
Was archiviert wird – und wann
Wenn Sie im Schritt Offenlegung der App die Datei für das Unternehmensregister exportieren, legt die Software genau diese Bytes als Archivzeile ab, zusammen mit Dateiname, Größe und SHA-256 als Integritätsanker. Einzelne Archivzeilen lassen sich weder ändern noch löschen; das lehnt die Datenbank ab. Das entspricht dem Gedanken der Aufbewahrungspflichten nach § 257 HGB und § 147 AO – die eingereichte Fassung soll später so reproduzierbar sein, wie sie hinausging.
Als Dokumentarten kommen ureg_xml (XML für das Unternehmensregister), ureg_xbrl (XBRL für das Unternehmensregister) und bundesanzeiger_xml vor; das Feld target nennt das Ziel, unternehmensregister oder bundesanzeiger. Wie viele Dateien zu einem Geschäftsjahr archiviert sind und wann die Offenlegung abgeschlossen wurde, zeigt get_annual_report_status unter offenlegung.
Die Werkzeuge und Routen
list_disclosure_files
GET /v1/disclosure-files, optional mit fiscal_year_id. Je Datei: id, fiscal_year_id, document_type, target, filename, byte_size, sha256 und created_at, neueste zuerst. Recht read.
download_disclosure_file
GET /v1/disclosure-files/{id}/content. Antwortet mit text/xml in den archivierten Bytes und einem Dateinamen im Kopf Content-Disposition. Dateien über 15 MB liefert die Schnittstelle nicht aus (413).
get_annual_report_status
GET /v1/annual-reports/status mit fiscal_year_id. Nennt unter offenlegung die Zahl der archivierten Dateien und abgeschlossen_am, dazu, ob eine Offenlegungsfassung des Abschlusses ausgestellt wurde.
list_annual_reports
GET /v1/annual-reports. Die ausgestellten Abschlüsse, darunter die Offenlegungsfassung (variant offenlegung) als PDF oder DOCX mit artifact_sha256 – das lesbare Gegenstück zur XML-Datei.
Prüfsumme vergleichen
Drei Schritte im Terminal, der Schlüssel kommt aus einer Umgebungsvariable:
export JAB_API_KEY="jab_live_…" BASE="https://api.jahresabschluss.io/functions/v1/bookkeeping-api/v1" # 1. Offenlegungsdateien eines Geschäftsjahres auflisten (sha256 notieren) curl -s -H "Authorization: Bearer $JAB_API_KEY" \ "$BASE/disclosure-files?fiscal_year_id=<uuid>" # 2. Eine Datei byte-genau speichern curl -s -H "Authorization: Bearer $JAB_API_KEY" \ -o offenlegung.xml "$BASE/disclosure-files/<id>/content" # 3. SHA-256 bilden und mit dem Wert aus Schritt 1 vergleichen shasum -a 256 offenlegung.xml # macOS sha256sum offenlegung.xml # Linux # Windows PowerShell: Get-FileHash -Algorithm SHA256 offenlegung.xml
Stimmen beide Werte überein, ist Ihre Kopie mit der archivierten Fassung identisch. Weicht der Wert ab, ist die Datei unterwegs verändert worden – etwa durch einen Editor, der Zeilenenden oder Zeichensatz umstellt. Speichern Sie dann erneut mit curl und öffnen Sie die Datei nur lesend.
Über MCP: Text im Chat, Datei per REST
download_disclosure_file reicht den XML-Inhalt als Text an das Modell weiter; das kann umfangreich sein. Das ist richtig, wenn der Agent den Inhalt lesen soll – zum Beispiel, um Firma, Stichtag und die ausgewiesenen Posten mit dem ausgestellten Abschluss abzugleichen.
Für die Ablage ist der Weg über REST der sichere: Ein Modell, das den Text wiedergibt, kann Leerzeichen, Zeilenumbrüche oder Sonderzeichen verändern, und dann stimmt die Prüfsumme nicht mehr. Ein Agent mit Ausführungsumgebung wie Claude Code führt die curl-Befehle oben selbst aus und vergleicht die Werte, statt die Datei abzuschreiben.
Anders beim ausgestellten Abschluss als PDF oder DOCX: Diese Dateien gehen nie durch das Modell. download_annual_report nennt nur den Abrufweg; den Inhalt als Text liefert get_annual_report.
Beispiel: Ablage für das Archiv
Ein Auftrag an einen Agenten mit Zugriff auf Ihr Terminal:
Bitte die Offenlegung 2025 ablegen: alle archivierten Dateien im Ordner Offenlegung/2025 speichern, die SHA-256-Werte prüfen und mir eine kurze Liste mit Dateiname, Dokumentart und Ergebnis geben.
- list_fiscal_years liefert die Kennung des Geschäftsjahres 2025.
- get_annual_report_status zeigt, ob Dateien archiviert sind und ob die Offenlegung abgeschlossen ist.
- list_disclosure_files mit fiscal_year_id liefert Kennung, document_type, filename und sha256 je Datei.
- Der Agent lädt jede Datei per REST, bildet den SHA-256 und vergleicht ihn mit dem Listenwert.
- Er meldet je Datei „stimmt“ oder „weicht ab“ – und nichts anderes. Fehlt eine erwartete Datei, sagt er, dass sie in der App noch nicht exportiert wurde.
Rechtlicher Rahmen: § 325 HGB
Nach § 325 Abs. 1 HGB haben die Mitglieder des vertretungsberechtigten Organs einer Kapitalgesellschaft – bei der GmbH die Geschäftsführung – für die Gesellschaft den festgestellten Jahresabschluss, den Lagebericht und gegebenenfalls den Bestätigungsvermerk offenzulegen, elektronisch bei der Stelle, die das Unternehmensregister führt. Die Frist: spätestens ein Jahr nach dem Abschlussstichtag (§ 325 Abs. 1a HGB). Bei einem Stichtag 31.12.2025 also spätestens am 31.12.2026. Ändert sich der Abschluss später, ist auch die Änderung offenzulegen (§ 325 Abs. 1b HGB).
Kleine Kapitalgesellschaften legen nach § 326 Abs. 1 HGB nur Bilanz und Anhang offen. Kleinstkapitalgesellschaften übermitteln nach § 326 Abs. 2 HGB nur die Bilanz und können statt der Veröffentlichung die dauerhafte Hinterlegung wählen. Wer die Pflicht versäumt, riskiert ein Ordnungsgeldverfahren des Bundesamts für Justiz nach § 335 HGB, mit einem Ordnungsgeld von 2.500 bis 25.000 Euro.
Die Prüfsumme ersetzt keine Eingangsbestätigung des Unternehmensregisters. Sie belegt nur, dass Ihre Kopie der archivierten Fassung entspricht.
Grenzen: was die Schnittstelle nicht tut
- Sie erzeugt keine Offenlegungsdatei – das geschieht im Schritt Offenlegung der App.
- Sie reicht nichts beim Unternehmensregister ein; die Software übermittelt derzeit nicht direkt.
- Sie ändert oder löscht keine Archivzeile; das verhindert schon die Datenbank.
- Sie liefert keine Dateien über 15 MB; diese laden Sie in der App.
- Sie gilt für genau die Gesellschaft des Schlüssels. Ein Schlüssel einer Gesellschaft, die nur das Steuer-Modul nutzt, erreicht diese Routen nicht (403 nur_steuer_routen).
- Zugangsdaten für das Unternehmensregister gehören nie in einen Chat; der Agent braucht sie für keinen dieser Schritte.
Häufige Fragen
Übermittelt die Software die Offenlegung direkt an das Unternehmensregister?
Derzeit nicht. Sie erzeugt die Einreichungsdatei und archiviert sie mit SHA-256. Die Einreichung übernehmen Sie oder Ihre Kanzlei.
Was sagt der SHA-256-Wert aus?
Er ist ein Fingerabdruck der Datei. Stimmt der Wert Ihrer Kopie mit dem aus list_disclosure_files überein, ist die Kopie byte-genau die archivierte Fassung.
Warum die Datei per REST statt im Chat speichern?
Weil ein Modell, das XML-Text wiedergibt, Zeichen verändern kann. curl speichert die Bytes unverändert; danach lässt sich die Prüfsumme vergleichen.
Welche Dokumentarten gibt es?
ureg_xml und ureg_xbrl mit dem Ziel unternehmensregister sowie bundesanzeiger_xml mit dem Ziel bundesanzeiger. Welche zu Ihrem Jahr vorliegen, zeigt list_disclosure_files.
Kann der Agent eine Offenlegungsdatei erzeugen oder ändern?
Nein. Die Werkzeuge lesen nur. Erzeugt wird die Datei in der App, und archivierte Dateien sind unveränderlich.
Bis wann muss offengelegt werden?
Nach § 325 Abs. 1a HGB spätestens ein Jahr nach dem Abschlussstichtag. Kleine und Kleinstkapitalgesellschaften legen nach § 326 HGB weniger Unterlagen offen.
Vom selben Anbieter: Jahresabschluss nach HGB – der komplette Leitfaden auf jahresabschluss.io.