PEPPOL-EN16931-P0100
Invoice type code MUST be set according to the profile.
What does this rule mean?
The invoice type code (BT-3) does not match the Peppol profile.
A document carried as an invoice must also bear an invoice type code (380 and relatives) — otherwise the envelope and the content contradict each other.
Official rule message (standard)
Invoice type code MUST be set according to the profile.
Where the rule applies
Syntax: CII · UBL
The same rule, expressed twice: UBL and CII name the same fields with different paths. Running a CII file against the UBL rules is why you get errors that mean nothing.
UBL
cbc:InvoiceTypeCode
CII
ram:ExchangedDocument/ram:TypeCode
Technical test
The rule passes when this Schematron expression holds true:
$profile != '01' or (some $code in tokenize('71 102 218 219 326 331 382 553 817 870 875 876 877 380 383 384 386 388 393 82 80 84 395 575 623 780 381 396 81 83 532', '\s')
satisfies normalize-space(text()) = $code)How to fix it
A missing or incorrect business entry only you can supply. Add or correct it, then re-check.
Set an invoice type code permitted for the profile, usually 380.
Correct the affected entry in your XML, then re-check the invoice. Validation runs locally in your browser — your file never leaves your machine.
Check an e-invoice here
Drop an XML or ZUGFeRD PDF file here. Validation runs locally in your browser against EN 16931 — your file never leaves your machine.