{"name":"firma.de E-Rechnungs-API","version":1,"description":"Erstellt aus einem Rechnungsentwurf im JSON-Format eine E-Rechnung nach EN 16931 in der Syntax UN/CEFACT CII: als XRechnung 3.0 (für Behörden, mit Leitweg-ID) oder als ZUGFeRD 2.5.2 im Profil EN 16931 (für Unternehmen, als PDF/A-3 mit eingebettetem XML). Dieselbe Rechen- und XML-Logik wie der E-Rechnungs-Generator von firma.de: Positionsbeträge, Umsatzsteuer je Steuersatz, Summen und die Pflichtfelder von XRechnung. Die Antwort enthält die Hinweise des Generators, die Summen und das XML; mit ?format=xml kommt nur das XML, mit ?format=pdf die PDF-Datei. Die Beispiele des Generators sind mit dem KoSIT-Validator und mit Mustang (inklusive veraPDF) getestet. Kostenlos, ohne Schlüssel.","privacy":"Die API rechnet auf dem Server und speichert nichts: keine Entwürfe, keine Rechnungen. Antworten auf POST landen in keinem Cache. Der Generator auf der Seite erzeugt XML und PDF dagegen im Browser, dort verlässt die Rechnung das Gerät nicht.","openapi":"https://www.firma.de/api/e-rechnung/openapi.json","builder":"https://www.firma.de/e-rechnung/","units":"Beträge in Euro als Zahl (netto, Einzelpreis bis 4 Nachkommastellen, Menge bis 3), deutsch geschrieben geht auch: \"1.234,56\". Daten als YYYY-MM-DD. Länder als ISO-Code (DE, AT …), Einheiten als UN/ECE-Code: H87 Stück, HUR Stunde, DAY Tag, MON Monat, LS Pauschale, C62 Einheit, KGM kg, LTR Liter, MTR Meter, KMT Kilometer.","taxCases":"taxCase: standard (19 %, 7 % oder 0 % je Position), smallBusiness (Kleinunternehmer nach § 19 UStG, ohne Umsatzsteuer), reverseCharge (Steuerschuldnerschaft des Leistungsempfängers, § 13b UStG oder Leistungen an Unternehmen im EU-Ausland, nicht außerhalb der EU und nicht an Privatkunden; USt-IdNr. des Kunden nötig, bei Kunden im EU-Ausland auch deine), intraEu (innergemeinschaftliche Lieferung an ein Unternehmen, beide USt-IdNrn. nötig). Eine Rechnung, ein Steuerfall. Bis 250 € brutto braucht es meist keine E-Rechnung (Kleinbetragsrechnung), die API erzeugt sie trotzdem.","get":{"description":"Ein GET ohne Parameter gibt diese Hilfe (?format=md als Markdown). ?example=<id> rechnet ein Beispiel des Generators durch, auch mit format=xml, pdf oder md.","examples":{"intraEu":"https://www.firma.de/api/e-rechnung/?example=intraEu","multiPage":"https://www.firma.de/api/e-rechnung/?example=multiPage","publicBuyer":"https://www.firma.de/api/e-rechnung/?example=publicBuyer","reverseChargeDomestic":"https://www.firma.de/api/e-rechnung/?example=reverseChargeDomestic","reverseChargeEu":"https://www.firma.de/api/e-rechnung/?example=reverseChargeEu","rounding":"https://www.firma.de/api/e-rechnung/?example=rounding","smallBusiness":"https://www.firma.de/api/e-rechnung/?example=smallBusiness","standardMixed":"https://www.firma.de/api/e-rechnung/?example=standardMixed","taxNumberOnly":"https://www.firma.de/api/e-rechnung/?example=taxNumberOnly"},"xml":"https://www.firma.de/api/e-rechnung/?example=standardMixed&format=xml","pdf":"https://www.firma.de/api/e-rechnung/?example=standardMixed&format=pdf"},"post":{"contentType":"application/json","description":"POST mit JSON in der Form des Entwurfs (wie draft in der Antwort): seller, buyer, lines (höchstens 50), number, issueDate, service, payment, taxCase, format, note, cashAccounting. Fehlende Felder und null lassen den Standard stehen, \"\" leert ein Feld. Ungültige Werte und unbekannte Felder geben 400 mit problems je Feld.","example":{"format":"zugferd","taxCase":"standard","number":"RE-2026-001","issueDate":"2026-11-04","service":{"mode":"date","date":"2026-11-02"},"seller":{"name":"Muster Software GmbH","street":"Musterstraße 1","postcode":"80331","city":"München","vatId":"DE123456789","contact":{"name":"Erika Musterfrau","phone":"+49 89 1234567","email":"rechnung@muster-software.example"},"iban":"DE89 3704 0044 0532 0130 00"},"buyer":{"name":"Beispiel Handels GmbH","street":"Beispielweg 22","postcode":"10115","city":"Berlin","country":"DE","email":"eingangsrechnungen@beispiel-handel.example","reference":"Bestellung 4711"},"lines":[{"description":"Beratung Buchhaltungssoftware","quantity":4,"unit":"HUR","price":120,"vatRate":19},{"description":"Fachbuch","quantity":1,"unit":"H87","price":24.3,"vatRate":7}],"payment":{"terms":"days","dueDays":14}},"url":"https://www.firma.de/api/e-rechnung/"},"formats":{"json":"Standard: Hinweise, Summen, XML als Text und der vervollständigte Entwurf.","md":"Die Rechnung als Markdown mit Hinweisen, für Menschen.","pdf":"Die PDF-Datei: bei format=zugferd im Entwurf die ZUGFeRD-PDF (PDF/A-3b mit factur-x.xml), bei format=xrechnung eine lesbare Kopie ohne XML.","xml":"Nur das XML (application/xml): XRechnung oder ZUGFeRD-XML, je nach format im Entwurf."},"answer":{"blocked":"true, wenn das XML so abgelehnt würde oder die Rechnung nicht stimmen kann (fehlende Angaben, falsche IBAN, Steuerfall passt nicht zum Kunden): Dann ist xml null, ?format=xml und ?format=pdf antworten mit 422.","blockedReason":"Welcher Hinweis sperrt (check) und warum; sonst null.","checks":"Hinweise, die ernstesten zuerst. level stop: so keine E-Rechnung; warn: prüfen; info: gut zu wissen (E-Rechnungspflicht, Übergangsregeln, Kleinbetrag, Kleinunternehmer, Reverse Charge). law nennt die Norm, lawUrl den Gesetzestext.","complete":"true, wenn keine Angabe mehr fehlt.","draft":"Der Entwurf, wie er in die Rechnung eingeht, geprüft und vervollständigt. Als POST-Body zurückgeschickt, ändert er sich mit weiteren Feldern.","fileName":"Vorgeschlagener Dateiname für das XML.","missing":"Was noch fehlt, mit Feldpfad und deutscher Bezeichnung.","specificationId":"BT-24 des XML: welche Spezifikation es erfüllt.","stand":"Datum, zu dem Formate, Regeln und Hinweise zuletzt geprüft wurden.","totals":"Die Beträge in Euro: je Position netto, je Steuersatz Bemessungsgrundlage und Steuer, Summe netto, Umsatzsteuer, Rechnungsbetrag, Zahlbetrag und, bei Skonto, der Skontobetrag.","versions":"Die Versionen von XRechnung und ZUGFeRD, die die API schreibt.","xml":"Das XML als Text (UTF-8), oder null, solange ein Hinweis sperrt."},"statuses":"200 auch für unvollständige (complete: false) und gesperrte (blocked: true) Entwürfe im JSON-Format: Der Generator ist gelaufen. 400 mit problems je Feld bei ungültigen Werten oder unbekannten Feldern. 413 über 64000 Bytes, 422 für xml oder pdf eines gesperrten Entwurfs, 429 bei mehr als 60 Aufrufen pro Minute (PDF: 12).","versions":{"xrechnung":{"bundle":"3.0.2","specificationId":"urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0","validUntil":"2027-07-31","version":"3.0"},"zugferd":{"facturX":"1.09.2","profile":"EN 16931","specificationId":"urn:cen.eu:en16931:2017","version":"2.5.2"}},"stand":"2026-11-04","disclaimer":"Ein Werkzeug, keine Steuerberatung im Einzelfall. Für den Inhalt der Rechnung bleibst du verantwortlich. Geprüft werden Pflichtfelder, Prüfziffern und Rechenregeln; das Format ist mit den Beispielen gegen den KoSIT-Validator und Mustang getestet. Ob die Angaben stimmen, prüft die API nicht."}