Jahresabschluss.io
ENAnmeldenRegistrieren →

ZM aus den Büchern

Zusammenfassende Meldung per KI-Agent: Entwurf aus den Büchern, Freigabe in der App

Über den MCP-Server von jahresabschluss.io legt Ihr KI-Agent die Zusammenfassende Meldung (ZM) eines Monats oder Quartals mit create_tax_draft direkt aus den gebuchten innergemeinschaftlichen Lieferungen und sonstigen Leistungen an, prüft sie amtlich und bereitet die Übermittlung an das Bundeszentralamt für Steuern vor; übermittelt wird anschließend von Ihnen in der App. Fehlt bei einer Buchung die USt-IdNr. des Kunden, nennt die API dem Agenten die betroffenen Buchungen, statt eine unvollständige Meldung anzulegen. Berichtigungen, Dreiecksgeschäfte und Zeiträume ohne Meldezeilen bleiben bewusst in der App.

Stand: 2026-10-19

Wer die ZM abgibt und bis wann

Wer innergemeinschaftliche Warenlieferungen oder Lieferungen im Dreiecksgeschäft (§ 25b Abs. 2 UStG) ausführt, übermittelt dem Bundeszentralamt für Steuern bis zum 25. Tag nach Ablauf jedes Kalendermonats eine Zusammenfassende Meldung (§ 18a Abs. 1 Satz 1 UStG). Übersteigen diese Lieferungen weder im laufenden noch in einem der vier vorangegangenen Kalendervierteljahre jeweils 50.000 €, genügt die Meldung bis zum 25. Tag nach Ablauf des Quartals (§ 18a Abs. 1 Satz 2 UStG). Für sonstige Leistungen nach § 3a Abs. 2 UStG, für die der Kunde im anderen Mitgliedstaat die Steuer schuldet, ist Meldezeitraum das Kalendervierteljahr (§ 18a Abs. 2 UStG).

Je Erwerber gehören seine USt-IdNr. aus dem anderen Mitgliedstaat und die Summe der Bemessungsgrundlagen in die Meldung (§ 18a Abs. 7 UStG). Kleinunternehmer, die § 19 Abs. 1 UStG anwenden, sind ausgenommen (§ 18a Abs. 4 UStG).

Der Entwurf aus den Büchern: create_tax_draft

Der Aufruf für das dritte Quartal 2026. keine_sonderfaelle und confirm setzt der Agent erst, wenn Sie die Rückfragen beantwortet haben:

{
  "name": "create_tax_draft",
  "arguments": {
    "art": "zm",
    "period": "2026-Q3",
    "keine_sonderfaelle": true,
    "confirm": true
  }
}

Vorher fragt der Agent ausdrücklich: Gab es im Zeitraum Dreiecksgeschäfte? Gibt es Meldezeilen, die nicht in der Buchhaltung stehen? Nur wenn Sie beides verneinen, liegt der Regelfall vor, den die API anlegt. Über REST ist es POST /v1/tax/drafts mit demselben Körper.

Die Zeilen leitet die API mit denselben Bausteinen ab wie die ZM-Seite der App: Buchungen mit dem Steuerschlüssel IGL werden zu Warenlieferungen, solche mit NSTB_EU zu sonstigen Leistungen, zusammengefasst je USt-IdNr. und Umsatzart. Warenlieferungen gehören in den Meldezeitraum der Rechnung, spätestens in den, in dem der Monat nach der Lieferung endet (§ 18a Abs. 8 Satz 1 UStG); sonstige Leistungen in den Zeitraum ihrer Ausführung (§ 18a Abs. 8 Satz 2 UStG). Der amtliche Datensatz kennt je Zeile nur volle Euro: Gerundet wird vom Nullpunkt weg, und die Antwort nennt die Rundungsdifferenz je Zeile.

Zurück kommen source_id, die Positionen mit USt-IdNr., Umsatzart, Betrag und Partnername, die Gesamtsumme, Hinweise und als naechster_schritt der Aufruf zum Vorbereiten. Ein vorhandener Entwurf wird nie überschrieben: Stimmt er mit der Berechnung überein, kommt er unverändert zurück (200), sonst antwortet die API mit 409 entwurf_vorhanden.

Fehlende USt-IdNr. und andere benannte Sperren

Jede Ablehnung trägt einen Code und einen Link auf die ZM-Seite der App (app_seite):

  • 422 zm_ust_idnr_fehlt: Mindestens eine Buchung hat keine meldefähige USt-IdNr. des Erwerbers. Die Antwort listet bis zu 50 offene Buchungen mit Konto, Partner, Betrag und Grund. Eine deutsche USt-IdNr. ist in der ZM nicht meldefähig.
  • 422 zm_keine_meldezeilen: Im Zeitraum stehen keine Buchungen mit IGL oder NSTB_EU; eine leere Meldung legt die API nicht an.
  • 422 zm_nullzeile: Eine Erstmeldung darf nicht nur aus einer einzigen Nullzeile bestehen.
  • 422 zm_rechtsstand_in_app: Der in der App hinterlegte ZM-Rechtsstand, etwa der Meldeturnus, trägt den angefragten Zeitraum nicht.
  • 409 zm_berichtigung_in_app: Für den Zeitraum ist schon eine ZM übermittelt oder als außerhalb abgegeben erfasst. Eine Berichtigung erstellen Sie in der App.
  • 409 entwurf_vorhanden: Ein abweichender oder noch nicht freigegebener Entwurf liegt vor.

Prüfen, vorbereiten, freigeben

Mit der source_id aus der Antwort ruft der Agent check_tax_filing und prepare_tax_filing mit art=zm auf. Werte und Prüfwert stammen aus genau einer Lesung der gespeicherten Meldung; ändert sie sich während der Prüfung, antwortet die API mit 409 stand_geaendert und bereitet nichts vor.

Danach zeigt er Ihnen Positionen, Summe und Prüfwert und holt mit request_tax_filing_approval den Freigabe-Link. In der App übermitteln Sie mit Zwei-Faktor-Bestätigung und PIN; get_tax_operation meldet anschließend das Transferticket. Der über die API angelegte Entwurf ist eine gewöhnliche Meldung der Gesellschaft und steht in der App bei der Zusammenfassenden Meldung.

Beispiel: die ZM für das dritte Quartal

Ihr Auftrag im Chat: „ZM für Q3 2026 vorbereiten. Fehlende USt-IdNr. bei mir erfragen, nicht raten.“ Ein möglicher Verlauf mit erfundenen Befunden:

  • Der Agent fragt nach Dreiecksgeschäften und Meldezeilen außerhalb der Bücher. Sie verneinen beides; er ruft create_tax_draft für 2026-Q3 auf.
  • Angenommen, die API antwortet mit zm_ust_idnr_fehlt für zwei Rechnungen an einen Kunden in Österreich. Der Agent nennt Ihnen Kunde, Betrag und Buchung.
  • Sie nennen die USt-IdNr. Mit einem Schlüssel aus dem Buchhaltungs-Abo trägt der Agent sie mit update_business_partner beim Geschäftspartner ein; bei einem Schlüssel nur für das Steuer-Modul ergänzen Sie sie in der App.
  • Zweiter Aufruf von create_tax_draft: Der Entwurf entsteht, die Antwort weist bei einer Zeile eine Rundungsdifferenz aus.
  • check_tax_filing, prepare_tax_filing, request_tax_filing_approval – und Sie übermitteln in der App.

Abgleich mit der Umsatzsteuer-Voranmeldung

Innergemeinschaftliche Lieferungen an Abnehmer mit USt-IdNr. stehen in der Voranmeldung in Kennzahl 41, nicht steuerbare sonstige Leistungen nach § 18b Satz 1 Nr. 2 UStG in Kennzahl 21. Ein Agent kann die Werte der Voranmeldungen eines Quartals mit get_vat_return neben die ZM legen und Abweichungen benennen. Weicht beides ab, zeigt er die betroffenen Buchungen; ein Teil der Differenz kann aus der Rundung der ZM-Zeilen auf volle Euro stammen. Ob eine Abweichung korrigiert werden muss, entscheiden Sie – allein oder gemeinsam mit Ihrer Kanzlei.

Was in der App bleibt

  • Berichtigungen: Eine unrichtige oder unvollständige ZM ist innerhalb eines Monats zu berichtigen, nachdem der Fehler erkannt wurde (§ 18a Abs. 10 UStG). Das geschieht in der App.
  • Dreiecksgeschäfte (§ 25b Abs. 2 UStG): Die Buchhaltung hat dafür keinen Steuerschlüssel, und die Software rät sie nie.
  • Meldungen, die außerhalb der Software abgegeben wurden, und Meldezeilen, die nicht in den Büchern stehen.
  • Der ZM-Rechtsstand mit Meldeturnus und Anzeigen an das Bundeszentralamt für Steuern.
  • Die Übermittlung selbst – über den Freigabe-Link, mit Ihrer PIN.

Häufige Fragen

Kann ein KI-Agent die Zusammenfassende Meldung automatisch erstellen?

Im Regelfall ja: create_tax_draft legt die ZM eines Monats oder Quartals aus den gebuchten EU-Umsätzen an, nachdem Sie Dreiecksgeschäfte und Meldezeilen außerhalb der Bücher verneint haben. Übermittelt wird anschließend in der App.

Woher kommen die Beträge?

Aus Buchungen mit den Steuerschlüsseln IGL (innergemeinschaftliche Lieferung) und NSTB_EU (sonstige Leistung im übrigen Gemeinschaftsgebiet), je USt-IdNr. und Umsatzart summiert – mit derselben Ableitung wie die ZM-Seite der App.

Was passiert, wenn eine USt-IdNr. fehlt?

Die API legt keinen Entwurf an und antwortet mit 422 zm_ust_idnr_fehlt samt Liste der betroffenen Buchungen. Nach dem Ergänzen beim Geschäftspartner ruft der Agent create_tax_draft erneut auf.

Muss ich eine ZM für einen Zeitraum ohne EU-Umsätze abgeben?

Die Pflicht knüpft an Meldezeiträume an, in denen solche Umsätze ausgeführt wurden (§ 18a Abs. 1 und 2 UStG). Für einen Zeitraum ohne Meldezeilen legt die API keine ZM an und antwortet mit zm_keine_meldezeilen.

Kann der Agent eine ZM berichtigen?

Nein. Ist für einen Zeitraum schon eine ZM übermittelt, antwortet die API mit 409 zm_berichtigung_in_app; die Berichtigung erstellen Sie in der App.

Woher weiß die API, ob monatlich oder vierteljährlich gemeldet wird?

Aus dem ZM-Rechtsstand, den Sie in der App hinterlegen. Passt der angefragte Zeitraum nicht dazu, antwortet sie mit 422 zm_rechtsstand_in_app. list_tax_deadlines weist darauf hin, wenn der Meldezeitraum nicht belegt ist.

Vom selben Anbieter: Jahresabschluss nach HGB – der komplette Leitfaden auf jahresabschluss.io.