NormAPI – XRechnung & ZUGFeRD
By Dmytro Yalanskyi
Overview
NormAPI checks, reads and creates German e-invoices — XRechnung (UBL and CII XML) and ZUGFeRD/Factur-X PDFs — against the official KoSIT rule set, the one German public-sector portals use. Every result names the rule set version that produced it. What you can do: • Check an invoice. Upload the XML or the PDF and ask whether it is valid. You get the verdict and every finding, and each business-rule finding comes with what the rule requires, why invoices typically break it, and how to fix it, in English or German. • Read a received invoice. NormAPI turns it into structured data — seller, buyer, lines, VAT breakdown and totals exactly as the document states them — and lists anything it could not map, so questions about the invoice are answered from its data. • Look up a rule. Ask what a code such as BR-DE-15 or BR-CO-16 means and how to fix it. • Create an invoice. Describe the invoice and NormAPI produces an XRechnung (UBL or CII XML) or a ZUGFeRD PDF: an XRechnung for a public-sector buyer, a plain EN 16931 invoice for a business. Totals are computed on the server in decimal arithmetic, and the document is validated against the official rules before you get it; data the rules do not permit is refused, with the rules it breaks and how to fix each. Checking, reading and rule lookups need no account. Creating invoices needs a NormAPI account: you sign in the first time you create one, and each generated document counts against that account's monthly allowance. Invoices are processed in memory on servers in the EU and are never stored. NormAPI is technical validation, not tax or legal advice, and it does not send invoices to recipients or portals.
Tools
generate_invoice
ChatGPTubl or cii XML or a ZUGFeRD hybrid PDF (zugferd) from invoice data: an XRechnung for a public-sector buyer (profile xrechnung, the default), a plain EN 16931 invoice for a business (profile en16931). Totals are computed server-side in decimal arithmetic, and the document is validated against the official rules before it is returned. Data the rules do not permit is refused with the broken rules and how to fix each. Needs the user's NormAPI account; each generated document counts against that account's monthly allowance.parse_invoice
ChatGPTinvoice is in exactly the shape generate_invoice takes (fields the document lacks are left out); stated has the totals, the VAT breakdown and each line net as the document states them, as exact decimal strings; notMapped lists by path every value of the document the data does not carry. Send the XML as text in xml, the PDF base64-encoded in pdfBase64, or an uploaded file in file — exactly one. validate: true adds the KoSIT verdict. No account needed; 5 MB at most.validate_invoice
ChatGPTxml, the PDF base64-encoded in pdfBase64, or an uploaded file in file — exactly one. No account needed; 5 MB at most.Capabilities
Example Prompts
Click any prompt to copy it.






