PEPPOL-EN1693149 rules
What Belgium has required of every VAT-registered business since 1 January 2026, and what Peppol delivery enforces everywhere else. An invoice can be perfectly valid EN 16931 and still fail these.
| PEPPOL-EN16931-CL001 | fatal | Mime code must be according to subset of IANA code list. |
| PEPPOL-EN16931-CL002 | fatal | Reason code MUST be according to subset of UNCL 5189 D.16B. |
| PEPPOL-EN16931-CL003 | fatal | Reason code MUST be according to UNCL 7161 D.16B. |
| PEPPOL-EN16931-CL006 | fatal | Invoice period description code must be according to UNCL 2005 D.16B. |
| PEPPOL-EN16931-CL007 | fatal | Currency code must be according to ISO 4217:2005 |
| PEPPOL-EN16931-CL008 | fatal | Electronic address identifier scheme must be from the codelist "Electronic Address Identifier Scheme" |
| PEPPOL-EN16931-F001 | fatal | A date MUST be formatted YYYY-MM-DD. |
| PEPPOL-EN16931-P0100 | fatal | Invoice type code MUST be set according to the profile. |
| PEPPOL-EN16931-P0101 | fatal | Credit note type code MUST be set according to the profile. |
| PEPPOL-EN16931-P0104 | fatal | Tax Category G MUST be used when exemption reason code is VATEX-EU-G |
| PEPPOL-EN16931-P0105 | fatal | Tax Category O MUST be used when exemption reason code is VATEX-EU-O |
| PEPPOL-EN16931-P0106 | fatal | Tax Category K MUST be used when exemption reason code is VATEX-EU-IC |
| PEPPOL-EN16931-P0107 | fatal | Tax Category AE MUST be used when exemption reason code is VATEX-EU-AE |
| PEPPOL-EN16931-P0108 | fatal | Tax Category E MUST be used when exemption reason code is VATEX-EU-D |
| PEPPOL-EN16931-P0109 | fatal | Tax Category E MUST be used when exemption reason code is VATEX-EU-F |
| PEPPOL-EN16931-P0110 | fatal | Tax Category E MUST be used when exemption reason code is VATEX-EU-I |
| PEPPOL-EN16931-P0111 | fatal | Tax Category E MUST be used when exemption reason code is VATEX-EU-J |
| PEPPOL-EN16931-P0112 | fatal | Invoice type code 326 or 384 are only allowed when both buyer and seller are German organizations |
| PEPPOL-EN16931-R001 | fatal | Business process MUST be provided. |
| PEPPOL-EN16931-R002 | fatal | No more than one note is allowed on document level, unless both the buyer and seller are German organizations. |
| PEPPOL-EN16931-R003 | fatal | A buyer reference or purchase order reference MUST be provided. |
| PEPPOL-EN16931-R004 | fatal | Specification identifier MUST have the value 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0'. |
| PEPPOL-EN16931-R005 | fatal | VAT accounting currency code MUST be different from invoice currency code when provided. |
| PEPPOL-EN16931-R006 | fatal | Only one invoiced object is allowed on document level |
| PEPPOL-EN16931-R007 | fatal | Business process MUST be in the format 'urn:fdc:peppol.eu:2017:poacc:billing:NN:1.0' where NN indicates the process number. |
| PEPPOL-EN16931-R008 | fatal | Document MUST not contain empty elements. |
| PEPPOL-EN16931-R010 | fatal | Buyer electronic address MUST be provided |
| PEPPOL-EN16931-R020 | fatal | Seller electronic address MUST be provided |
| PEPPOL-EN16931-R040 | fatal | Allowance/charge amount must equal base amount * percentage/100 if base amount and percentage exists |
| PEPPOL-EN16931-R041 | fatal | Allowance/charge base amount MUST be provided when allowance/charge percentage is provided. |
| PEPPOL-EN16931-R042 | fatal | Allowance/charge percentage MUST be provided when allowance/charge base amount is provided. |
| PEPPOL-EN16931-R043 | fatal | Allowance/charge ChargeIndicator value MUST equal 'true' or 'false' |
| PEPPOL-EN16931-R043-1 | fatal | Allowance/charge ChargeIndicator value MUST equal 'true' or 'false' |
| PEPPOL-EN16931-R043-2 | fatal | Allowance/charge ChargeIndicator value MUST equal 'true' or 'false' |
| PEPPOL-EN16931-R044 | fatal | Charge on price level is NOT allowed. Only value 'false' allowed. |
| PEPPOL-EN16931-R046 | fatal | Item net price MUST equal (Gross price - Allowance amount) when gross price is provided. |
| PEPPOL-EN16931-R051 | fatal | All currencyID attributes must have the same value as the invoice currency code (BT-5), except for the invoice total VAT amount in accounting currency (BT-111). |
| PEPPOL-EN16931-R053 | fatal | Only one tax total with tax subtotals MUST be provided. |
| PEPPOL-EN16931-R054 | fatal | Only one tax total without tax subtotals MUST be provided when tax currency code is provided. |
| PEPPOL-EN16931-R055 | fatal | Invoice total VAT amount and Invoice total VAT amount in accounting currency MUST have the same operational sign |
| PEPPOL-EN16931-R061 | fatal | Mandate reference MUST be provided for direct debit. |
| PEPPOL-EN16931-R080 | fatal | Only one project reference is allowed on document level |
| PEPPOL-EN16931-R100 | fatal | Only one invoiced object is allowed pr line |
| PEPPOL-EN16931-R101 | fatal | Element Document reference can only be used for Invoice line object |
| PEPPOL-EN16931-R110 | fatal | Start date of line period MUST be within invoice period. |
| PEPPOL-EN16931-R111 | fatal | End date of line period MUST be within invoice period. |
| PEPPOL-EN16931-R120 | fatal | Invoice line net amount MUST equal (Invoiced quantity * (Item net price/item price base quantity) + Sum of invoice line charge amount - sum of invoice line allowance amou… |
| PEPPOL-EN16931-R121 | fatal | Base quantity MUST be a positive number above zero. |
| PEPPOL-EN16931-R130 | fatal | Unit code of price base quantity MUST be same as invoiced quantity. |