Peppol BIS Billing 3.0.21 · UBL

PEPPOL-EN16931-P0100: Invoice type code MUST be set according to the profile

Peppol BIS Billing 3.0.21 · UBL

fatalformat

Original rule text

[PEPPOL-EN16931-P0100]-Invoice type code MUST be set according to the profile.

Stored validation assertion
           not($profile = ('01','02')) or (some $code in tokenize('71 80 82 84 102 218 219 326 331 380 382 383 384 386 388 393 395 553 575 623 780 817 870 875 876 877', '\s')             satisfies normalize-space(text()) = $code)

PEPPOL-EN16931-P0100 is a fatal rule in the format layer of Peppol BIS Billing 3.0.21 · UBL. An invoice that breaks it is rejected.

What this rule requires

The rule requires that when the document profile maps to code 01 or 02, the cbc:InvoiceTypeCode must contain one of the 26 listed UNCL 1001 codes (e.g. 380, 384, 875). The profile is 01 when cbc:ProfileID equals urn:fdc:peppol.eu:2017:poacc:billing:01:1.0, urn:peppol:france:billing:regulated, or urn:peppol:france:billing:non-regulated; profile 02 when cbc:ProfileID equals urn:peppol:bis:billing_with_response. The test passes for any other cbc:ProfileID, so the message “MUST be set according to the profile” is broader than the test.

How to fix

If cbc:ProfileID is one of those four URNs, set cbc:InvoiceTypeCode to a value from the allowed list, e.g. 380 or 384. If cbc:ProfileID has a different value or is missing, the rule is satisfied by the test, but check whether the profile is correct for your invoice.

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

Where to go next

PEPPOL-EN16931-P0100 changed in 3 published Peppol BIS Billing UBL release comparisons:

Validate an invoice against these rules · All release changes