# PHIVE rules [![Sonatype Central](https://maven-badges.sml.io/sonatype-central/com.helger.phive.rules/phive-rules-parent-pom/badge.svg)](https://maven-badges.sml.io/sonatype-central/com.helger.phive.rules/phive-rules-parent-pom/) [![javadoc](https://javadoc.io/badge2/com.helger.phive.rules/phive-rules-api/javadoc.svg)](https://javadoc.io/doc/com.helger.phive.rules/phive-rules-api) > 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](https://github.com/phax/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](https://github.com/phax/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](https://github.com/phax/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](https://github.com/phax/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](https://github.com/phax/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: ```xml com.helger.phive.rules phive-rules-cius-pt x.y.z com.helger.phive.rules phive-rules-cius-ro x.y.z com.helger.phive.rules phive-rules-ehf x.y.z com.helger.phive.rules phive-rules-en16931 x.y.z com.helger.phive.rules phive-rules-energieefactuur x.y.z com.helger.phive.rules phive-rules-eracun x.y.z com.helger.phive.rules phive-rules-france x.y.z com.helger.phive.rules phive-rules-isdoc x.y.z com.helger.phive.rules phive-rules-oioubl x.y.z com.helger.phive.rules phive-rules-peppol x.y.z com.helger.phive.rules phive-rules-peppol-pint x.y.z com.helger.phive.rules phive-rules-peppol-taxdata x.y.z com.helger.phive.rules phive-rules-peppol-italy x.y.z com.helger.phive.rules phive-rules-serbia x.y.z com.helger.phive.rules phive-rules-setu x.y.z com.helger.phive.rules phive-rules-simplerinvoicing x.y.z com.helger.phive.rules phive-rules-singapore x.y.z com.helger.phive.rules phive-rules-svefaktura x.y.z com.helger.phive.rules phive-rules-turkey x.y.z com.helger.phive.rules phive-rules-ublbe x.y.z com.helger.phive.rules phive-rules-xrechnung x.y.z com.helger.phive.rules phive-rules-zatca x.y.z com.helger.phive.rules phive-rules-zugferd x.y.z ``` Alternate usage as a Maven BOM: ```xml com.helger.phive.rules phive-rules-parent-pom x.y.z pom import ``` ## 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: ```xml com.helger.phive.rules phive-rules-all x.y.z ``` and register them all in a single call, in the proper order: ```java final ValidationExecutorSetRegistry aRegistry = new ValidationExecutorSetRegistry <> (); PhiveRulesValidation.initPhiveRules (aRegistry); ``` To additionally register the legacy rule sets, depend on `phive-rules-all-legacy` from [phive-rules-legacy](https://github.com/phax/phive-rules-legacy) and call `PhiveRulesLegacyValidation.initPhiveRulesLegacy` afterwards (the current rules must be registered first): ```xml com.helger.phive.rules phive-rules-all-legacy x.y.z ``` ```java final ValidationExecutorSetRegistry 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): ```java final ValidationExecutorSetRegistry 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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/ph-schematron/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/57). The rules are taken from the [GST InvoiceNow requirement resources](https://go.gov.sg/gstinvoicenowreq-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](https://github.com/phax/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](https://github.com/phax/phive-rules/issues/88). The rules are taken from [SG-BIS-Billing3-Schematron.zip](https://www.peppolguide.sg/billing/files/SG-BIS-Billing3-Schematron.zip) and are marked as valid from 2026-09-08, the mandatory use date stated in the [SG release notes](https://www.peppolguide.sg/billing/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](https://test-docs.peppol.eu/vida/2026-v1.1.0/Vida-tdd/). 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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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`](https://rep.erst.dk/git/openebusiness/common/-/tree/master/released/peppol) 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](https://nemhandel.dk/release-af-peppol-schematron-pakker-1170-og-1214). 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](https://github.com/fnfempe/France_RFE/releases/tag/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](https://github.com/ConnectingEurope/eInvoicing-EN16931/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/pull/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](https://github.com/phax/phive-rules/issues/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](https://github.com/fnfempe/France_RFE/releases/tag/v1.4.0.03) 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](https://github.com/phax/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-`) 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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/63) - thx @gastoncocco * Added new submodule `phive-rules-turkey` for Turkey UBL-TR 1.2.1 / e-Fatura validation. See [#62](https://github.com/phax/phive-rules/issues/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 `` declarations to come before `` 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](https://github.com/phax/phive-rules/issues/56) * Added OIOUBL 1.17.1 rules. See [#54](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/51) * Updated to AE PINT 1.0.2-hotfix rules. See [#51](https://github.com/phax/phive-rules/issues/51) * Updated to Peppol BIS Billing 3.0.20-hotfix rules. See [#52](https://github.com/phax/phive-rules/issues/52) v4.1.4 - 2026-01-23 * Added Croatian eRacun v1.0.1 rules. See [#49](https://github.com/phax/phive-rules/issues/49) * Added OIOUBL 1.17.0-RC rules. See [#50](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/48) v4.1.2 - 2025-12-13 * Added support for Peppol AE Tax Data Document v1.0.0. See [#43](https://github.com/phax/phive-rules/issues/43) * Added support for ZuGFERD 2.4 - all profiles (XML only). See [#44](https://github.com/phax/phive-rules/issues/44) * Deprected ZuGFERD 2.3.2 version * Added OIOUBL 1.16.1 rules. See [#42](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/45) * Deprecated Peppol BIS 2024.11 release, as 2025.5 release is already mandatory * Added Peppol BIS 2025-11 release. See [#46](https://github.com/phax/phive-rules/issues/46) * Added Peppol PINT 2025-11 releases. See [#47](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/41) * Added support for Croatian eRacun v1.0.0 rules (new submodule `phive-rules-eracun`). See [#40](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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](https://github.com/phax/phive-rules/issues/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 :heart: * 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 * Added support for EN 16931 1.3.6a rules - a special fork on https://github.com/phax/eInvoicing-EN16931/releases/tag/validation-1.3.6a * Added support for XRechnung 2.1.1 * Added support for UBL.BE 1.2.8, deprecated version 1.2.7 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](https://github.com/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](https://github.com/phax/meta/blob/master/CodingStyleguide.md) | It is appreciated if you star the GitHub project if you like it.