InvoiceValidator.eu

CII-SR-451

warningEN 16931syntax binding ruleCII

Only one payee identifier should be present (either the ID or the Global ID)

Why it fails

The payee identifier (BT-60) is given twice over: once as a plain identifier and once as a scheme identifier (GlobalID). These are two ways of writing the same thing, so only one may appear — a receiver reading both has no way to know which one is authoritative if they disagree.

How to fix it

Keep whichever you can stand behind and delete the other. Use the scheme identifier (GlobalID) when the value comes from a registered scheme such as GLN or DUNS, and give its scheme code in the schemeID attribute; use the plain ID when it is your own internal reference.

What the validator checks

CII — context /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement

(not(ram:PayeeTradeParty/ram:ID) and ram:PayeeTradeParty/ram:GlobalID) or (ram:PayeeTradeParty/ram:ID and not(ram:PayeeTradeParty/ram:GlobalID)) or (not(ram:PayeeTradeParty/ram:ID) and not(ram:PayeeTradeParty/ram:GlobalID))

Related rules

Part of CII-SR — CII restrictions.

Check your own invoice against CII-SR-451

…or paste the XML instead

Nothing is stored, and the whole invoice is checked, not just this rule. A PDF only works if it is Factur-X / ZUGFeRD — a PDF with the invoice XML inside it.