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.
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.