XRechnung · CII · rule diff

XRechnung 2.2.0: CII validation rule changes

22 rules changed between 2.1.0 and 2.2.0 — added, removed, or rewritten. This is computed from the two rule sets directly, not from a changelog.

About this comparison

Revalidate compares the archived 2.1.0 and 2.2.0 rule sets at the assertion and variable level. The diff identifies changed rules; replaying your invoices shows which changes affect your documents.

Browse archived rule sets and checksums. Report published by Revalidate on .

What changed

PEPPOL-EN16931-R121Severity raised

Base quantity now fails documents that previously passed with a "warning".

Between published 2.1.0 and 2.2.0, the severity of this rule changed from "warning" to "fatal". The test expression is byte-identical in both releases, and the message is "Base quantity MUST be a positive number above zero." Documents that previously passed validation with a "warning" now fail it. No other change is shown in the evidence.

fatalformat

Original rule text: Base quantity MUST be a positive number above zero.

PEPPOL-EN16931-R121 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R046Severity raised

The net price check now rejects documents instead of returning a "warning".

The rule's severity changed from "warning" to "fatal". Its test expression is byte-identical in both releases. A severity change from "warning" to "fatal" means documents that previously passed with a "warning" now fail validation.

fatalformat

Original rule text: Item net price MUST equal (Gross price - Allowance amount) when gross price is provided.

PEPPOL-EN16931-R046 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R040Severity raised

Allowance/charge amount calculation rule now "fatal", not "warning"

The rule's severity was raised from "warning" to "fatal". Its test expression is byte-identical in both releases. The rule still requires an allowance/charge amount to equal the base amount times the percentage divided by 100 when both base amount and percentage exist. As a result, documents that previously passed validation with a "warning" now fail it.

fatalformat

Original rule text: Allowance/charge amount must equal base amount * percentage/100 if base amount and percentage exists

PEPPOL-EN16931-R040 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R053Severity raised

Severity raised from warning to fatal; test unchanged.

The severity of the rule was raised from warning to fatal. The test expression is byte-identical between the two releases. As a result, documents that previously passed validation carrying a warning now fail validation.

fatalformat

Original rule text: No more than one tax total amount must be provided where currency id equals document currency code.

PEPPOL-EN16931-R053 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R005Severity raised

Equal VAT and invoice currency codes now fail validation instead of warning

The rule's severity moved from "warning" to "fatal". The check itself is unchanged between the two releases: if the VAT accounting currency code is provided, it must be different from the invoice currency code. A document fails when that code is provided and equals the invoice currency code. Documents that previously passed validation while carrying this warning now fail validation. The rule message remains "VAT accounting currency code MUST be different from invoice currency code when provided."

fatalformat

Original rule text: VAT accounting currency code MUST be different from invoice currency code when provided.

PEPPOL-EN16931-R005 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R020Severity raised

Seller electronic address rule now fatal instead of warning

The rule's severity moved from warning to fatal. Its test expression is unchanged between the two releases. Documents that previously passed validation carrying a warning now fail it.

fatalformat

Original rule text: Seller electronic address MUST be provided

PEPPOL-EN16931-R020 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R055Severity raised

Severity raised from "warning" to "fatal"; test unchanged

The rule's severity changed from "warning" to "fatal". The check itself and the rule message are unchanged. Documents that previously passed validation carrying a warning now fail validation.

fatalformat

Original rule text: Invoice total VAT amount and Invoice total VAT amount in accounting currency MUST have the same operational sign

PEPPOL-EN16931-R055 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R101Severity raised

Rule now fails documents that previously passed with a "warning"

The rule message is "Element Additional referenced document can only be used for Invoice line object." The test expression is byte-identical in published "2.1.0" and published "2.2.0". The severity changed from "warning" to "fatal". Documents that previously passed validation carrying a "warning" under this rule now fail validation. No other aspect of the rule changed.

fatalformat

Original rule text: Element Additional referenced document can only be used for Invoice line object.

PEPPOL-EN16931-R101 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R061Severity raised

The rule now fails documents it previously only warned about.

The rule's severity changed from "warning" to "fatal", while its test expression remained byte-identical. Documents that previously passed validation carrying a warning now fail. The rule's message is unchanged: "Mandate reference MUST be provided for direct debit."

fatalformat

Original rule text: Mandate reference MUST be provided for direct debit.

PEPPOL-EN16931-R061 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R111Severity raised

Severity of line period end date rule raised from warning to fatal

The rule's severity changed from warning to fatal. Its test expression is byte-identical in both releases, so the check performed is unchanged. Documents that previously passed validation with a warning from this rule now fail validation.

fatalformat

Original rule text: End date of line period MUST be within invoice period.

PEPPOL-EN16931-R111 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R043-1Severity raised

The allowance/charge ChargeIndicator rule changed from "warning" to "fatal"

The severity of this rule was raised from "warning" to "fatal". Its test expression and message are unchanged; the test still requires the allowance/charge ChargeIndicator text to equal "true" or "false". The test expression is byte-identical in both releases, and no change to the expression or message was made.

fatalformat

Original rule text: Allowance/charge ChargeIndicator value MUST equal 'true' or 'false'

PEPPOL-EN16931-R043-1 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R001Severity raised

Rule "Business process MUST be provided" now "fatal", not "warning"

The severity of the rule "Business process MUST be provided" changed from "warning" to "fatal" between published 2.1.0 and published 2.2.0. The test expression is unchanged. Documents that previously passed validation while carrying a warning now fail it.

fatalformat

Original rule text: Business process MUST be provided.

PEPPOL-EN16931-R001 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R010Severity raised

Severity raised from warning to fatal; test unchanged.

The severity of this rule changed from "warning" to "fatal". The test expression is the same in both releases. As a result, a document that previously passed validation with a warning now fails validation. The rule message is "Buyer electronic address MUST be provided".

fatalformat

Original rule text: Buyer electronic address MUST be provided

PEPPOL-EN16931-R010 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R044Severity raised

Charge-on-price rule now fails instead of "warning".

The rule's severity changed from "warning" to "fatal", so the same condition now produces a fatal result rather than a warning. The test expression is byte-identical in both releases, so the condition itself is unchanged. This is a severity-only change.

fatalformat

Original rule text: Charge on price level is NOT allowed. Only value 'false' allowed.

PEPPOL-EN16931-R044 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R042Severity raised

Documents previously warned by this rule now fail validation

The rule's severity was raised from "warning" to "fatal". A document that would previously have passed validation carrying a warning for this rule now fails validation. The test expression is "false()" in both releases and is byte-identical, so the rule's check itself has not changed.

fatalformat

Original rule text: Allowance/charge percentage MUST be provided when allowance/charge base amount is provided.

PEPPOL-EN16931-R042 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R043-2Severity raised

Severity raised from warning to fatal; test unchanged

The rule's severity was raised from warning to fatal, so documents that previously passed validation carrying a warning now fail it. The test expression is byte-identical in both releases and still contains the same condition requiring the charge indicator to equal "true" or "false". The rule message is unchanged: Allowance/charge ChargeIndicator value MUST equal "true" or "false".

fatalformat

Original rule text: Allowance/charge ChargeIndicator value MUST equal 'true' or 'false'

PEPPOL-EN16931-R043-2 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R130Severity raised

Severity raised from warning to fatal

The severity of the rule was raised from "warning" to "fatal". The test expression is byte-identical in both releases; it compares the unit code of the price base quantity to the unit code of the billed quantity. Documents that previously passed validation carrying a "warning" now fail validation.

fatalformat

Original rule text: Unit code of price base quantity MUST be same as invoiced quantity.

PEPPOL-EN16931-R130 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R054Severity raised

Rule severity raised from warning to fatal; test unchanged

The rule's severity increased from warning to fatal between published 2.1.0 and published 2.2.0. The test expression is byte-identical in both releases. Documents that previously passed validation with a warning for this rule now fail. The rule message remains that only one tax total amount must be provided where currency id equals tax currency code, if tax currency code is provided.

fatalformat

Original rule text: Only one tax total amount must be provided where currency id equals tax currency code, if tax currency code (BT-6) is provided.

PEPPOL-EN16931-R054 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R041Severity raised

Severity raised from "warning" to "fatal": documents carrying this warning now fail validation

The rule's severity increased from "warning" to "fatal", so documents that previously passed validation with a warning for this rule now fail validation. The rule message remains "Allowance/charge base amount MUST be provided when allowance/charge percentage is provided." The test expression stays "false()" in both releases.

fatalformat

Original rule text: Allowance/charge base amount MUST be provided when allowance/charge percentage is provided.

PEPPOL-EN16931-R041 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R110Severity raised

Line period start date rule is now "fatal", not "warning"

The severity of the rule changed from "warning" to "fatal". The test expression is byte-identical between the two versions, so the condition it checks has not changed. Documents that previously passed validation with a "warning" now fail it.

fatalformat

Original rule text: Start date of line period MUST be within invoice period.

PEPPOL-EN16931-R110 rule details
Before · 2.1.0warning
After · 2.2.0fatal
PEPPOL-EN16931-R008Severity raised

Empty-element rule severity changes from "warning" to "fatal"

The rule's severity changed from "warning" to "fatal". Its message remains "Document MUST not contain empty elements." The test expression is "false()" before and after (byte-identical in both releases), so the change is only in severity. Documents that previously passed validation with a "warning" now fail it.

fatalformat

Original rule text: Document MUST not contain empty elements.

PEPPOL-EN16931-R008 rule details
Before · 2.1.0warning
After · 2.2.0fatal
BR-DEX-01New rule

New rule restricts MIME codes on the attached document element

The rule now requires the MIME code on the attached document element "BT-125" to be one of "application/pdf", "image/png", "image/jpeg", "text/csv", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", or "application/vnd.oasis.opendocument.spreadsheet". In the case of an extension, "application/xml" is also allowed. This check did not exist in the previous published version.

fatalcountry

Original rule text: [BR-DEX-01] Das Element "Attached Document" (BT-125) benutzt einen nicht zulässigen MIME-Code: . Im Falle einer Extension darf zusätzlich zu der Liste der mime codes (definiert in Abschnitt 8.2, "Binary Object") der MIME-Code application/xml genutzt werden.

Explanation and fix

What this rule requires

This fatal rule applies to an Attached Document (BT-125) in an invoice that is declared as an XRechnung extension ($isExtension). The mimeCode attribute of the embedded document binary object must be present and its value must exactly match one of the allowed codes: application/pdf, image/png, image/jpeg, text/csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.oasis.opendocument.spreadsheet, or application/xml. A missing attribute, an empty value, or any other value causes the invoice to fail validation.

How to fix

Set the mimeCode attribute on the relevant binary object element (cbc:EmbeddedDocumentBinaryObject in UBL or ram:AttachmentBinaryObject in CII) to one of the permitted values that matches the actual file content. If the attached file is not in one of these formats, convert it to a permitted format or remove the attachment before resubmitting.

Guidance on this rule. The original text above is authoritative.

BR-DEX-01 rule details

Added · 2.2.0

.[@mimeCode = 'application/pdf' or @mimeCode = 'image/png' or @mimeCode = 'image/jpeg' or @mimeCode = 'text/csv' or @mimeCode = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' or @mimeCode = 'application/vnd.oasis.opendocument.spreadsheet' or @mimeCode = 'application/xml']

Which of these catch you depends on your invoices.

The rule diff is the same for everyone — what breaks is not. Upload a corpus once and every subsequent release gets replayed against your own invoices, so you see what breaks for you.