FacturXInvoice
Minimal ZUGFeRD / Factur-X invoice carrying the fields of the EN 16931 MINIMUM profile — the smallest conformance level a Factur-X factur-x.xml may declare.
The MINIMUM profile is deliberately tiny: it covers the parties, the document identity, the currency, and the four monetary totals a tax authority needs to recognise the document as an invoice. It is not sufficient for fully automated booking (no line items, no payment terms) — for those, model the richer BASIC / EN 16931 / EXTENDED profiles.
Build the XML with toXml and embed it next to the human-readable pages with PdfTools.attachFacturX (JVM/Desktop) so a single PDF carries both the visual invoice and its machine-readable companion.
Honest scope: this models the MINIMUM profile only and performs no semantic validation (it will happily emit totals that do not add up). Run the output through a Factur-X validator (e.g. the Mustangproject validator or the FNFE-MPE online checker) before relying on it in production.
Monetary amounts are passed as already-formatted decimal strings (e.g. "100.00") so the caller controls rounding and decimal separator — the XML requires a .-separated decimal with no thousands separator.
Properties
the invoice currency as an ISO 4217 code, e.g. "EUR".
the amount actually due for payment (ram:DuePayableAmount), as a decimal string — usually equal to grandTotal unless a prepayment was made.
the invoice total including tax (ram:GrandTotalAmount), as a decimal string.
the invoice identifier (ram:ID). Required.
the issue date as a yyyyMMdd string (the format MINIMUM mandates, format="102"), e.g. "20260607".
the seller's ISO 3166-1 alpha-2 country code, e.g. "DE".
the seller's trading name (ram:SellerTradeParty).
the seller's VAT registration id (schemeID="VA"); null omits the VAT registration element.
the sum of all line net amounts before tax (ram:TaxBasisTotalAmount), as a decimal string.