AttestwireRule referencePEPPOL-COMMON-R052

PEPPOL-COMMON-R052 A Danish P-number should be exactly ten digits

noun · Peppol BIS · warning · BT-29

For a sample invoice, the library reports: The Seller identifier (BT-29) is "123" under scheme "0096", which identifies the Danish chamber of commerce number (P-number). A value in that scheme must be exactly ten digits, and this one is not.

Business term
BT-29
Severity
warning

The fix

Correct seller.identifier, or change its scheme identifier if the value belongs to a different register. A check digit failing almost always means one digit was transposed or dropped in transcription — compare it against the source register rather than re-typing it.

A passing value

the shape this field expects
"identifier": { "schemeId": "0096", "value": "1234567890" }

What the library returns

The full error returned by @attestwire/en16931. It includes the rule ID, affected field and suggested correction. Developers can use this object in their application:

TeachingError
{
  "rule": "PEPPOL-COMMON-R052",
  "field": "BT-29",
  "severity": "warning",
  "message": "The Seller identifier (BT-29) is \"123\" under scheme \"0096\", which identifies the Danish chamber of commerce number (P-number). A value in that scheme must be exactly ten digits, and this one is not. A Danish P-number identifies a production unit — a site — rather than the legal entity the CVR number identifies. It is ten digits with no check digit, so length is the only thing that can be verified, which is also why this is a warning and not a rejection. Peppol flags this one as a warning rather than a rejection, so the document will be delivered — but a wrong identifier is delivered to the wrong place, or to nowhere. This is a Peppol BIS Billing 3.0 profile rule: it applies because profile is \"peppol-bis-3\". It does not apply to the en16931, xrechnung-ubl or xrechnung-cii profiles, whose validators will accept the same document.",
  "fix": "Correct seller.identifier, or change its scheme identifier if the value belongs to a different register. A check digit failing almost always means one digit was transposed or dropped in transcription — compare it against the source register rather than re-typing it.",
  "example": "\"identifier\": { \"schemeId\": \"0096\", \"value\": \"1234567890\" }",
  "xpath": "/ubl:Invoice/cac:AccountingSupplierParty/cac:Party/cac:PartyIdentification/cbc:ID",
  "docsUrl": "https://attestwire.com/rules/PEPPOL-COMMON-R052"
}

xpath is always a UBL path. On a CII invoice, look for the matching CII field instead.