Konforme E‑Rechnungen aus Ihrem Code.
Rechnungs-JSON rein, konformes XRechnung- oder ZUGFeRD / Factur-X-Dokument raus — XRechnung geprüft gegen den offiziellen KoSIT-Validator, mit der exakten Lösung, wenn eine Regel scheitert. Probieren Sie es: unten läuft die echte Engine, direkt im Browser.
<?xml version="1.0" encoding="UTF-8"?> <Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"> <cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID> <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID> <cbc:ID>RE-2026-0042</cbc:ID> <cbc:IssueDate>2026-06-11</cbc:IssueDate> <cbc:DueDate>2026-07-11</cbc:DueDate> <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode> <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode> <cbc:BuyerReference>PO-2026-0117</cbc:BuyerReference> <cac:AccountingSupplierParty> <cac:Party> <cbc:EndpointID schemeID="EM">billing@acme.example</cbc:EndpointID> <cac:PostalAddress> <cbc:CityName>Berlin</cbc:CityName> <cbc:PostalZone>10115</cbc:PostalZone> <cac:Country> <cbc:IdentificationCode>DE</cbc:IdentificationCode> </cac:Country> </cac:PostalAddress> <cac:PartyTaxScheme> <cbc:CompanyID>DE123456789</cbc:CompanyID> <cac:TaxScheme> <cbc:ID>VAT</cbc:ID> </cac:TaxScheme> </cac:PartyTaxScheme> <cac:PartyLegalEntity> <cbc:RegistrationName>Acme GmbH</cbc:RegistrationName> </cac:PartyLegalEntity> <cac:Contact> <cbc:Name>Billing</cbc:Name> <cbc:Telephone>+49 30 1234567</cbc:Telephone> <cbc:ElectronicMail>billing@acme.example</cbc:ElectronicMail> </cac:Contact> </cac:Party> </cac:AccountingSupplierParty> <cac:AccountingCustomerParty> <cac:Party> <cbc:EndpointID schemeID="EM">ap@kunde.example</cbc:EndpointID> <cac:PostalAddress> <cbc:CityName>München</cbc:CityName> <cbc:PostalZone>80331</cbc:PostalZone> <cac:Country> <cbc:IdentificationCode>DE</cbc:IdentificationCode> </cac:Country> </cac:PostalAddress> <cac:PartyLegalEntity> <cbc:RegistrationName>Kunde AG</cbc:RegistrationName> </cac:PartyLegalEntity> <cac:Contact> <cbc:ElectronicMail>ap@kunde.example</cbc:ElectronicMail> </cac:Contact> </cac:Party> </cac:AccountingCustomerParty> <cac:PaymentMeans> <cbc:PaymentMeansCode>58</cbc:PaymentMeansCode> <cac:PayeeFinancialAccount> <cbc:ID>DE89370400440532013000</cbc:ID> </cac:PayeeFinancialAccount> </cac:PaymentMeans> <cac:TaxTotal> <cbc:TaxAmount currencyID="EUR">228.00</cbc:TaxAmount> <cac:TaxSubtotal> <cbc:TaxableAmount currencyID="EUR">1200.00</cbc:TaxableAmount> <cbc:TaxAmount currencyID="EUR">228.00</cbc:TaxAmount> <cac:TaxCategory> <cbc:ID>S</cbc:ID> <cbc:Percent>19</cbc:Percent> <cac:TaxScheme> <cbc:ID>VAT</cbc:ID> </cac:TaxScheme> </cac:TaxCategory> </cac:TaxSubtotal> </cac:TaxTotal> <cac:LegalMonetaryTotal> <cbc:LineExtensionAmount currencyID="EUR">1200.00</cbc:LineExtensionAmount> <cbc:TaxExclusiveAmount currencyID="EUR">1200.00</cbc:TaxExclusiveAmount> <cbc:TaxInclusiveAmount currencyID="EUR">1428.00</cbc:TaxInclusiveAmount> <cbc:PayableAmount currencyID="EUR">1428.00</cbc:PayableAmount> </cac:LegalMonetaryTotal> <cac:InvoiceLine> <cbc:ID>1</cbc:ID> <cbc:InvoicedQuantity unitCode="C62">10</cbc:InvoicedQuantity> <cbc:LineExtensionAmount currencyID="EUR">1200.00</cbc:LineExtensionAmount> <cac:Item> <cbc:Name>Consulting services</cbc:Name> <cac:ClassifiedTaxCategory> <cbc:ID>S</cbc:ID> <cbc:Percent>19</cbc:Percent> <cac:TaxScheme> <cbc:ID>VAT</cbc:ID> </cac:TaxScheme> </cac:ClassifiedTaxCategory> </cac:Item> <cac:Price> <cbc:PriceAmount currencyID="EUR">120</cbc:PriceAmount> </cac:Price> </cac:InvoiceLine> </Invoice>
Sie bauen Rechnungsstellung in Ihr Produkt? 12 Monate Growth kostenlos für die ersten 10 Design-Partner→
Empfang von E‑Rechnungen: Pflicht für jedes deutsche Unternehmen seit Jan. 2025 · Ausstellen folgt ab Jan. 2027 · Frankreich startet Sep. 2026. Pflicht-Checkliste →
Fehler, die Sie wirklich beheben können.
Andere Validatoren liefern einen Schematron-Regelcode und wünschen viel Glück. Wir liefern die Regel, den Pfad in Ihrem JSON, was falsch ist — und wie Sie es beheben.
Ein Regelcode. Viel Glück.
[error] BR-DE-15 | XRechnung_3.0 | severity=fatal cvc-complex-type.2.4.b: The content of element 'cac:PartyIdentification' is not complete. One of '{urn:oasis:names:specification:ubl:schema:xsd: CommonBasicComponents-2}ID' is expected. (line 47, col 28)
Die exakte Lösung.
Ein typisierter Report: Regel, Schweregrad, der Pfad in Ihrem Request, eine verständliche Meldung und eine konkrete Lösung — niemals ein stillschweigend ungültiges Dokument.
{
"valid": false,
"format": "xrechnung-3.0",
"profile": "XRechnung 3.0.2 (UBL 2.1)",
"tier": "schematron",
"counts": {
"errors": 1,
"warnings": 0
},
"issues": [
{
"severity": "error",
"rule": "BR-DE-15",
"path": "invoice.buyer_reference",
"message": "Buyer reference (BT-10) is missing. XRechnung requires it; public-sector buyers in Germany use their Leitweg-ID here.",
"fix": "Set invoice.buyer_reference. Leitweg-ID format: 04011000-1234512345-06.",
"docs_url": "https://normbill.com/docs/rules/br-de-15",
"location": "/ubl:Invoice/cbc:BuyerReference"
}
]
}Spricht Ihr JSON.
Offizielle Fehlermeldungen kommen als BT-Nummern und XPath. Wir ordnen jede dem Feld in Ihrem Request zu — die Lösung landet dort, wo Sie getippt haben.
Validiert, bevor Sie es sehen.
Jede XRechnung hat alle drei Stufen bereits bestanden — das letzte Wort hat der KoSIT-Validator. ZUGFeRD / Factur-X und Peppol BIS werden auf Stufe 1 geprüft.
Die erste konforme Rechnung in fünf Minuten.
Rechnungsdaten als JSON senden. Zurück kommt validiertes XRechnung-XML oder ein hybrides ZUGFeRD / Factur-X-PDF — plus vollständiger Validierungsreport. Einfaches REST aus jeder Sprache, kein SDK nötig.
curl https://api.normbill.com/v1/invoices/generate \ -H "Authorization: Bearer sk_live_..." \ -H "Content-Type: application/json" \ -d '{ "format": "xrechnung-3.0", "invoice": { "number": "INV-2026-0001", "issue_date": "2026-06-15", "due_date": "2026-07-15", "buyer_reference": "04011000-1234512345-06", "seller": { "name": "Muster Lieferant GmbH", "vat_id": "DE123456789", "address": { "country": "DE", "city": "Berlin", "postal_code": "10115" }, "contact": { "name": "Billing", "phone": "+49 30 1234567", "email": "billing@lieferant.example" } }, "buyer": { "name": "Beispiel Kunde AG", "address": { "country": "DE", "city": "Hamburg", "postal_code": "20095" }, "contact": { "email": "ap@kunde.example" } }, "payment": { "iban": "DE89370400440532013000" }, "lines": [{ "name": "Beratungsleistung", "qty": 10, "unit_price": 100, "vat": 19 }] } }'
Alles, was die Pflicht verlangt.
Ein POST, validiert.
XRechnung (UBL oder CII) und Peppol BIS 3.0 aus demselben JSON — XRechnung geprüft gegen den offiziellen KoSIT-Validator, bevor Sie es zurückbekommen.
POST /v1/invoices/generateBeide Richtungen.
Eingehende UBL- und CII-Rechnungen (ZUGFeRD) zu typisiertem JSON parsen; hybride ZUGFeRD / Factur-X-PDF/A-3 in den Bezahlplänen.
POST /v1/invoices/parseEinfaches REST, typisierte Clients.
TypeScript- und PHP-Clients, ein MCP-Server für KI-Agenten, OpenAPI-Spezifikation, RFC-9457-Fehler — und ein Browser-Playground mit der echten Engine.
Nichts wird gespeichert.
Rechnungen werden im Speicher verarbeitet und zurückgegeben — nie persistiert, von den Logs ausgeschlossen. EU-Hosting, AVV inklusive.
DSGVO · EU-Hosting12 Monate Growth kostenlos — für die ersten 10 Produktteams.
Sie bauen Rechnungsstellung in Ihre Software und wollen vor dem Q4-Ansturm bereit für die E‑Rechnungspflicht sein. Als Design-Partner erhalten Sie den Growth-Plan ein Jahr kostenlos (Wert: 1.788 €) und die Begleitung direkt aus der Entwicklung — im Gegenzug für ein Logo, ein ehrliches Zitat und ein Feedback-Gespräch.
Das volle Produkt, ein Jahr kostenlos
- Growth-Plan für 12 Monate — jedes Format, jedes Feature
- Direkter Draht in die Entwicklung; wir öffnen den Integrations-PR in Ihrem Repo
- Roadmap-Priorität (GoBD-Archiv, Peppol-Transport)
Den Beweis, dass es funktioniert
- Erlaubnis, Ihr Logo auf normbill.com zu zeigen
- Ein kurzes Zitat (1–2 Sätze) nach dem Go-Live
- Ein 30-minütiges Feedback-Gespräch
Gebaut für Produktteams
- Vertikale SaaS, deren Nutzer aus Ihrem Produkt fakturieren
- Sie können den Export in Wochen ausliefern, nicht in Quartalen
- Nichts für Einzelrechnungen kleiner Firmen — dafür braucht es eine App, keine API
Kostenlos starten. Kein Vertriebsgespräch nötig.
Sie zahlen nur für erzeugte und eingelesene Dokumente. Validierung, Wiederholungen und fehlgeschlagene Aufrufe sind kostenlos.
Alle Preise zzgl. USt. Kunden in DE: +19 % MwSt. beim Checkout. EU-B2B mit gültiger USt-IdNr.: Reverse Charge.
50 Dokumente im Monat, offizielle KoSIT-Validierung für XRechnung, Test- & Live-Keys. Ohne Kreditkarte.
Kostenlos starten →Solo
≈ 0,038 € pro Dokument
Über dem Kontingent, solange die nutzungsabhängige Abrechnung für Ihr Abonnement aktiv ist: 0,06 € je zusätzlichem Dokument, gedeckelt auf das 2-Fache der Tarifgebühr. Andernfalls stoppen weitere Aufrufe am Kontingent mit einem 429.
- 500 Dokumente / Monat
- ZUGFeRD / Factur-X Hybrid-PDF
- Erzeugen, validieren & parsen
- E-Mail-Support
Starter
≈ 0,02 € pro Dokument
Über dem Kontingent, solange die nutzungsabhängige Abrechnung für Ihr Abonnement aktiv ist: 0,04 € je zusätzlichem Dokument, gedeckelt auf das 2-Fache der Tarifgebühr. Andernfalls stoppen weitere Aufrufe am Kontingent mit einem 429.
- 2.500 Dokumente / Monat
- ZUGFeRD / Factur-X Hybrid-PDF
- Erzeugen, validieren & parsen
- E-Mail-Support
Growth
≈ 0,012 € pro Dokument
Über dem Kontingent, solange die nutzungsabhängige Abrechnung für Ihr Abonnement aktiv ist: 0,02 € je zusätzlichem Dokument, gedeckelt auf das 2-Fache der Tarifgebühr. Andernfalls stoppen weitere Aufrufe am Kontingent mit einem 429.
- 12.000 Dokumente / Monat
- ZUGFeRD / Factur-X Hybrid-PDF
- Priorisierter Support
- Zahlung auf Rechnung (SEPA, 30 Tage netto) auf Anfrage
75.000+ Dokumente im Monat? Ab 690 €/Monat zzgl. USt. im Jahresvertrag: dedizierter Support, EU-Datenresidenz-Garantie, Zahlung auf Rechnung (SEPA, 30 Tage netto).
Sprechen Sie uns an →Fragen, die Entwickler wirklich stellen.
Ist das konform zur E-Rechnungspflicht?
Die Ausgabe entspricht EN 16931, der europäischen Norm hinter der deutschen Pflicht. XRechnung-Dokumente folgen der aktuellen KoSIT-Spezifikation und werden vor der Rückgabe gegen das offizielle KoSIT-Schematron validiert; ZUGFeRD-Ausgabe ist valides Factur-X mit strukturellen EN-16931-Prüfungen. Die inhaltliche Richtigkeit (korrekte Umsatzsteuer, Pflichtreferenzen Ihres Käufers) hängt von Ihren Daten ab — genau dazu liefert der Validierungsreport die Hinweise.
XRechnung oder ZUGFeRD — was brauche ich?
XRechnung ist reines XML — Pflicht bei deutschen Behörden (B2G) und im B2B verbreitet. ZUGFeRD / Factur-X ist ein normales PDF mit demselben strukturierten XML eingebettet — Mensch und Maschine lesen dasselbe Dokument. Beide erfüllen die Pflicht; viele Teams senden ZUGFeRD an Unternehmen und XRechnung an Behörden. Die API erzeugt beides aus demselben JSON.
Speichert ihr unsere Rechnungsdaten?
Nein. Rechnungen werden im Speicher verarbeitet und zurückgegeben; nichts wird persistiert, Request-Bodies sind von den Logs ausgeschlossen. EU-Hosting, DSGVO-konform — es gibt keine Aufbewahrungseinstellung, weil nichts aufbewahrt wird.
Kann ich extern erzeugte Rechnungen validieren?
Ja — XRechnung (UBL oder CII) an /v1/invoices/validate für die autoritative KoSIT-Validierung; ZUGFeRD / Factur-X CII heute auf der strukturellen EN-16931-Ebene. Oder den kostenlosen Validator ohne Key nutzen. So oder so: jede verletzte Regel mit ID, Schweregrad, verständlicher Meldung und Korrekturvorschlag. Validierung ist im Fair-Use (5× Kontingent) kostenlos und zählt nie als Dokument.
Wir sind ein SaaS und stellen Rechnungen für unsere Kunden — können wir das einbetten?
Genau der Kernanwendungsfall. Ein API-Key, plus ein freies metadata-Objekt auf jeder Rechnung für Ihre eigene Mandanten-Zuordnung. Die API antwortet synchron — Ihre Nutzer sehen normbill nie, sie bekommen einfach konforme Rechnungen aus Ihrem Produkt. Bei Plattform-Volumen bietet der Platform-Tarif Zahlung auf Rechnung, dedizierten Support und eine EU-Datenresidenz-Garantie.
Könnt ihr Rechnungen über Peppol zustellen?
Die API erzeugt heute Peppol BIS Billing 3.0 UBL — Ihre Dokumente sind netzwerkfertig. Die Übertragung über das Peppol-Netzwerk (zertifizierter Access Point) steht auf der Roadmap — Erzeugung und Validierung kommen zuerst, weil jedes Team sie am ersten Tag braucht.
Was passiert, wenn die Validierung fehlschlägt?
Sie erhalten einen 422 mit Fehlern auf Feldebene: die verletzte Regel, der Pfad in Ihrem JSON, eine verständliche Meldung und ein Korrekturvorschlag. Die API gibt niemals stillschweigend ein ungültiges Dokument zurück.
Was passiert, wenn mein Kontingent aufgebraucht ist?
Nur erfolgreich erzeugte Dokumente zählen auf Ihr Kontingent — fehlgeschlagene Versuche kosten nichts, und die Validierung hat eine eigene großzügige Freigrenze. Das Kontingent läuft mit Ihrem Abrechnungszeitraum; bei jährlicher Zahlung steht das Zwölffache des Monatskontingents für das gesamte Vertragsjahr zur Verfügung. Ab 80 % Auslastung trägt jede Antwort einen X-Quota-Warning-Header, damit Sie nichts überrascht. In Bezahlplänen mit aktiver nutzungsabhängiger Abrechnung werden Zusatzdokumente zu dem in Ihrem Tarif ausgewiesenen Preis je Dokument berechnet (gedeckelt auf das Doppelte der Grundgebühr); ist die Messung nicht aktiv, stoppen weitere Aufrufe mit einem klaren 429, statt berechnet zu werden. Der Free-Plan antwortet immer mit einem 429 und Upgrade-Link. sk_test_-Keys werden nie berechnet.
Wie erreiche ich einen Menschen?
Per E-Mail an support@normbill.com — für Support, Fragen zur Doku oder alles, was dieses FAQ nicht beantwortet. Der Einstieg steht in der öffentlichen Dokumentation.
Heute noch bereit für die Pflicht.
Kostenloser Key, 50 Rechnungen im Monat, volle Validierung. Upgrade erst, wenn echtes Volumen läuft — ohne Vertriebsgespräch, ohne Vertrag, ohne Kreditkarte.