Repository navigation
v1.2.0
-
Updated to Factur-X 1.09 / ZUGFeRD 2.5 (spec dated 2026-06-10). Factur-X
1.09 keeps the same UN/CEFACT CII D22B syntax, namespaces, and profile URNs
(urn:factur-x.eu:1p0:*) as 1.08, so this is a backward-compatible refresh:
XML produced by previous versions remains valid, and no input/output changes
are required.- Bundled XSD schemas under
schema/swapped to the official 1.09 set
(filenames normalized to the repo convention, internalschemaLocation
references rewritten to match). For MINIMUM / BASIC WL / BASIC / EN 16931 the
XSDs are content-identical to 1.08; the EXTENDED XSD gains only optional
additions (debited-account name, financial adjustment / charges on behalf of
a third party, an optionallistIDattribute on the allowance/charge reason
code). - Reference
.sch(Schematron) and_codedb.xmlfiles updated to the 1.09
code lists and CEN validation rules (effective 2026-05-15). These are not
shipped in the npm package and not used at runtime — this library performs
XSD validation only. - Documentation and code comments updated from "1.08 / 2.4" to "1.09 / 2.5".
- Bundled XSD schemas under
-
New optional EXTENDED-profile input fields for selected Factur-X 1.09
business terms (all additive, only emitted atProfile.EXTENDED):PaymentInput.debtorAccountName(BT-216) andPaymentInput.debtorBic
(BT-215) — debited-account name and its payment service provider BIC.AllowanceChargeInput.exemptionReason/exemptionReasonCode
(BT-173–176) — VAT exemption reason/code on document-level allowances and
charges.FacturXInvoiceInput.financialAdjustments(BG-34, new
FinancialAdjustmentInputwithreasonBT-180 +amountBT-179) —
charges collected on behalf of a third party.InvoiceLineInput.manufacturer(BG-X-94) — line-level product manufacturer
party (ram:ManufacturerTradeParty).- Remaining 1.09 EXTENDED terms (e.g. document-level non-VAT tax codes,
logistic-service-charge exemption reasons) are still not emitted and can be
added later without breaking changes.
-
Fixed:
ram:FormattedIssueDateTimenow emits aqdt:DateTimeStringchild
instead ofudt:DateTimeString. It is typed asqdt:FormattedDateTimeTypein
the CII XSD, so the previousudt:prefix failed XSD/Schematron validation for
every credit note or cancellation invoice referencing a dated preceding
invoice (#5). -
Fixed: XSD validation no longer exhausts libxml2's fixed-size input-callback
table.validateXsdnow clears the table on each call, so validating many
documents in one process no longer causes spurious failures once ~15
validations have run.