Skip to content

Fatal

PEPPOL-EN16931-P0105: Reason VATEX-EU-O needs VAT category O

In short

Fatal: fails the selected checks.

PEPPOL-EN16931-P0105 means a VAT category has the exemption reason code VATEX-EU-O (not subject to VAT) but its VAT category code (cbc:ID, BT-118 in the VAT breakdown) is not O. Set the category to O, or change the reason code if it does not describe the sale.

On this page

What it means

When a row of the VAT breakdown (BG-23) has the exemption reason code (BT-121) VATEX-EU-O, which stands for not subject to VAT, its VAT category code (BT-118) must be O, the capital letter O and not the digit zero. Any other category, such as E or Z, fails. The same check applies to any other cac:TaxCategory with this exemption reason code.

Why it matters

Category O marks a sale that falls outside the scope of VAT, which is different from a sale that is exempt (E) or taxed at a rate of 0 (Z).

How to fix it

In your invoicing software, set the VAT category code that accompanies VATEX-EU-O to O. If the sale is in fact exempt from VAT rather than outside its scope, use category E with an exemption reason that fits instead of VATEX-EU-O. If you build the XML yourself, set cbc:ID to O in the same cac:TaxCategory that holds the cbc:TaxExemptionReasonCode.

Once the file is corrected, check it again for free: Validate a Peppol BIS invoice

Or fix the invoice in a form and download the corrected file, for 1 credit: Fix a rejected e-invoice

The rule as published

Read the rule on the publisher's site

Where this rule applies

Rule set Version
Peppol BIS Billing 3.0 (invoice) 2026.5
Peppol BIS Billing 3.0 (credit note) 2026.5
Rule text from phive-rules 4.6.4.

Check your file

Drop your e-invoice to see whether PEPPOL-EN16931-P0105 still fails, and which other rules do.

Updated 6 November 2026