Skip to content

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 11 Jul 12:23
· 28 commits to main since this release
  • 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, internal schemaLocation
      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 optional listID attribute on the allowance/charge reason
      code).
    • Reference .sch (Schematron) and _codedb.xml files 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".
  • New optional EXTENDED-profile input fields for selected Factur-X 1.09
    business terms (all additive, only emitted at Profile.EXTENDED):

    • PaymentInput.debtorAccountName (BT-216) and PaymentInput.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
      FinancialAdjustmentInput with reason BT-180 + amount BT-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:FormattedIssueDateTime now emits a qdt:DateTimeString child
    instead of udt:DateTimeString. It is typed as qdt:FormattedDateTimeType in
    the CII XSD, so the previous udt: 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. validateXsd now clears the table on each call, so validating many
    documents in one process no longer causes spurious failures once ~15
    validations have run.