Skip to content

About

eInvoice Validation rules for the phive engine - for many different countries and jurisdictions

Topics

Resources

Code of conduct

Stars

52 stars

Watchers

9 watching

Forks

Latest commit

 

History

1,338 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PHIVE rules

Sonatype Central javadoc

If this project saved you some time or made your day a little easier, a star would mean a lot — it helps others find it too.

A set of preconfigured rules for PHIVE (Philip Helger Integrative Validation Engine) - pronounced [ˈfaɪv].

This project is part of my Peppol solution stack. See https://github.com/phax/peppol for other components and libraries in that area.

All projects found in here rely on the PHIVE validation engine provided by https://github.com/phax/phive

The foundational, XSD-only document formats live in the separate repository phive-rules-foundations since v4.5.0. Their Maven and VES coordinates are unchanged.

  • pure UN/CEFACT CII
  • pure OASIS UBL
  • ebInterface (AT)
  • Facturae (ES)
  • FatturaPA (IT)
  • Finvoice (FI)
  • KSeF (PL)
  • OECD Common Reporting Standard (CRS)
  • OSA (HU)
  • TEAPPS (FI)

The outdated rule sets live in the separate repository phive-rules-legacy since v4.6.0. Their Maven and VES coordinates are unchanged.

  • older Peppol rule sets (phive-rules-peppol-legacy)
  • legacy Danish OIOUBL rule sets - 1.12.3 up to 1.17.1, 2.0.2 and 3.0.1 (phive-rules-oioubl-legacy)
  • the legacy aggregator phive-rules-all-legacy

This project is divided into sub-projects each keeping tracking of one document type set:

  • phive-rules-api - Shared UBL/CII helper classes; depends on phive-rules-foundation-api (from phive-rules-foundations) which provides the validation rules registration SPI and the core helpers
  • phive-rules-cius-dk - Validation rules for the Danish Peppol CIUS (since v4.5.7)
  • phive-rules-cius-pt - Validation rules for the Portuguese EN 16931 CIUS (since v1.0.11)
  • phive-rules-cius-ro - Validation rules for the Romanian EN 16931 CIUS (since v2.1.14)
  • phive-rules-ehf - Validation rules for Norwegian EHF (Norwegian public procurement)
  • phive-rules-en16931 - Validation rules for the EN 16931 (European e-Invoicing norm based on CEN TC 434)
  • phive-rules-energieefactuur - Validation rules for Dutch Energie eFactuur
  • phive-rules-eracun - Validation rules for Croatian eRacun (since v4.1.11) and Croatian eIzvjestavanje (e-reporting; since v4.6.2)
  • phive-rules-france - Validation rules for France (since v4.0.1)
  • phive-rules-isdoc - Validation rules for ISDOC (since v2.0.2)
  • phive-rules-oioubl - Validation rules for Danish OIOUBL - the current rule set only; the older ones are in phive-rules-legacy since v4.6.0
  • phive-rules-peppol - the Peppol specific rules - always the latest two rule sets
  • phive-rules-peppol-pint - the Peppol PINT specific rules (since v4.4.0 as separate module - previously in phive-rules-peppol)
  • phive-rules-peppol-italy - Peppol Italy specific rules (since v2.1.1)
  • phive-rules-peppol-taxdata - Peppol Tax Data Document (TDD) rules, extracted from phive-rules-peppol (since v4.4.0)
  • phive-rules-serbia - Validation rules for the Serbian SEF (SRBDT) EN 16931 CIUS and SEO logistics documents (since v4.3.9)
  • phive-rules-setu - Dutch SETU selected standards (since v3.0.4)
  • phive-rules-simplerinvoicing - Dutch Simplerinvoicing support from https://github.com/Simplerinvoicing/validation
  • phive-rules-singapore - Validation rules for the Singapore IRAS GST InvoiceNow data submission (since v4.6.1)
  • phive-rules-svefaktura - Validation rules for Swedish Svefaktura (since v1.0.6)
  • phive-rules-turkey - Validation rules for Turkey UBL-TR / e-Fatura (since v4.3.1)
  • phive-rules-ublbe - Validation rules for Belgium e-FFF/UBL.BE
  • phive-rules-xrechnung - Validation rules for German XRechnung
  • phive-rules-zatca - Validation rules for Saudi Arabian ZATCA/FATOORA format (since v3.2.7)
  • phive-rules-zugferd - Validation rules for German ZuGFERD and French Factur-X (XML part only) (since v3.2.2)

Aggregator module:

  • phive-rules-all - Aggregator depending on all current (non-legacy) modules with PhiveRulesValidation.initPhiveRules to register them all at once (since v4.4.0)

The legacy aggregator phive-rules-all-legacy moved to phive-rules-legacy in v4.6.0.

The Java code in this project is licensed under the Apache 2 license. The code of the validation artefacts used may use a different license.

Maven usage

Add the following to your pom.xml to use this artifact, replacing x.y.z with the latest version:

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-cius-pt</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-cius-ro</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-ehf</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-en16931</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-energieefactuur</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-eracun</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-france</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-isdoc</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-oioubl</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-peppol</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-peppol-pint</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-peppol-taxdata</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-peppol-italy</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-serbia</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-setu</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-simplerinvoicing</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-singapore</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-svefaktura</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-turkey</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-ublbe</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-xrechnung</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-zatca</artifactId>
  <version>x.y.z</version>
</dependency>

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-zugferd</artifactId>
  <version>x.y.z</version>
</dependency>

Alternate usage as a Maven BOM:

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-parent-pom</artifactId>
  <version>x.y.z</version>
  <type>pom</type>
  <scope>import</scope>
</dependency>

Aggregator module usage

Instead of depending on the individual modules, you can use one of the aggregator modules to register many rule sets at once.

Use phive-rules-all to get all current (non-legacy) validation rules:

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-all</artifactId>
  <version>x.y.z</version>
</dependency>

and register them all in a single call, in the proper order:

final ValidationExecutorSetRegistry <IValidationSourceXML> aRegistry = new ValidationExecutorSetRegistry <> ();
PhiveRulesValidation.initPhiveRules (aRegistry);

To additionally register the legacy rule sets, depend on phive-rules-all-legacy from phive-rules-legacy and call PhiveRulesLegacyValidation.initPhiveRulesLegacy afterwards (the current rules must be registered first):

<dependency>
  <groupId>com.helger.phive.rules</groupId>
  <artifactId>phive-rules-all-legacy</artifactId>
  <version>x.y.z</version>
</dependency>
final ValidationExecutorSetRegistry <IValidationSourceXML> aRegistry = new ValidationExecutorSetRegistry <> ();
PhiveRulesValidation.initPhiveRules (aRegistry);
PhiveRulesLegacyValidation.initPhiveRulesLegacy (aRegistry);

Alternatively, every module on the classpath that ships an IValidationRulesRegistrarSPI implementation (that is, all rule modules) can be discovered and registered automatically - including the correct ordering of modules that depend on each other - via a single call (since v4.4.0):

final ValidationExecutorSetRegistry <IValidationSourceXML> aRegistry = new ValidationExecutorSetRegistry <> ();
ValidationRulesRegistrar.registerAllValidationRules (aRegistry);

Peppol Validation Artefact Versioning

If you wonder why the Peppol version differs from the original version numbers - this is because I started versioning the Peppol artefacts before OpenPeppol did. As OpenPeppol is only changing the "micro" version part (3.0.x), whereas I started using the "minor" part (3.x) from the beginning, I could never take over the official version numbers because their version number would always "smaller" then any old version from my numbering scheme. I hope that with the introduction of PINT, the versioning problem will be solved.

News and noteworthy

v4.6.4 - work in progress

  • Updated to phive-rules-foundations 5.0.6
  • phive-rules-all now also registers the new Brazilian validation rules of phive-rules-brazil from phive-rules-foundations (NF-e/NFC-e, CT-e, MDF-e, NFCom, NF3e, BP-e, NFAg, NFGas and NFS-e, Group ID br.gov.nfe)

v4.6.3 - 2026-09-30

  • Added the France PPF Flux 10 validation rules v1.1, VES coordinate fr.ctc.flux10:report:1.1, and deprecated the 1.0 rules. See issue #90. The rules are taken from the AIFE package "AIFE - PPF_Flux10_v1.1", which contains the Schematron file PPF_Flux10_1_8_v0_3.sch only. The AIFE XSDs are unchanged - they are still the ones from XSD_Flux10.zip. The only change is to rule G1.53, both for invoices (Invoice) and for aggregated transactions (Transactions):
    • The check that the total amount without VAT equals the sum of the VAT taxable amounts is now applied for every currency - previously it was only applied if the currency was EUR
    • The check that the total VAT amount equals the sum of the VAT subtotal amounts is still only applied if the currency is EUR
  • Added the Croatian eRacun validation rules v1.0.4, VES coordinates hr.gov.porezna.eracun:ubl-invoice:1.0.4 and hr.gov.porezna.eracun:ubl-creditnote:1.0.4, and deprecated the 1.0.2 rules. See issue #93. The rules are taken from the Porezna uprava package HRUBLSchematron_13032026-2.zip ("Validator - dorađena verzija - u primjeni od 15.3.2026.", 2026-03-13). Changes compared to 1.0.3:
    • The OIB check function also validates the 11 digit format itself
    • The OIB checks of the supplier, customer and tax representative VAT identifiers use cac:PartyTaxScheme rule contexts; the supplier rule now has the correct ID HR-BR-53 (previously HR-BR-54)
    • HR-BR-56 moved to a different rule context
    • The payment due date rule has its own cac:PaymentMeans context and no longer applies if no cbc:PaymentDueDate is present (previously: if the payable amount is not positive)
    • The number format helper (at most 30 digits and 10 decimals) was rewritten
  • Added the SG BIS Order Balance validation rules v1.0.2 (released 2026-06-08, mandatory from 2026-09-08), VES coordinate org.peppol.sg:order-balance:1.0.2, and deprecated the 1.0 rules. See issue #91. The previous VES version 1.0 corresponds to the upstream version 1.0.0; the upstream version 1.0.1 was not added separately. The only changes are updated code lists (currency codes, units of measure, ISO 6523 ICD and EAS), aligned with the latest Peppol BIS Billing 3 release
  • Added the SETU TimeCard validation rules v1.4.2, VES coordinate nl.setu:timecard:1.4.2, and deprecated nl.setu:timecard:1.4. See issue #94. The only change is the new value Break in the code list SETU_CL_HourTypes (upstream change log "07/10/2024 v1.4.2"). The Assignment, HumanResource and StaffingOrder rules are unchanged and stay at version 1.4
  • Updated the Peppol Italy (AGID) validation rules it.peppol:*:3.2.1 in place to the AGID packages re-published on 2026-08-17, which are based on Peppol BIS Billing 3.0.21. See issue #92. AGID changed the content without changing the version number, so the VES coordinates are unchanged. The AGID specific invoice and credit note rules are unchanged. The Order, Despatch Advice, Order Response and Order Agreement rules were updated to the latest Peppol BIS Post-Award rules (e.g. new PEPPOL-COMMON-R042, PEPPOL-COMMON-R052 and PEPPOL-COMMON-R053, removed PEPPOL-COMMON-R048, updated code lists)
  • Added the EHF Post-Award G3 validation rules of release 2026-09-29 in the new class EHFValidationG3_2026_09, and deprecated EHFValidationG3_2023_02. See issue #95. All VES versions were increased by one: no.ehf.g3:*:3.0.4, and no.ehf.g3:despatch-advice:3.0.3 and no.ehf.g3:payment-request:3.0.3. Relevant upstream rule changes since release 2023-02:
    • Release 2024-09-18 added about 4130 EHF-QII-G1-* rules (Qualified Item Information) to Catalogue, Punch Out, Order Agreement, Order Response and Advanced Order Response
    • Release 2026-08-13 updated the CEN and Peppol BIS Billing rules used by Forward Billing and Reminder, and added EHF Self-Billing 3.0
    • The releases 2026-01-14, 2026-01-22 and 2026-09-29 contain no rule changes
  • Added the EHF Self-Billing 3.0 validation rules, VES coordinates no.ehf.g3:invoice-self-billing:3.0.0 and no.ehf.g3:creditnote-self-billing:3.0.0. They are based on the EN 16931 1.3.16 UBL rules, because the EHF package only contains the Self-Billing specific rules. Therefore phive-rules-ehf now depends on phive-rules-en16931, and EHFValidationSPI declares the EN 16931 1.3.16 VES as prerequisites

v4.6.2 - 2026-09-28

  • Added the Croatian eIzvjestavanje (e-reporting) XML Schema validation rules to phive-rules-eracun, VES coordinate hr.gov.porezna.eracun:eizvjestavanje:1.0. See issue #89. This is an addition and not a change of the existing hr.gov.porezna.eracun:ubl-invoice and hr.gov.porezna.eracun:ubl-creditnote rule sets - the eIzvjestavanje messages are not UBL documents and have no EN 16931 base. The XML Schema is taken unmodified from the eIzvjestavanjeSchema.zip attached to that issue - the packaged state of 2026-02-09, with 2026-01-30 as the last entry of the change log inside the schema. The VES version 1.0 is the version attribute of that schema. It covers all four message pairs of the service: EvidentirajNaplatu (payments), EvidentirajOdbijanje (rejections), EvidentirajIsporukuZaKojuNijeIzdanERacun and OvlastenjaFiskalizacije. There is no Schematron for these messages, so the XML Schema is the only validation layer. A single VES covers all of them, because the XML Schema validation layer accepts every global element declared in the schema and cannot be restricted to a single root element. Among other things this validates the payment method code nacinPlacanja against its allowed values T, O and Z, which was the reported gap. phive-rules-eracun now depends on ph-xsds-xmldsig, because the schema requires a ds:Signature in every message.

v4.6.1 - 2026-09-25

  • Recreated 521 of the 580 pre-compiled Schematron XSLTs with ph-schematron 10.1.0 - every version of every rule set that has its Schematron source in this repository. Most of the committed files were still the output of much older ph-schematron versions. This changes the emitted SVRL:
    • svrl:active-pattern is now empty, as the SVRL grammar requires. It no longer carries the non-standard attribute @document - only the ISO conformant @documents is emitted - and the pattern title is no longer emitted as an svrl:text child of it. Code that read the pattern title from the SVRL report has to use the @id or @name attribute of svrl:active-pattern instead.
    • The stray xsl:apply-templates call inside svrl:active-pattern is gone, so no further child elements can end up in it.
    • The text of a svrl:diagnostic-reference is now wrapped in an svrl:text element instead of being a direct text child.
    • The generated pattern traversal now selects @*|* instead of *, so Schematron rules with an attribute context are evaluated at all. See ph-schematron #123 - that fix is in ph-schematron since v6.2.6, but the affected XSLTs were older than that. Except where noted below, no rule text and no XPath expression of any rule set changed. This was verified by comparing the canonical XML of every regenerated file against its predecessor, so that attribute order, indentation and XML escaping are ignored.
  • The Peppol Tax Data Document Oman 1.0.0 XSLT now matches its own Schematron source again. The committed XSLT had been built from a different revision than the committed .sch, so it still contained the rule ibr-tdd-59 and was missing the currency codes ANG and BGN.
  • The ZUGFeRD 2.5 XSLTs are intentionally left as they are. They are the prebuilt XSLTs from the ZUGFeRD distribution, and that distribution's own .sch files describe four patterns fewer and reference differently named code database files, so regenerating them would silently drop validation rules.
  • Not regenerated because they have no Schematron source in this repository - they are taken from their respective upstream distributions: all XSLTs of phive-rules-en16931 and phive-rules-svefaktura, the XSLs of phive-rules-zatca, and ZUGFeRD 2.1.
  • Updated to phive-rules-foundations 5.0.4, which adds the new module phive-rules-crs with the OECD Common Reporting Standard (CRS) XML Schema, VES coordinates org.oecd.ties:crs:2.0 and org.oecd.ties:crs:3.0. It is registered by PhiveRulesValidation.initPhiveRules like all other foundational modules. See issue #57.
  • Added the Singapore IRAS GST InvoiceNow data submission validation rules in the new module phive-rules-singapore, VES coordinate sg.gov.iras:invoicenow-gst:2026.9.8. See issue #57. The rules are taken from the GST InvoiceNow requirement resources of the IRAS C5 accreditation package, state of 2026-09-08. IRAS does not maintain a version number in the Schematron - its title has been claiming "v0.3.4" since January 2025 - so the date of the last entry of the accompanying changelog is used as the version. The validated document is the complete SBDH envelope and not the contained UBL Invoice or Credit Note, because the rules IRASC5-001 to IRASC5-004 have the SBDH header as their context. The XML Schema layer is applied to the parts of the envelope rather than to the envelope as a whole: the SBDH header and every contained Invoice and Credit Note is validated separately with ValidationExecutorXSDPartial. That is necessary because a single submission may carry more than one UBL document ("bulk" submission), whereas the StandardBusinessDocument of the SBDH 1.3 XML Schema declares a single xs:any. As a side effect the SBDH envelope is now mandatory - an unwrapped UBL Invoice is rejected, whereas the Schematron alone reports nothing at all for it, because its envelope rules simply do not match.

v4.6.0 - 2026-09-23

  • Moved the legacy validation rules out into the separate repository phive-rules-legacy, so that the current rules can be built and released without the accumulated weight of all historic rule sets. All Maven and VES coordinates are unchanged.
    • phive-rules-peppol-legacy and phive-rules-all-legacy moved there unchanged
    • The legacy Danish OIOUBL rule sets moved into the new module phive-rules-oioubl-legacy there. phive-rules-oioubl retains only the current 1.17.2 rule set; the deprecated 1.12.3, 1.13.0, 1.13.2, 1.14.2, 1.15.0-rc, 1.15.1, 1.15.2, 1.16.1, 1.17.0-rc and 1.17.1 rule sets (VES group dk.oioubl) are now registered by OIOUBLValidationOlder in package com.helger.phive.oioubl.legacy
    • OIOUBLLegacyValidation (VES group dk.oioubl.legacy, versions 2.0.2 and 3.0.1) moved from package com.helger.phive.oioubl to com.helger.phive.oioubl.legacy in phive-rules-oioubl-legacy
    • OIOUBLValidationSPI no longer declares any prerequisite and no longer registers the legacy OIOUBL rules, so phive-rules-oioubl no longer depends on phive-rules-en16931
    • The Peppol openpeppol 2024.5 and 2024.11 Schematron XSLTs moved from phive-rules-peppol to phive-rules-peppol-legacy - they were only referenced by the legacy rule sets, but had been left behind when those rule sets were moved in v4.1.2
    • This reduces the phive-rules-oioubl JAR from 15.0 MB to 2.3 MB and the total size of all deployed JARs from 34.6 MB to roughly 17 MB
  • phive-rules-peppol-legacy now declares ph-ubl21 and ph-ubl23 explicitly instead of inheriting them from phive-rules-peppol
  • The test sources are no longer deployed to Maven Central. The -test-sources.jar artefacts contained all the sample documents and Schematron rule sources and made up 135 of the 175 MB of the Central bundle (phive-rules-ublbe alone shipped a 0.67 MB JAR next to a 53.67 MB test sources JAR), without being usable by anyone. The bundle is now roughly 40 MB.

v4.5.7 - 2026-09-22

  • Added the Peppol BIS Billing Singapore 2026.6 rules (aka BIS 3.0.17, released 2026-06-08), VES coordinates eu.peppol.bis3.sg.ubl:invoice:2026.6 and eu.peppol.bis3.sg.ubl:creditnote:2026.6, and deprecated the 2024.12 (aka BIS 3.0.14) rules. See issue #88. The rules are taken from SG-BIS-Billing3-Schematron.zip and are marked as valid from 2026-09-08, the mandatory use date stated in the SG release notes. It contains the accumulated changes of BIS 3.0.15 (2025-05-21), 3.0.16 (2025-12-11) and 3.0.17:
    • The eight Singapore GST rules BR-106-GST-SG, BR-107-GST-SG, BR-108-GST-SG, BR-109-GST-SG, BR-111-GST-SG, BR-112-GST-SG, BR-113-GST-SG and UBL-SR-53-SG were raised from "warning" to "fatal" - this may break existing validation workflows, please evaluate the impact
    • The rules BR-CO-25, BR-66, BR-67 and UBL-CR-631 were removed to align with Peppol BIS Billing 3
    • UBL-CR-674 now tests cbc:PrimaryAccountNumberID instead of the non-existing cbc:PrimaryAccountNumber, so the rule is effective at all
    • UBL-SR-22 now uses the context relative path cac:PartyName/cbc:Name instead of cac:Party/cac:PartyName/cbc:Name, so the rule is effective at all
    • PEPPOL-EN16931-R051 also takes cac:TaxSubtotal/cbc:TaxAmount into account
    • All assertion messages of SG-Subset-PEPPOL-EN16931-UBL.sch are now prefixed with the rule identifier in brackets (e.g. [PEPPOL-EN16931-R001]-), matching the CEN ruleset convention
    • Code lists updated: document type codes (BR-CL-01), currency codes (BR-CL-03, BR-CL-04, BR-CL-05), ICD (BR-CL-10, BR-CL-11, BR-CL-21, BR-CL-26), item classification identifiers (BR-CL-13) and the electronic address schemes (BR-CL-25 and PEPPOL-EN16931-CL008)
  • The test file "SG INV example 07 - Foreign buyer.xml" of the Singapore 2026.6 examples is not part of the test files, because it uses the Buyer electronic address scheme 0193 that was removed from the PEPPOL-EN16931-CL008 code list in BIS 3.0.17
  • Added the Peppol ViDA Pilot Tax Data Document (TDD) 1.1.0 validation rules (2026-09-14) in phive-rules-peppol-taxdata, VES coordinate org.peppol.taxdata:vida:1.1.0, and deprecated the 1.0.0 rules. The rules are taken from ViDA TDD v1.1.0. Requires peppol-vida 0.11.0, because the TDD 1.1.0 XSD is bound by the new PeppolViDATDD110Marshaller. The first two changes are backwards incompatible, so Tax Data Documents that passed against 1.0.0 need to be regenerated:
    • The new mandatory Invoice Transmission UUID (TDT-018), carried as pxs:TransmissionUUID inside pxs:ReportedTransaction - new rules ibr-tdd-88 and ibr-tdd-89
    • The Invoice UUID (TDT-017) is now calculated from the Seller VAT identifier (BT-31), the invoice type code (BT-03), the invoice number (BT-01) and the invoice issue date (BT-02) - previously the Seller identifier (BT-29) was used instead of BT-31. The new rule ibr-tdd-87 only checks that it is a version 5 UUID
    • New buy side rules ibr-tdd-90 to ibr-tdd-93: when the Reporter role (TDT-012) is C3, BT-110, BT-112, BT-117, BT-118, BT-119 and - if BT-006 is present - BT-111 are mandatory
    • ibr-tdd-05 now really enforces the time zone on the Tax Data Document issue time (TDT-005); the previous regular expression made the offset optional
    • Several inherited CEN EN 16931 and Peppol rules were repaired, because they could not match a TDD: the VAT breakdown rules BR-{AE,E,G,K,Z,S,O,AF,AG}-08/09/10 and PEPPOL-EN16931-R051 were anchored at the document root (/*/cac:TaxTotal/...), which is pxs:TaxData in a TDD; the German rules DE-R-001, DE-R-016, DE-R-017, DE-R-026 and DE-R-031 had a duplicated path segment (.../pxs:ReportedDocument/pxs:ReportedDocument); UBL-CR-674 tested for the non-existing element cbc:PrimaryAccountNumber instead of cbc:PrimaryAccountNumberID; and NL-R-007 accepted a cac:PaymentMeans anywhere in the document instead of only in the reported document
  • The three "WithoutTaxes" example documents of the ViDA TDD 1.1.0 specification are not part of the test files, because they are not XSD valid: they contain a cac:TaxTotal without cbc:TaxAmount and a cac:TaxSubtotal without cbc:TaxAmount, but both are mandatory in UBL 2.1
  • The France CTC CII rules fr.ctc:cii:1.4.0, fr.ctc:cii:1.4.0-03 and fr.ctc:cii:1.4.0-04 no longer build on the EN 16931 CII VES eu.cen.en16931:cii:1.3.16, but reference the CII D22B XML Schema and the EN 16931 CII 1.3.16 Schematron directly. The XML Schema validation therefore uses CII D22B instead of the CII D16B inherited from the EN 16931 VES - the applied Schematron rules are unchanged. See issue #87.
  • The France Extended CTC CII rules fr.ctc:extended-cii:1.4.0, fr.ctc:extended-cii:1.4.0-03 and fr.ctc:extended-cii:1.4.0-04 now use the CII D22B XML Schema instead of the Factur-X EXTENDED XML Schema (1.0.9 / ZUGFeRD 2.5 resp. 1.0.9-2 / ZUGFeRD 2.5.2). See issue #87.
  • Updated to ph-cii 4.1.3, so that the CII D22B XML Schema is now the UN/CEFACT "uncoupled" variant instead of the "coupled" one. It affects all fr.ctc:cii:* and fr.ctc:extended-cii:* rules, because phive-rules-france is the only module using CII D22B. The uncoupled variant does not enforce the UN/CEFACT code list enumerations of the qualified data types, leaving the code list checks to the Schematron rules. This is what step 1 of the FNFE explanatory note demands, because EN 16931 deviates from the UN/CEFACT code lists for the allowance and charge reason codes. The CDAR D22B XML Schema used by fr.ctc:cdar:* was already uncoupled and is unchanged
  • Added the France PPF Flux 1 validation rules v1.1 (2026-09-17), VES coordinates fr.ctc.flux1:ubl-invoice-demarrage:1.1, fr.ctc.flux1:ubl-creditnote-demarrage:1.1, fr.ctc.flux1:cii-demarrage:1.1, fr.ctc.flux1:ubl-invoice-cible:1.1, fr.ctc.flux1:ubl-creditnote-cible:1.1 and fr.ctc.flux1:cii-cible:1.1, and deprecated the 0.2 rules. The rules are taken from the AIFE package "AIFE - PPF_Flux1_v1.1". The previous VES version 0.2 was named after the Schematron files of the "v1.0" package, which carried the internal version v0_2 - from this release on the AIFE file version matches the package version. The AIFE XSDs are unchanged - they are still the ones published with the Flux 1 v1.0 package. All four Schematrons (UBL and CII, each Démarrage and Cible) received the identical set of changes:
    • The rules F1-START-VENDEUR-TVA-G2.33 and F1-START-ACHETEUR-TVA-G2.33 were removed - the seller resp. buyer VAT identifier is no longer mandatory when their legal identifier uses the scheme 0002 (SIREN) or 0223 (UE_HORS_FRANCE)
    • G2.01 on the seller country code no longer rejects EL, and its message now names EL as the code required for Greece. Note that the buyer and the delivery country code checks of the same rule still reject EL and still name GR, so the rule set contradicts itself in that regard
    • G1.53 now uses xs:decimal() instead of number() for the total comparisons, to avoid rounding differences caused by the number representation. It also takes the total VAT amount in the invoice currency (BT-5) - CII previously hard coded EUR and UBL took every cac:TaxTotal/cbc:TaxAmount
    • G1.12 was rewritten: if BT-5 is EUR, exactly one total VAT amount (BT-110) in EUR is expected; if BT-5 is not EUR, exactly two are required - one in BT-5 and one in EUR. Previously only the presence of an EUR amount was checked
    • G2.32 was rewritten and now rejects an invoice whose VAT category codes are all O, or are all E together with a CGI 261 exemption reason code, or are a mixture of O and E
  • The France PPF Flux 1 XSD resources were moved from /external/schemas/flux1/0.2/ to /external/schemas/flux1/1.0/, because they are versioned by the AIFE XSD package (v1.0) and not by the Schematron rules version. Both the 0.2 and the 1.1 rules reference them
  • Added the new submodule phive-rules-cius-dk with the Danish Peppol CIUS validation rules 1.17.0 (2026-08-03), VES coordinates dk.gov.erst.cius-dk:ubl-invoice:1.17.0 and dk.gov.erst.cius-dk:ubl-creditnote:1.17.0. The rules are taken from the PEPPOL_DK_CIUS_2026-08-03_v1.17.0 package of Nemhandel / Erhvervsstyrelsen and are marked as valid from 2026-08-17 12:00 CET, the mandatory use date stated in the release announcement. The rules build on eu.peppol.bis3:invoice:2026.5 resp. eu.peppol.bis3:creditnote:2026.5 (Peppol BIS Billing 3.0.21), so phive-rules-peppol is a prerequisite of the new module. The CEN EN 16931 and Peppol Schematrons shipped in the Danish ZIP are not used - only DK-EN16931-UBL.sch is taken from it. Note that this Danish Schematron currently contains no active rule - DK-R-008 and DK-R-009 are commented out upstream, so the CIUS-DK rules presently validate exactly like the underlying Peppol BIS Billing rules. The VES exist so that Danish senders and receivers have a stable coordinate to reference
  • The Danish PEPPOL_BIS3-Other package (version 1.2.14) is intentionally not included: it only redistributes the Peppol BIS3 Schematrons for the non-Billing documents, which phive-rules-peppol already provides as eu.peppol.bis3:*:2026.5 (Peppol BIS 3.0.17)
  • Added Factur-X validation rules for the France CTC 1.4.0.04 rule set, VES coordinates fr.ctc:facturx-basicwl:1.4.0-04, fr.ctc:facturx-en16931:1.4.0-04 and fr.ctc:facturx-extended:1.4.0-04. They are built like the plain CII rules: the Factur-X profile XML Schema, then the Factur-X profile Schematron, then the BR-FR-Flux2-Schematron-CII rules of 1.4.0.04. They are marked as valid from 2026-10-01, like the other 1.4.0.04 rules. Only these 3 profiles exist, because the FNFE package only ships Schematrons for BASIC WL, EN 16931 and EXTENDED - there are none for MINIMUM and BASIC. The XML Schemas are the Factur-X 1.0.9-2 (ZUGFeRD 2.5.2) ones from phive-rules-zugferd. The BASIC WL and EN 16931 Schematrons of the FNFE package are byte identical to the Factur-X 1.0.9-2 ones, so they are referenced from phive-rules-zugferd instead of being duplicated. The EXTENDED Schematron is not identical: the FNFE ships a France specific "fix-FR04" variant, applicable in France from 2026-10-01, so it is stored in phive-rules-france:
    • BR-FXEXT-S-01, BR-FXEXT-Z-01, BR-FXEXT-E-01, BR-FXEXT-AE-01, BR-FXEXT-IC-01, BR-FXEXT-G-01, BR-FXEXT-O-01, BR-FXEXT-AF-01 and BR-FXEXT-AG-01 - corrected the XPath, which tested ram:AssociatedDocumentLineDocument relative to ram:SpecifiedLineTradeSettlement instead of relative to its parent line
    • BR-FXEXT-CO-10, BR-FXEXT-CO-12 and BR-FXEXT-CO-13 - added /xs:decimal(.) inside the sum() functions to avoid rounding differences caused by the number representation
  • FranceCTCValidation.getAllPrerequisites now requires de.zugferd:{basicwl,en16931,extended}:2.5.2 instead of de.zugferd:extended:2.5 and de.zugferd:extended:2.5.2, because the Factur-X rules use the XML Schemas and Schematrons of all three profiles, while the ZUGFeRD 2.5 artefacts are no longer referenced at all

v4.5.6 - 2026-09-06

  • Added the France CTC validation rules 1.4.0.04 (2026-09-03), VES coordinates fr.ctc:ubl-invoice:1.4.0-04, fr.ctc:ubl-creditnote:1.4.0-04, fr.ctc:cii:1.4.0-04, fr.ctc:cdar:1.4.0-04, fr.ctc:extended-ubl-invoice:1.4.0-04, fr.ctc:extended-ubl-creditnote:1.4.0-04 and fr.ctc:extended-cii:1.4.0-04, and deprecated the 1.4.0.03 rules. The FNFE hotfix number 04 is expressed as a DVR version classifier, hence the version 1.4.0-04. The rules are taken from fnfempe/France_RFE v1.4.0.04. The EN 16931 base (1.3.16) and the Factur-X EXTENDED XSD (1.0.9-2 / ZUGFeRD 2.5.2) are unchanged compared to 1.4.0.03. Per the FNFE release notes it contains:
    • All Schematrons: number() was replaced by xs:decimal() to avoid rounding differences caused by the number representation
    • CII BR-FR-MV-10 - corrected the line count (issue #28) and BR-FR-CO-07/BT-9 - now handles multiple Payment Terms groups (issue #40)
    • UBL BR-FR-CO-07 - corrected the Due Date XPath for Credit Notes (issue #29), BR-FR-11, BR-FR-20, BR-FR-21 and BR-FR-CO-14 - now handle notes without a subject code (issue #42), BR-FR-22 - corrected the BAR = 'B2B' test (issue #43) and BR-FR-08/BT-23 - corrected the error message (issue #48)
    • EXTENDED-CTC-FR CII: BR-CO-27 removed, because it is CII-SR-470 which does not apply to EXTENDED-CTC-FR (issue #44); CII-SR-069 and CII-SR-072 were replaced by CII-FREXT-SR-069 and CII-FREXT-SR-072 with cardinality 0..1 for BT-160 and BT-161 (issues #46 and #47); further alignment with EN 16931 for CII-SR-467 to CII-SR-469, CII-SR-471 to CII-SR-473 and CII-SR-475 to CII-SR-494
    • CDAR BR-FR-CDV-CL-09_MDT-113_210B2G - corrected the empty XPath in the B2G refusal reason check (issue #34), BR-FR-CDV-13 - added the new WARNING assertion BR-FR-CDV-13/MDT-129-2 requiring an MDT-129 with schemeID 0002 (SIREN), and BR-FR-CDV-15/MDT-113 - corrected the rejected status code in the message from 123 to 213
  • The France CTC 1.4.0.04 rules are marked as valid from 2026-10-01, the date stated in the Schematron headers - the 1.4.0.03 rules kept their 2026-09-01 date. Until 2026-10-01 the France CTC 1.4.x rules are therefore only "valid per now" in their deprecated 1.4.0.03 form
  • Updated to XRechnung 3.0.2 Schematron Rules 2.6.0 (2026-08-31). The VES coordinates de.xrechnung:*:3.0.2 are unchanged - KoSIT versions the Schematron rules separately from the XRechnung specification. The rules now build on the CEN EN 16931 rules 1.3.16 instead of 1.3.15, so XRechnungValidation.getAllPrerequisites requires eu.cen.en16931:*:1.3.16 instead of ...:1.3.15. Per the KoSIT change log it contains:
    • The error level of BR-TMP-2 was raised to "fatal" - this may break existing validation workflows, please evaluate the impact
    • New temporary rules BR-TMP-4 and BR-TMP-5 (CII) replacing CII-SR-475 and CII-SR-476 with a corrected rule context, until the bug is fixed upstream (see eInvoicing-EN16931 issue #508)
    • New temporary rule BR-TMP-6 (UBL) enforcing the YYYY-MM-DD date format and BR-TMP-7 (CII) enforcing the format="102" attribute plus the YYYYMMDD format on BT-2, BT-7, BT-9, BT-26, BT-72, BT-73, BT-74, BT-134 and BT-135. BR-TMP-4 to BR-TMP-7 are currently "warning" only and will be raised to "fatal" in a future release
    • Global code list variables adapted to the CEN 1.3.16 code list updates and the IBAN regular expression was extracted to common.sch
    • PEPPOL-EN16931-R008 in UBL no longer rejects an empty BT-13 "Purchase order reference" (cac:OrderReference/cbc:ID), which the UBL schema requires whenever BT-14 "Sales order reference" is present

v4.5.5 - 2026-09-01

  • Updated the Turkey e-Fatura Schematron rules in phive-rules-turkey to the GİB e-FaturaPaketi published on 2026-08-24, containing the Schematron release 20260701 (see issue #85). The VES coordinates tr.efatura:invoice:1.2.1, tr.efatura:application-response:1.2.1, tr.efatura:despatch-advice:1.2.1, tr.efatura:receipt-advice:1.2.1 and tr.efatura:zarf:1.2.1 are unchanged - GİB does not version the Schematron package separately from UBL-TR 1.2.1
    • New rules for the electricity charging (SARJ / SARJANLIK) invoice types: EnerjiInvoicePeriodCheck requires a complete cac:InvoicePeriod, EnerjiESURaporIDCheck requires an ESURaporID document reference, EnerjiPartyIdentificationPlakaCheck requires a PLAKA party identification and EnerjiItemInstanceSerialIDCheck requires a line level cac:ItemInstance/cbc:SerialID
    • Trailer plates moved from cbc:LicensePlateID to cac:TransportHandlingUnit/cac:TransportEquipment/cbc:ID, checked by the new rule TransportEquipmentIDSchemeIDCheck against the new code list TransportEquipmentIDSchemeIDType (DORSE, DORSEPLAKA, YABANCIDORSE, YABANCIDORSEPLAKA); LicensePlateIDSchemeIDType now only allows PLAKA and YABANCIPLAKA
    • The new rule LicensePlateIDCheck requires a Despatch Advice that names a driver to also carry a license plate
    • The IDIS shipment number (SEVKIYATNO) may now also start with ES- instead of only SE-, in Invoice and Despatch Advice
    • Invoice type IADE is now also allowed with profile KAMU
    • The tax exemption reason codes 308 and 339 were moved out of TaxExemptionReasonCodeType into the new code list YatirimTesvikTaxExemptionReasonCodeType, so TaxExemptionReasonCodeCheck only accepts them for the YATIRIMTESVIK profile and the investment incentive e-Arşiv invoice types; code 233 was added to TaxExemptionReasonCodeType and istisnaTaxExemptionReasonCodeType
    • Added the reserved user alias erreceipt (e-Gider Pusulası) to ReservedAliases and UserEnvelopeAliases, plus two UserAccountCheck assertions for it: no hr:AuthorizedWorkScope may be present and hr:UserOptionCode must be 171, 172, 173 or 174
  • Updated UBLTR_1.2.1_Kilavuzlar.zip in phive-rules-turkey/docs - the UBL-TR code list guide went from V1.42 to V1.43 (documentation only, no rule change)
  • The MainGibArtefactDownloader tool now stores artefacts that GİB re-uploaded under a browser style duplicate name (e.g. e-FaturaPaketi (29).zip) under their stable name, so docs/ does not accumulate one copy per re-upload

v4.5.4 - 2026-08-23

  • Moved Peppol BIS 2025.5 from phive-rules-peppol to phive-rules-peppol-legacy. The class com.helger.phive.peppol.PeppolValidation2025_05 is now called com.helger.phive.peppol.legacy.PeppolValidation2025_05 and all its VES coordinates (eu.peppol.bis3:*:2025.5) are marked as deprecated
  • Moved the Peppol PINT AE releases 0.9.0, 2025.6, 2025.7 and 2025.11 from phive-rules-peppol-pint to phive-rules-peppol-legacy - only the latest two releases (2026.3 and 2026.5) remain in the main module. The respective constants moved from com.helger.phive.peppol.pint.PeppolValidationPintAE to the new class com.helger.phive.peppol.legacy.PeppolLegacyValidationPintAE. The VES coordinates org.peppol.pint.ae:*:2025.7 and org.peppol.pint.ae:*:2025.11 are now marked as deprecated
  • Moved the Peppol PINT A-NZ releases 1.0.1, 1.1.0 and 1.1.1 from phive-rules-peppol-pint to phive-rules-peppol-legacy - only the latest two releases (1.1.2 and 1.1.3) remain in the main module. The respective constants moved from com.helger.phive.peppol.pint.PeppolValidationPintAUNZ to the new class com.helger.phive.peppol.legacy.PeppolLegacyValidationPintAUNZ. All moved VES coordinates were already deprecated, so the validation results are unchanged
  • Added the methods initBilling to PeppolValidation2025_11, PeppolValidation2026_03, PeppolValidation2026_05 and PeppolValidationBisEurope to register only the Peppol BIS Billing and Self-Billing rules, without the Post-Award (Upgrade-3) rules - thx @gregjotau (see PR #84)
  • Breaking change: the numeric SimplerInvoicing version classifiers are now zero padded to two digits, because DVR compares version classifiers as Strings. Affected are the VES coordinates org.simplerinvoicing:invoice:2.0.3-1 up to ...:2.0.3-9, org.simplerinvoicing:creditnote:2.0.3-1 up to ...:2.0.3-9 and org.simplerinvoicing:nlcius-cii:1.0.3-1 up to ...:1.0.3-9. They are now called 2.0.3-01 .. 2.0.3-09 and 1.0.3-01 .. 1.0.3-09 respectively - the Java constants and the display names are unchanged. Previously 2.0.3-9 was sorted after 2.0.3-13, so the pseudo versions latest, latest-release etc. resolved to the deprecated version 2.0.3-9 instead of 2.0.3-13 (see issue #80)

v4.5.3 - 2026-08-08

  • The France PPF Flux 10 validation rules now use the AIFE provided Flux 10 XSDs in addition to the Schematron rules. Documents that were previously only checked by Schematron are now first validated against the Report XML Schema
  • The France Extended CTC CII rules now use the Factur-X EXTENDED XSD instead of the generic CII D22B schema - fr.ctc:extended-cii:1.4.0 uses Factur-X 1.0.9 (ZUGFeRD 2.5) and fr.ctc:extended-cii:1.4.0-03 uses Factur-X 1.0.9-2 (ZUGFeRD 2.5.2). Documents that were previously accepted by the XSD layer may now be rejected
  • Because of that, phive-rules-france now depends on phive-rules-zugferd and requires the ZUGFeRD rules to be registered first. PhiveRulesValidation.initPhiveRules was changed accordingly; users calling the init... methods manually must register ZUGFeRD before France
  • Added new method ZugferdValidation.getXSDResource24onwards (String, EZugferdProfile) to access the XML Schema resource of a specific ZUGFeRD 2.4+ profile
  • Fixed the xs:import references of the ZUGFeRD 2.5 and 2.5.2 XSDs - all 5 profiles referenced the QualifiedDataType and UnqualifiedDataType schemas under their upstream file names, which are not the names used in this repository. As a result the qdt: and udt: types were not resolved and the affected elements were effectively not validated by the XSD layer

v4.5.2 - 2026-08-05

  • Added the France CTC validation rules 1.4.0.03 (2026-08-04), VES coordinates fr.ctc:ubl-invoice:1.4.0-03, fr.ctc:ubl-creditnote:1.4.0-03, fr.ctc:cii:1.4.0-03, fr.ctc:cdar:1.4.0-03, fr.ctc:extended-ubl-invoice:1.4.0-03, fr.ctc:extended-ubl-creditnote:1.4.0-03 and fr.ctc:extended-cii:1.4.0-03, and deprecated the 1.4.0 rules. The FNFE hotfix number 03 is expressed as a DVR version classifier, hence the version 1.4.0-03. The rules are now taken from the new FNFE GitHub repository fnfempe/France_RFE instead of the fnfe-mpe.org download page. This is a cumulative hotfix release on top of 1.4.0; per the FNFE change list it contains:
    • 1.4.0.01 - corrected BR-FREXT-CO-12 in the UBL EXTENDED-CTC-FR profile, which rejected invoices having document level charges but no document level allowances
    • 1.4.0.02 - added the SE and BY roles to BR-CL-10 in the UBL EXTENDED-CTC-FR rules, and corrected the message of CII FR-FR-28 which quoted the UBL XPath
    • 1.4.0.03 - corrected the XPath of BR-FR-01, BR-FR-02 and BR-FR-03 in UBL, added SE/BY to BR-CL-10 in UBL, plus further corrections in UBL and CII, and updated Factur-X to the published 1.09.2 version (instead of the beta)
  • Note: the DVR version 1.4.0-03 is rendered as 1.4-03 in its short form (e.g. fr.ctc:cdar:1.4-03), because the trailing zero micro version is omitted. Reading that short form back requires ph-diver 4.2.2+ - with the ph-diver 4.2.1 used here, only the long form fr.ctc:cdar:1.4.0-03 can be parsed

v4.5.1 - 2026-08-04

  • Added support for ZuGFERD 2.5.2 / Factur-X 1.09.2 - all profiles (XML only), based on the English rule set. The rule set is marked as valid from 2026-09-01, the effective date stated in the Factur-X 1.09.2 release metadata
  • Deprecated the ZuGFERD 2.3.3 and 2.4 validation rules, so that only 2.5 and 2.5.2 are non-deprecated
  • The France PPF Flux 1 validation rules now use the AIFE provided Flux 1 XSDs instead of the generic UBL 2.1 and CII D22B schemas. These XSDs are restricted subsets of OASIS UBL 2.1 and UN/CEFACT CII D22B, so documents that were previously accepted by the XSD layer may now be rejected

v4.5.0 - 2026-08-03

  • Extracted the foundational, XSD-only document format modules into the separate repository phive-rules-foundations (versioned independently starting at 5.0.0): phive-rules-cii, phive-rules-ubl, phive-rules-ebinterface, phive-rules-facturae, phive-rules-fatturapa, phive-rules-finvoice, phive-rules-ksef, phive-rules-osa and phive-rules-teapps. The Maven coordinates (com.helger.phive.rules:phive-rules-<format>) and VES coordinates are unchanged
  • Moved the shared registration SPI and helpers (IValidationRulesRegistrarSPI, PhiveRulesHelper, PhiveRulesInitializationException, PhiveRulesTestHelper, ValidationRulesRegistrar) to the new phive-rules-foundation-api artifact (package com.helger.phive.rules.foundation). The previous classes in com.helger.phive.rules.api remain as @Deprecated delegates for backwards compatibility
  • phive-rules-api now depends on phive-rules-foundation-api and retains only the UBL/CII specific helpers
  • Added France PPF Flux 1 (e-invoicing & e-reporting) validation rules v0.2 for UBL and CII, in the "Démarrage" and "Cible" trajectories
  • Added France PPF Flux 10 (e-reporting) validation rules v1.0

v4.4.2 - 2026-07-30

  • Added Peppol Message Level Status (MLS) 1.0.1 validation rules from the v1.1.0 release (2026-07-07) in phive-rules-peppol, VES coordinate org.peppol:mls:1.0.1, and deprecated 1.0.0
    • The updated Schematron (peppol-mls-1.0.1, 2025-12-15) applies the SPIS regex case-insensitively and requires the Sender/Receiver Party Endpoint ID scheme ID to be the SPIS Participant Identifier Scheme (0242)
  • Updated Peppol OM (Oman) Tax Data Document (TDD) 1.0.1 in phive-rules-peppol-taxdata to the final released Schematron (2026-07-29), VES coordinate org.peppol.taxdata:om:1.0.1
    • The updated rule ibr-tdd-42 makes the Seller tax identifier (IBT-031) optional for the import of goods, import of service RCM and profit margin self invoice transaction types
    • Added the three new example files import-goods-tdd.xml, import-service-rcm-tdd.xml and profit-margin-self-invoice-tdd.xml
  • Updated Peppol PINT OM (Oman) Billing and Self-Billing 1.0.1 in phive-rules-peppol-pint to the final released Schematron (2026-07-29), VES coordinates org.peppol.pint.om:invoice:1.0.1, org.peppol.pint.om:creditnote:1.0.1, org.peppol.pint.om:invoice-self-billing:1.0.1 and org.peppol.pint.om:creditnote-self-billing:1.0.1
    • The updated jurisdiction rule IBR-173-OM now requires the Seller UUID (BTOM-004) to be a valid UUID version 5 (previously version 4 or 5)
  • Moved the legacy OIOUBL artefacts (OIOUBLLegacyValidation, versions 2.0.2 and 3.0.1) from Group ID dk.oioubl to dk.oioubl.legacy, so that they no longer overlap with the active dk.oioubl rules and pseudo-version resolution (latest, latest-release) no longer picks the deprecated legacy artefacts. See #76

v4.4.1 - 2026-07-23

  • Added Peppol TDD AE (United Arab Emirates) 1.0.4 validation rules from the 2026-TDD-1.0.4 release (2026-07-22) in phive-rules-peppol-taxdata, VES coordinate org.peppol.taxdata:ae:1.0.4, and deprecated 1.0.3
  • Added Peppol OM (Oman) 1.0.1 validation rules from the 2026-Q2-v1.0.1 release (2026-07-23)
    • PINT OM Billing and Self-Billing 1.0.1 in phive-rules-peppol-pint, VES coordinates org.peppol.pint.om:invoice:1.0.1, org.peppol.pint.om:creditnote:1.0.1, org.peppol.pint.om:invoice-self-billing:1.0.1 and org.peppol.pint.om:creditnote-self-billing:1.0.1
    • OM Tax Data Document (TDD) 1.0.1 in phive-rules-peppol-taxdata, VES coordinate org.peppol.taxdata:om:1.0.1 (via peppol-om 1.2.0)
    • The respective 1.0.0 rule sets are now deprecated

v4.4.0 - 2026-07-19

  • Added new SPI interface IValidationRulesRegistrarSPI (in phive-rules-api) that every rule module implements to register its validation execution sets into a provided registry. Use ValidationRulesRegistrar.registerAllValidationRules to discover and register all rules found on the classpath in a single call. The registration order between dependent modules (e.g. modules based on EN 16931) is resolved automatically via the coordinates each implementation declares in getAllPrerequisites() (sharing the same data basis as the module's static init... methods): an implementation whose prerequisites are not yet registered is retried in a later round; if a full round makes no progress the unresolvable prerequisites cause an IllegalStateException
  • Updated to ph-schematron v10.x
  • Added support for CII D25A in phive-rules-cii (via ph-cii 4.1.2), VES coordinate un.unece.uncefact:crossindustryinvoice:D25A (XSD only)
  • Added new submodule phive-rules-all that depends on all current (non-legacy) validation modules and offers PhiveRulesValidation.initPhiveRules to register them all in the proper order in a single call
  • Added new submodule phive-rules-all-legacy that depends on the legacy validation modules (OIOUBL 2.0.2/3.0.1 and legacy Peppol) and offers PhiveRulesLegacyValidation.initPhiveRulesLegacy to register them all in the proper order in a single call
  • Extracted all Peppol Tax Data Document (TDD) validation rules from phive-rules-peppol into the new submodule phive-rules-peppol-taxdata to reduce the footprint of phive-rules-peppol. See #72
    • The VES coordinates are unchanged (Group ID org.peppol.taxdata, Artefact IDs ae, om, sk and vida)
    • Incompatible change: the class PeppolValidationTaxData moved from package com.helger.phive.peppol to com.helger.phive.peppol.taxdata
    • Incompatible change: PeppolValidation.initStandard no longer registers the TDD validation sets. To keep using them, add a dependency on phive-rules-peppol-taxdata and call PeppolValidationTaxData.init explicitly
    • As a result phive-rules-peppol no longer depends on the peppol-om-tdd-datatypes, peppol-sk-tdd-datatypes, peppol-uae-tdd-datatypes and peppol-vida-tdd-datatypes artifacts
  • Extracted all Peppol PINT (Peppol International) validation rules from phive-rules-peppol into the new submodule phive-rules-peppol-pint to reduce the footprint of phive-rules-peppol (roughly halving its resource size). See #72
    • The VES coordinates are unchanged (Group IDs org.peppol.pint and org.peppol.pint.ae/aunz/eu/jp/my/om/sg)
    • Incompatible change: the classes PeppolValidationPint, PeppolValidationPintAE, PeppolValidationPintAUNZ, PeppolValidationPintEU, PeppolValidationPintJP, PeppolValidationPintJP_NTR, PeppolValidationPintJP_SB, PeppolValidationPintMY, PeppolValidationPintOM and PeppolValidationPintSG moved from package com.helger.phive.peppol to com.helger.phive.peppol.pint
    • Incompatible change: PeppolValidation.initStandard no longer registers the PINT validation sets. To keep using them, add a dependency on phive-rules-peppol-pint and call PeppolPintValidation.initPeppolPint explicitly (or rely on the IValidationRulesRegistrarSPI auto-discovery)
    • Incompatible change: renamed PeppolValidationPint to PeppolValidationPintBase

v4.3.9 - 2026-07-08

  • Added new submodule phive-rules-serbia for the Serbian SEF (SRBDT) EN 16931 CIUS and Extension validation rules. See #67
    • UBL VES coordinates rs.gov.mfin.srbdt:ubl-invoice:1.0.0 and rs.gov.mfin.srbdt:ubl-creditnote:1.0.0, building on the EN 16931 UBL rules 1.3.8
    • Rules taken from https://github.com/vasiljevic/en16931-srbdt-va (licensed under EUPL v1.2)
    • Added the Serbian SEO (Sistem Elektronskih Otpremnica) logistics documents Despatch Advice (eOtpremnica) and Receipt Advice (ePrijemnica). See #68
      • UBL VES coordinates rs.gov.mfin.logistics:ubl-despatch-advice:1.1.0 and rs.gov.mfin.logistics:ubl-receipt-advice:1.1.0
      • The Ministry of Finance only publishes UBL 2.1 example documents for SEO, so these perform UBL 2.1 XSD validation only (no Serbia-specific or Peppol Logistics BIS business rules)
  • Updated Peppol OM Tax Data Document (TDD) 1.0.0 rules to the final release (2026-06-23) from https://docs.peppol.eu/poac/om/om-tdd/
  • Added support for France CTC 1.4.0 validation rules, building on EN 16931 1.3.16, effective 2026-09-01. See #69
    • VES coordinates fr.ctc:ubl-invoice:1.4.0, fr.ctc:ubl-creditnote:1.4.0, fr.ctc:cii:1.4.0, fr.ctc:cdar:1.4.0, fr.ctc:extended-ubl-invoice:1.4.0, fr.ctc:extended-ubl-creditnote:1.4.0 and fr.ctc:extended-cii:1.4.0

v4.3.8 - 2026-06-15

  • Added support for ZuGFERD 2.5 (incl. Corrigendum 1) - all profiles (XML only)
  • Added support for Peppol PINT BIS Billing 1.1.3 (release 2026-06-05)
  • Added support for Peppol PINT A-NZ 1.1.3 (Billing and Self-Billing, release 2026-05-21) and deprecated 1.1.2
  • Added support for Peppol PINT Japan 1.1.3 (Standard, Non-tax Registered Businesses, Self Billing — release 2026-05-18) and deprecated 1.1.2
  • Added support for Peppol PINT Malaysia 1.3.1 (Billing and Self-Billing, release 2026-06-05) and deprecated 1.3.0
  • Added support for Peppol PINT Singapore 1.4.1 (Billing, release 2026-05-25) and deprecated 1.4.0
  • Added support for Peppol PINT EU 1.1.1 (release 2026-06-09) — version coordinate 2026.6; deprecated 1.0.0 (1.0.1 remains active)

v4.3.7 - 2026-06-09

  • Updated Peppol PINT Oman (OM) 1.0.0 rules (2026-Q2-FIN snapshot)

v4.3.6 - 2026-06-01

  • Added Peppol TDD AE 1.0.3 rules and deprecated 1.0.2

v4.3.5 - 2026-05-28

  • Added Peppol PINT AE 1.0.4 rules (2026-Q2 release)

v4.3.4 - 2026-05-22

  • Updated Peppol PINT Oman (OM) 1.0.0 rules (2026-Q2-FIN snapshot)

v4.3.3 - 2026-05-21

  • Updated Peppol PINT Oman (OM) 1.0.0 rules (2026-Q2-FIN snapshot)
  • Added Peppol BIS 2026-05 release
  • Moved Peppol BIS Self-Billing 3.0.0 to the Legacy project
  • Deprecated Simplerinvoicing Invoice 2.0.3.11, Simplerinvoicing 2.0 G-Account extension 1.0.11 and NLCIUS-CII 1.0.3.11
  • Added Simplerinvoicing Invoice 2.0.3.13, Simplerinvoicing 2.0 G-Account extension 1.0.13 and NLCIUS-CII 1.0.3.13.

v4.3.2 - 2026-05-13

  • Added new submodule phive-rules-osa for Hungarian NAV Online Számla (OSA) v2.0 and v3.0 XSD validation. See #64 - thx @krisraich
    • VES coordinates hu.gov.nav.osa:invoiceData:2.0, hu.gov.nav.osa:invoiceAnnulment:2.0, hu.gov.nav.osa:invoiceData:3.0 and hu.gov.nav.osa:invoiceAnnulment:3.0
  • Updated Peppol PINT Oman (OM) 1.0.0 rules (2026-Q2-FIN snapshot)
  • Added OIOUBL 1.17.2 rules. See #65
  • Deprecated all previous OIOUBL 1.x releases (1.16.1 and 1.17.1)

v4.3.1 - 2026-05-09

  • Removed OSGI bundling
  • Added support for France CTC 1.3.1 validation rules. See #63 - thx @gastoncocco
  • Added new submodule phive-rules-turkey for Turkey UBL-TR 1.2.1 / e-Fatura validation. See #62 - thx @andreabrunelli-ecosio
    • Bare UBL VES coordinates tr.efatura:invoice:1.2.1, tr.efatura:application-response:1.2.1, tr.efatura:despatch-advice:1.2.1 and tr.efatura:receipt-advice:1.2.1 — UBL 2.1 XSD plus the GİB UBL-TR_Main_Schematron rules
    • SBDH-wrapped Zarf VES coordinate tr.efatura:zarf:1.2.1 — validates the full envelope (sh:StandardBusinessDocument + ef:Package + inner UBL document) using ph-sbdh for the wrapper schemas; only this VES exercises the envelope-tier rules (envelope-type / element-type compatibility, sender/receiver VKN_TCKN, package cardinality, sender ↔ inner-document party cross-checks)
    • Local fix to the GİB Schematron: reordered <sch:ns> declarations to come before <sch:include> so the compiled XSLT emits SVRL with valid element ordering (ns-prefix-in-attribute-values before active-pattern); without this, ph-schematron's strict SVRL parser threw "Internal error interpreting Schematron result" on every document
  • Added support for Peppol PINT Oman (OM) 1.0.0 rules (billing + self-billing) and Peppol OM TDD 1.0.0 rules
  • Added support for EN 16931 validation rules 1.3.16 (UBL and CII) and deprecated 1.3.15
  • Added support for UBL 2.5-CS01

v4.3.0 - 2026-04-02

  • Requires phive 12.0.2 or later
  • The internal rule registration was reworked to use a builder-based approach using PhiveRulesBuilder
  • Fixed an error in the ZATCA/FATOORA 2.3.8 XSLT that created invalid SVRL
  • Added ZATCA/FATOORA 3.4.6 rules
  • Added support for Peppol ViDA Pilot TDD 1.0.0 rules
  • Added support for Peppol SK TDD 1.0.0 rules

v4.2.5 - 2026-03-27

  • Updated to final AE PINT 1.0.3 rules

v4.2.4 - 2026-03-23

  • Added preliminary AE PINT 1.0.3 rules

v4.2.3 - 2026-03-12

  • Requires phive 12.0.1 or later
  • Added Croatian eRacun v1.0.3 rules (release 2026-03-06). See #56
  • Added OIOUBL 1.17.1 rules. See #54
  • Deprecated OIOUBL 1.17.0-RC rules

v4.2.2 - 2026-03-05

  • Added Peppol BIS Self-Billing 2026.3 (aka 3.0.1) validation rules

v4.2.1 - 2026-03-03

  • Renamed all "Peppol PINT UAE" to "Peppol PINT AE" for consistency
  • Fixed the version suffix for "Peppol PINT AE" release 2025-11 from "1.0.1" to "1.0.2"
  • Moved the OIOUBL rules to the class OIOUBLLegacyValidation as it was discontinued from the government. See #53

v4.2.0 - 2026-02-22

  • Updated to phive 12.x

v4.1.8 - 2026-02-18

  • Added Croatian eRacun v1.0.2 rules (release 2026-01-24)
  • Updated to XRechnung 3.0.2 Schematron Rules 2.5.0
  • Added support for France CTC 1.3.0 validation rules. They now include the EN16931 1.3.15 validation rules.
  • Added support for France Extended CTC 1.3.0 validation rules

v4.1.7 - 2026-01-28

  • Updated to AE PINT Self-Billing 1.0.2-hotfix2 rules.

v4.1.6 - 2026-01-28

  • Updated to AE PINT 1.0.2-hotfix2 rules.

v4.1.5 - 2026-01-27

  • Added AE TDD 1.0.2 rules. See #51
  • Updated to AE PINT 1.0.2-hotfix rules. See #51
  • Updated to Peppol BIS Billing 3.0.20-hotfix rules. See #52

v4.1.4 - 2026-01-23

  • Added Croatian eRacun v1.0.1 rules. See #49
  • Added OIOUBL 1.17.0-RC rules. See #50
  • Fixed validity start date of OIOUBL 1.16.1 rules to be in November 2025
  • Deprecated OIOUBL 1.15.2 rules.

v4.1.3 - 2026-01-13

  • Added support for Peppol AE TDD v1.0.1. See #48

v4.1.2 - 2025-12-13

  • Added support for Peppol AE Tax Data Document v1.0.0. See #43
  • Added support for ZuGFERD 2.4 - all profiles (XML only). See #44
  • Deprected ZuGFERD 2.3.2 version
  • Added OIOUBL 1.16.1 rules. See #42 - thx @NielsenEDI
  • Deprecated Simplerinvoicing Invoice 2.0.3.10, Simplerinvoicing 2.0 G-Account extension 1.0.10 and NLCIUS-CII 1.0.3.9
  • Added Simplerinvoicing Invoice 2.0.3.12, Simplerinvoicing 2.0 G-Account extension 1.0.12 and NLCIUS-CII 1.0.3.12. See #45
  • Deprecated Peppol BIS 2024.11 release, as 2025.5 release is already mandatory
  • Added Peppol BIS 2025-11 release. See #46
  • Added Peppol PINT 2025-11 releases. See #47
  • Deprecated Peppol PINT AE 2025.06 release.
  • Deprecated Peppol PINT JP 1.1.0 release.
  • Deprecated Peppol PINT MY 1.1.0 release.
  • Deprecated Peppol PINT SG 1.2.0 release.
  • Moved Peppol BIS 2024.5 and 2024.11 from phive-rules-peppol to phive-rules-peppol-legacy

v4.1.1 - 2025-11-18

  • Added support for CDAR D22B XML Schema
  • Added support for France CTC 1.2.0 validation rules and deprecated rules v0.1 (on UBL, CII and CDAR)
  • Added support for EN 16931 rules v1.3.15 format and deprecated v1.3.13. See #41
  • Added support for Croatian eRacun v1.0.0 rules (new submodule phive-rules-eracun). See #40

v4.1.0 - 2025-11-16

  • Updated to ph-commons 12.1.0
  • Using JSpecify annotations
  • Added Poland KSeF FA(3) format. See #39

v4.0.3 - 2025-10-02

  • Added support for Peppol Singapore BIS Order Balance 1.0
  • Added support for Peppol PINT EU 1.0.0 (v2025.10)

v4.0.2 - 2025-09-26

  • Added support for Poland KSeF validation rules. See #20 - thx @krisraich

v4.0.1 - 2025-09-15

  • Added support for France CTC 0.1 validation rules
  • Added additional SETU document types "Assignment", "Human Resource" and "Staffing Order" that are supported on the Peppol Network

v4.0.0 - 2025-08-27

  • Requires Java 17 as the minimum version
  • Updated to ph-commons 12.0.0

v3.2.15 - 2025-08-10

  • Added support for Peppol PINT AE 1.0.1 (v2025.7)
  • Updated to XRechnung 3.0.2 Schematron Rules 2.4.0

v3.2.14 - 2025-07-04

  • Added support for Peppol PINT AUNZ 1.1.1
  • Added support for Peppol PINT JP 1.1.1
  • Added support for Peppol PINT MY 1.2.1
  • Added support for Peppol PINT SG 1.3.0

v3.2.13 - 2025-06-23

  • Added support for EN 16931 rules v1.3.14.2 format and deprecated v1.3.14.1
  • Added Peppol BIS 2025-05 release
  • Added Peppol MLS 1.0.0 with VESID org.peppol:mls:*
  • Deprecated Simplerinvoicing Invoice 2.0.3.9, Simplerinvoicing 2.0 G-Account extension 1.0.9 and NLCIUS-CII 1.0.3.8
  • Added Simplerinvoicing Invoice 2.0.3.11, Simplerinvoicing 2.0 G-Account extension 1.0.11 and NLCIUS-CII 1.0.3.10 (deprecated) and 1.0.3.11
  • Added OIOUBL 1.15.2 rules
  • Deprecated all previous OIOUBL 1.1x releases
  • Added support for Peppol Italy rules 3.2.1 (AGID Credit Note, Despatch Advice, Invoice, Order, Order Agreement and Order Response), Italian version

v3.2.12 - 2025-06-10

  • Added Peppol PINT AE 2025-Q2 (first public version)

v3.2.11 - 2025-05-20

  • Added support for EN 16931 rules v1.3.14.1 format and deprecated v1.3.12
  • Added support for ZuGFERD 2.3.3 - all profiles (XML only)

v3.2.10 - 2025-03-31

  • Added Peppol PINT AE 0.9.0 (public preview version)

v3.2.9 - 2025-03-27

  • Updated to XRechnung 3.0.2 Schematron Rules 2.3.0
  • Added Peppol BIS Singapore 2024.12 (aka BIS 3.0.14). See #28 - thx @xiongnan2603
  • Deprecated Peppol BIS Singapore 2023.7 and 2023.12

v3.2.8 - 2025-03-19

  • Added Peppol BIS Self-Billing 2025.3 validation rules
  • Added OIOUBL 1.15.1 rules

v3.2.7 - 2025-03-10

  • Deprecated Peppol BIS 2024.5 release, as 2024.11 release is already mandatory
  • Added Peppol PINT AUNZ 1.1.0 rules and deprecated v1.0.1 rules
  • Added Peppol PINT JP 1.1.0 rules and deprecated the old rules
  • Added Peppol PINT MY 1.1.0 rules and deprecated v1.0.0 rules
  • Added Peppol PINT SG 1.2.0 rules and deprecated v1.1.0 rules
  • Added initial version of Saudia Arabian ZATCA/FATOORA format in new submodule phive-rules-zatca (requires ph-schematron 8.0.6)

v3.2.6 - 2025-02-11

  • Added Peppol 2024-11 Hotfix Schematron rules (replacing the previous ones)
  • Added OIOUBL 1.15.0-rc rules
  • Deprecated OIOUBL 1.13.2 rules

v3.2.5 - 2025-02-03

  • Fixed the "valid per" date of the Peppol 2024-11 release. See #26 - thx @wildhai

v3.2.4 - 2025-01-08

  • Added specific support for XRechnung Extension (for versions 2.0.1, 2.1.1, 2.2.0, 2.3.1, 3.0.0, 3.0.1 and 3.0.2)

v3.2.3 - 2025-01-03

  • Fixed Factur-X VES display name to include the profile name as well
  • Added Peppol A-NZ-PEPPOL 1.0.12 rules
  • Deprecated Peppol A-NZ-PEPPOL 1.0.10 rules
  • Moved Peppol A-NZ-PEPPOL 1.0.9 and 1.0.10 rules from phive-rules-peppol to phive-rules-peppol-legacy
  • Moved Peppol 2023-05 and 2023-11 rules from phive-rules-peppol to phive-rules-peppol-legacy
  • Added support for ZuGFERD 2.0.1 - all profiles (XML only)
  • Added support for ZuGFERD 2.1 - all profiles (XML only)
  • Added support for OIOUBL 3.0.1 rules - this requires the EN16931 validation artefacts to be available as well
  • Renamed class PeppolLegacyValidation to PeppolLegacyValidationBisEurope

v3.2.2 - 2024-12-05

  • Updated to XRechnung 3.0.2 Schematron Rules 2.2.0
  • Added Peppol November 2024 release (Billing 3.0.18 and Upgrade 3.0.14)
  • Added Peppol PINT JP 1.0.3 release
  • Added Peppol PINT JP for Non-tax Registered Businesses 1.0.1 release
  • Added Peppol PINT JP Self Billing 1.0.1 release
  • Deprecated Simplerinvoicing Invoice 2.0.3.8, Simplerinvoicing 2.0 G-Account extension 1.0.8 and NLCIUS-CII 1.0.3.7
  • Added Simplerinvoicing Invoice 2.0.3.10, Simplerinvoicing 2.0 G-Account extension 1.0.10 and NLCIUS-CII 1.0.3.9
  • Added support for CII D22B XML Schema validation
  • Added support for ZuGFERD 2.2 - all profiles (XML only)
  • Added support for ZuGFERD 2.3.2 - all profiles (XML only)

v3.2.1 - 2024-10-09

  • Added support for EN 16931 rules v1.3.13 format and deprecated v1.3.11

v3.2.0 - 2024-09-16

  • Updated to ph-diver 3.0.1
  • Updated to phive 10.0.2
  • Created new sub-module phive-rules-api with a shared API
  • Marked Peppol Rules 2023-11 as deprecated
  • Removed old Peppol rules before 2020 (3.5.0 to 3.9.1)
    • This lead to remove old "eFFF invoice" rules, as it was depending on Peppol 3.7.0 rules
    • Also lead to remove old "Peppol Thirdparty rules" (AT BIS2 based) (class PeppolLegacyThirdpartyValidation)
  • Renamed class EHFValidationG3 to EHFValidationG3_2020_03
  • Made sure that only VESIDs are public static final whereas validation rules resources are not any more
  • Added support for CIUS-RO 1.0.9 and deprecated CIUS-RO 1.0.8

v3.1.13 - 2024-09-06

  • Added support for Peppol Italy rules 3.1.0 (AGID Credit Note, Despatch Advice, Invoice, Order, Order Agreement and Order Response), Italian version

v3.1.12 - 2024-07-29

  • Updated to phive 9.2.2
  • Added Peppol PINT rules 1.0.2
  • Added Peppol PINT A-NZ 1.0.1 rules (billing and self-billing)
  • Added Peppol PINT Japan 1.0.2 rules
  • Added Peppol PINT Singapore 1.1.0 rules
  • Added support for UBL.BE 1.31, deprecated version 1.30
  • Renamed class PeppolValidationSG to PeppolValidationBisSG
  • Renamed class PeppolValidationAUNZ to PeppolValidationBisAUNZ

v3.1.11 - 2024-07-02

  • Added Peppol May 2024 release (Billing 3.0.17 and Upgrade 3.0.13)
  • Added Peppol A-NZ-PEPPOL 1.0.11 rules
  • Deprecated Peppol A-NZ-PEPPOL 1.0.9 rules
  • Added XRechnung 3.0.0 rules (for completeness)
  • Added XRechnung 3.0.2 rules
  • Deprecated Simplerinvoicing Invoice 1.2.4 and Order 1.2.4
  • Deprecated Simplerinvoicing Invoice 2.0.3.7, Simplerinvoicing 2.0 G-Account extension 1.0.7 and NLCIUS-CII 1.0.3.6
  • Added Simplerinvoicing Invoice 2.0.3.9, Simplerinvoicing 2.0 G-Account extension 1.0.9 and NLCIUS-CII 1.0.3.8
  • Added OIOUBL 1.14.2 rules

v3.1.10 - 2024-05-16

  • Added support for EN 16931 rules v1.3.12 format and deprecated v1.3.10
  • All OIOUBL 1.x validations are now correctly based on UBL 2.1 instead of UBL 2.0
  • Extracted the rules for the legacy OIOUBL rules into a separate registerable entity (OIOUBLLegacyValidation).
  • Added support for SG-PEPPOL 2023.12 rules.
  • Moved SG-Peppol 1.0.3 rules to phive-rules-peppol-legacy

v3.1.9 - 2024-03-22

  • Deprecated Peppol Business Card formats v1 and v2
  • Deprecated Peppol May 2023 release
  • Updated the EHF G3 formats to the latest versions from 2023-02 and deprecated the previous G3 versions
  • Updated to OIOUBL 1.13.2 rules and deprecated all other versions

v3.1.8 - 2024-03-06

  • Added support for Peppol Reporting EUSR v1.1.5 and deprecated v1.1.4
  • Added support for Peppol Reporting TSR v1.0.5 and deprecated v1.0.4
  • Moved old versions of Peppol Reporting validation to phive-rules-peppol-legacy
  • Added support for Peppol PINT BIS Malaysia 1.0.0

v3.1.7 - 2024-02-18

  • XRechnung 3.0.1 rules updated to reference EN 16931 rules 1.3.11 (was 1.3.10)
  • Added Peppol A-NZ-PEPPOL 1.0.10 rules
  • Moved Peppol A-NZ-PEPPOL 1.0.7 and 1.0.8 rules from phive-rules-peppol to phive-rules-peppol-legacy
  • Added support for Peppol Italy rules 3.0.2 (AGID Credit Note, Despatch Advice, Invoice, Order, Order Agreement and Order Response)
  • Added Peppol PINT rules 1.0.0 and 1.0.1

v3.1.6 - 2023-11-30

  • Added Peppol November 2023 release (Billing 3.0.16 and Upgrade 3.0.12)
  • Moved Peppol 3.15.0 rules from phive-rules-peppol to phive-rules-peppol-legacy
  • Added Simplerinvoicing November 2023 release (SI 2.0.3.8, NLCIUS-CII 1.0.3.7, SI 2.0 G-Account extension 1.0.8)

v3.1.5 - 2023-11-10

  • Added support for Peppol Reporting EUSR v1.1.4 and deprecated v1.1.3
  • Added support for Czech ISDOC v6.0.2 and deprecated v6.0.1 (original Schematron had errors)

v3.1.4 - 2023-11-06

  • Re-release of 3.1.3 because publishing to Maven Central created an error

v3.1.3 - 2023-11-03

  • Added support for Peppol Reporting EUSR v1.1.3 and deprecated v1.1.2
  • Added support for Peppol Reporting TSR v1.0.4 and deprecated v1.0.3

v3.1.2 - 2023-10-12

  • Added support for SG-PEPPOL 2023.7 rules. See issue #18 - thx @Sivasgebiz
  • Deprecated SG-PEPPOL 1.0.3 rules
  • Moved SG-PEPPOL 1.0.2 rules from phive-rules-peppol to phive-rules-peppol-legacy
  • Added support for EN 16931 rules v1.3.11 format and deprecated v1.3.9
  • Added support for Peppol Reporting EUSR v1.1.2 and deprecated v1.1.1
  • Added support for Peppol Reporting TSR v1.0.3 and deprecated v1.0.2

v3.1.1 - 2023-09-21

  • Added support for XRechnung 3.0.1
  • Updated Peppol Reporting EUSR Schematron to 1.1.1 - deprecated the older versions
  • Updated Peppol Reporting TSR Schematron to 1.0.2 - deprecated the older versions

v3.1.0 - 2023-09-14

  • Updated to phive 9.0.0

v3.1.0-beta2 - 2023-09-06 (not recommended for production use)

  • Deprecated Peppol 3.15.0 rules
  • Moved Peppol 3.14.0 rules from phive-rules-peppol to phive-rules-peppol-legacy
  • Updated to phive 9.0.0 Beta2 with the strict version number check
  • The following VES versions were changed:
    • eu.cen.en16931:cii:1.3.6a is now eu.cen.en16931:cii:1.3.6.a
    • at.ebinterface:invoice:3.02 is now at.ebinterface:invoice:3.0.2

v3.1.0-beta1 - 2023-08-30 (not recommended for production use)

  • Updated to phive 9.0.0 Beta1

v3.0.5 - 2023-07-02

  • Added support for Peppol End User Statistics Report 1.1.0

v3.0.4 - 2023-06-27

  • Updated XRechnung 2.3.1 rules to 1.8.2
  • Added Peppol A-NZ-PEPPOL 1.0.9 rules (deprecated version 1.0.8)
  • Added support for Simplerinvoicing 2.0.3.7 and deprecated old versions
  • Added support for Simplerinvoicing NLCIUS-CII 1.0.3.6 and deprecated old versions
  • Added support for Simplerinvoicing 2.0 G-Account extension 1.0.7 and deprecated old versions
  • Added Peppol May 2023 release (Billing 3.0.15 and Upgrade 3.0.11) - using a new versioning number (yyyy.m)
  • Added new submodule phive-rules-setu for selected Dutch SETU standards
  • Added support for Peppol End User Statistics Report 1.0.1

v3.0.3 - 2023-04-30

  • Requires ph-ubl 8.0.2 or later
  • Added support for UBL 2.4-CSD01
  • Added support for Japan PINT Invoice and Credit Note 0.1.2. See issue #16 - thx @dwillekens

v3.0.2 - 2023-04-12

  • Added support for EN 16931 1.3.10 format and deprecated EN 16931 1.3.6a, 1.3.7 and 1.3.8 versions
  • Deprecated Peppol rules 3.0.14
  • Added support for fatturaPA 1.2.2
  • Added support for Simplerinvoicing 2.0.3.6 and deprecated old versions
  • Added support for Simplerinvoicing NLCIUS-CII 1.0.3.5 and deprecated old versions
  • Added support for Simplerinvoicing 2.0 G-Account extension 1.0.6 and deprecated old versions

v3.0.1 - 2023-03-16

  • Added support for Peppol End User Statistics Report 1.0.0 (deprecated 1.0.0-RC2)
  • Added support for Peppol Transaction Statistics Report 1.0.1 (deprecated 1.0.0)

v3.0.0 - 2023-02-20

  • Using Java 11 as the baseline
  • Updated to ph-commons 11
  • Updated to JAXB 4.0

v2.1.19 - 2023-02-19

  • Added support for Energie eFactuur 3.1.0
  • Added support for XRechnung 2.3.1
  • Deprecated XRechnung 2.1.1

v2.1.18 - 2022-12-12

  • Added Peppol A-NZ-PEPPOL 1.0.8 rules (deprecated version 1.0.7)
  • Moved Peppol A-NZ-PEPPOL 1.0.6 rules from phive-rules-peppol to phive-rules-peppol-legacy
  • Added support for Peppol November 2022 release as 3.15.0 (Billing 3.0.14 and the rest 3.0.10)
  • Moved Peppol 3.13.0 rules from phive-rules-peppol to phive-rules-peppol-legacy
  • Added support for UBL.BE 1.30, deprecated version 1.2.9 (see the change in numbering: 30 vs. 2.9)
  • Added support for CIUS-RO 1.0.8 - thanks to @yleider for the PR again

v2.1.17 - 2022-11-18

  • Added support for Peppol End User Statistics Report 1.0.0-RC2
  • Added support for Peppol Transaction Statistics Report 1.0.0
  • Added support for Simplerinvoicing 2.0.3.5
  • Added support for Simplerinvoicing NLCIUS-CII 1.0.3.4
  • Added support for Simplerinvoicing 2.0 G-Account extension 1.0.5
  • Added support for OIOUBL 1.13.0
  • Updated XRechnung 2.2.0 rules to v1.7.3

v2.1.16 - 2022-10-18

  • Added support for ebInterface 6.1
  • Added support for EN 16931 1.3.9 format

v2.1.15 - 2022-07-06

  • Added Peppol A-NZ-PEPPOL 1.0.7 rules (deprecated version 1.0.6)
  • Moved Peppol A-NZ-PEPPOL 1.0.5 rules from phive-rules-peppol to phive-rules-peppol-legacy
  • Deprecated Peppol 3.13.0 rules
  • Updated XRechnung 2.2.0 rules to v1.7.2
  • Added support for OIOUBL 1.12.3

v2.1.14 - 2022-05-19

  • Fixed the EN 16931 UBL 1.3.8 XSLT version. That does not impact the Peppol May 2022 release.
  • Added support for CIUS-RO 1.0.3 - thanks to @yleider for the PR ❤️
  • Added support for CIUS-RO 1.0.4

v2.1.13 - 2022-05-09

  • Deprecated XRechnung 2.0.0 and 2.0.1
  • Added support for EN 16931 1.3.8 format
  • Added support for Simplerinvoicing 1.2.4, deprecated 1.2.3
  • Added support for Simplerinvoicing 2.0.3.4, deprecated 2.0.3.3
  • Added support for Simplerinvoicing NLCIUS-CII 1.0.3.3, deprecated 1.0.3.2
  • Added support for Simplerinvoicing 2.0 G-Account extension 1.0.4, deprecated 1.0.3
  • Added support for Peppol May 2022 release as 3.14.0 (Billing 3.0.13 and the rest 3.0.9)
  • Moved Peppol rules 3.12.0 from phive-rules-peppol to phive-rules-peppol-legacy

v2.1.12 - 2022-03-21

  • Updated rules for XRechnung 2.2.0 to Schematron 1.7.1

v2.1.11 - 2022-01-25

  • Added support for Peppol Italy rules 2.3.0 (AGID Despatch Advice, Invoice, Order, Order Agreement and Order Response)
  • Deprecated support for Peppol Italy rules 2.2.9
  • Added support for XRechnung 2.2.0

v2.1.10 - 2022-01-11

  • Added support for Portuguese CIUS-PT 2.1.1
  • Added Peppol A-NZ-PEPPOL 1.0.6 rules (deprecated version 1.0.5)
  • Moved Peppol A-NZ-PEPPOL 1.0.4 rules from phive-rules-peppol to phive-rules-peppol-legacy
  • Added support for Peppol Directory BusinessCard v1, v2 and v3

v2.1.9 - 2021-12-23

  • Deprecated Peppol 3.12.0 rules
  • Added support for UBL.BE 1.2.9, deprecated version 1.2.8
  • Added support for Simplerinvoicing 2.0.3.3, deprecated 2.0.3.2
  • Added support for Simplerinvoicing NLCIUS-CII 1.0.3.2, deprecated 1.0.3.1
  • Added support for Simplerinvoicing 2.0 G-Account extension 1.0.3, deprecated 1.0.2

v2.1.8 - 2021-11-05

  • Fixed the UBL 2.3 version from 2.3-cs01 to 2.3 - no content-wise changes
  • Added support for EN 16931 1.3.7 format (deprecated version 1.3.6)
  • Added support for Peppol November 2021 rules (3.13.0)
  • Moved Peppol rules 3.11.1 from phive-rules-peppol to phive-rules-peppol-legacy

v2.1.7 - 2021-09-02

  • Peppol rules 3.11.1 are now correctly marked as deprecated
  • Added support for Simplerinvoicing 2.0.3.2, deprecated 2.0.3 and 2.0.3.1
  • Added support for Simplerinvoicing NLCIUS-CII 1.0.3.1, deprecated 1.0.3
  • Added support for Simplerinvoicing 2.0 G-Account extension 1.0.2, deprecated 1.0.1

v2.1.6 - 2021-08-11

v2.1.5 - 2021-07-02

  • Deprecated Peppol rules 3.11.1
  • Added support for EN 16931 1.3.6 format (deprecated version 1.3.5)
  • Added Peppol A-NZ-PEPPOL 1.0.5 rules (deprecated version 1.0.4)
  • Moved Peppol A-NZ-PEPPOL 1.0.3 rules from phive-rules-peppol to phive-rules-peppol-legacy

v2.1.4 - 2021-05-10

  • Added support for UBL.BE 1.2.7, deprecated version 1.2.6

v2.1.3 - 2021-05-03

  • Added support for Peppol Spring 2021 rules (final version)
  • Moved Peppol rules 3.11.0 from phive-rules-peppol to phive-rules-peppol-legacy

v2.1.2 - 2021-05-02

  • Updated to ph-commons 10.1
  • Added support for Peppol Spring 2021 rules (Release Candidate)

v2.1.1 - 2021-04-02

  • Added support for EN 16931 1.3.5 format (deprecated version 1.3.4)
  • Added new submodule phive-rules-peppol-italy with the AGID Order, Despatch Advice and Order Response

v2.1.0 - 2021-03-22

  • Updated to ph-commons 10
  • Dropped support for EN 16931 EDIFACT/ISO 20625 1.0.0

v2.0.5 - 2021-03-09

  • Extracted new submodule phive-rules-peppol-legacy to reduce the size of the default library. Only the latest two versions are contained in the main phive-rules-peppol module - older versions will be moved to phive-rules-peppol-legacy.

v2.0.4 - 2021-01-27

  • Updated to phive 7.1.0
  • Added support for EN 16931 1.3.4 format (deprecated version 1.3.3)

v2.0.3 - 2021-01-07

  • Added support for Simplerinvoicing 1.2.3
  • Added support for Simplerinvoicing 2.0.3
  • Added support for Simplerinvoicing 2.0.3.1
  • Added support for Simplerinvoicing NLCIUS-CII 1.0.3
  • Added support for Simplerinvoicing 2.0 G-Account extension 1.0
  • Added support for Simplerinvoicing 2.0 G-Account extension 1.0.1

v2.0.2 - 2021-01-06

  • Updated to UBL 2.3-CSD04 (adding 2 new document types)
  • Added support for XRechnung 2.0.1 rules v1.5.0
  • Deprecated XRechnung 1.2.2 rules as they were valid only until December 31, 2020
  • Added support for Czech ISDOC (version 6.0.1) - in the submodule phive-rules-isdoc

v2.0.1 - 2020-12-04

  • Updated to ph-schematron 6.0.1
  • Updated to phive 7.0.1
  • Fixed the XRechnung 2.0.0 rules to ignore certain base EN16931 rules
  • Fixed the display names of the Peppol rules to use the correct versioning

v2.0.0 - 2020-11-25

  • Renamed modules from ph-bdve-rules-* to phive-rules*
  • Changed the Maven group from com.helger.bdve.rules.* to com.helger.phive.rules.*
  • Named the Maven artefacts from ph-bdve-rules-* to phive-rules-*
  • Updated to ph-schematron 6.0.0
  • Added support for UBL.BE 1.2.6, deprecated version 1.2.5

v1.0.15 - 2020-11-24

  • Added A-NZ-PEPPOL 1.0.4 rules

v1.0.14 - 2020-11-18

  • Added support for UBL.BE 1.2.5, deprecated version 1.2.3
  • Deprecated Peppol validation artefacts 3.10.1 and 3.11.0

v1.0.13 - 2020-11-13

  • Added Peppol Fall 2020 release corrigendum as version 3.11.1

v1.0.12 - 2020-11-12

  • Same as 1.0.11 - just re-released because I thought it was lost on the way to Maven Central

v1.0.11 - 2020-11-12

  • Updated to ph-bdve engine 6.0.4
  • Fixed an error with the XRechnung 2.0.0 validation artefacts
  • Added support for Spanish Facturae (version 3.0, 3.1, 3.2, 3.2.1 and 3.2.2) - in the submodule ph-bdve-rules-facturae
  • Added support for Portuguese CIUS-PT (version 2.0.0) - in the submodule ph-bdve-rules-cius-pt

v1.0.10 - 2020-11-06

  • Added support for XRechnung 2.0.0 - thanks to @yleider for the PR

v1.0.9 - 2020-11-02

  • Added Peppol Fall 2020 release as version 3.11.0

v1.0.8 - 2020-10-05

  • Added support for EN 16931 1.3.3 format (deprecated version 1.3.2)

v1.0.7 - 2020-09-17

  • Updated to Jakarta JAXB 2.3.3

v1.0.6 - 2020-08-30

  • Added support for Finvoice 1.3, 2.0, 2.01 and 3.0
  • Added Svefaktura 1.0 and Svefaktura ObjectEnvelope 1.0
  • Updated to UBL 2.3-CSD03

v1.0.5 - 2020-07-22

  • Added support for UBL.BE 1.2.3 rules

v1.0.4 - 2020-07-06

  • Added support for Italian fatturaPA 1.2 and 1.2.1
  • Deprecated Peppol 3.10.0 rules
  • A Hotfix to the Peppol 3.10.1 rules, only relevant for "0208" participant identifier scheme usage, was included
  • Added SG-PEPPOL 1.0.3 rules
  • Added A-NZ-PEPPOL 1.0.3 rules

v1.0.3 - 2020-06-16

  • Added Peppol Spring 2020 Hotfix release as version 3.10.1

v1.0.2 - 2020-06-15

  • EHF G2 rules no longer directly use the Peppol rules but the provided subsets

v1.0.1 - 2020-06-10

  • Added support for EHF G3 version 2020-03-23
  • Updated the Peppol 3.10.0 VESIDs to contain the document types

v1.0.0 - 2020-06-08

  • Extracted from ph-bdve to allow for a clear separation between the engine and rules
  • Therefore a new Maven group com.helger.bdve.rules was created

My personal Coding Styleguide | It is appreciated if you star the GitHub project if you like it.

About

eInvoice Validation rules for the phive engine - for many different countries and jurisdictions

Topics

Resources

Code of conduct

Stars

52 stars

Watchers

9 watching

Forks

Releases

Used by

Contributors

Languages