LuaBill · Documentation

Create a ZUGFeRD invoice

ZUGFeRD combines the readable PDF and structured invoice data in one PDF/A-3 file.

Choose ZUGFeRD and prepare the tools

Select ZUGFeRD under Files and output for a supported invoice document. Prepare LuaLaTeX, Java 17+ and Ghostscript, or choose the ZUGFeRD profile in the component setup wizard. Complete the structured invoice fields before generating.

LuaBill uses the EN 16931 profile. Its pinned Mustang package includes the ZUGFeRD 2.5.2 / Factur-X 1.09.2 rules, together with the reviewed additional EN 16931 and XRechnung resources shown in the application. Check the recipient's requested format and profile.

Prepare the document tools →Understand structured invoice data →

How the PDF and XML are combined

LuaLaTeX creates the visual document, Ghostscript prepares PDF/A and Mustang embeds the invoice XML and metadata. LuaBill validates the structured invoice and PDF/A container and checks that the embedded XML matches the separately exported XML.

The result folder contains the hybrid PDF, its sidecar XML and validation files. A normal PDF without this attachment and metadata is still a normal PDF; a payment QR code, stamp or signature image does not make it a ZUGFeRD invoice.

  • Open the PDF in a viewer that can list attachments to inspect zugferd-invoice.xml.
  • Check the application's validation result and retained reports.
  • Compare visible key values with the structured data before issuing the invoice.

Which file to send

If ZUGFeRD is accepted, send the generated hybrid PDF through the agreed channel. Its invoice XML is already inside the PDF, so a separate XML is normally unnecessary unless the recipient requests it. Keep the sidecar XML and reports for your records.

The XML carries structured business information, not the page layout or decorative images. Shared notes keep their LaTeX source, while the PDF renders the formulas. PDF-only introductory text and imported comments are not additional structured invoice fields.

Download the electronic invoice example →Troubleshoot generation or validation →
← Back to documentation