Validation rules
UBL-SR-20 — UBL rule
The payee identifier (BT-60) is invalid: cac:PayeeParty may carry at most one PartyIdentification/ID (SEPA scheme aside), and the payee must differ from the seller.
- Rule
UBL-SR-20— official EN 16931 / XRechnung rule- Severity
- error
- Detected by
- tier 3 — KoSIT validator (authoritative)
- Reachability
- Only reachable when validating your own XML — normbill-generated documents cannot trigger it
The normbill invoice model has no payee party (BG-10); generated XML never contains cac:PayeeParty.
How to fix it
Keep a single payee identifier, or remove the PayeeParty when the seller is paid directly.
UBL-SR-20 auf Deutsch — was bedeutet der Fehler?
Der KoSIT-Validator lehnt die Rechnung ab: die Kennung des Zahlungsempfängers (BT-60) darf höchstens einmal vorkommen (SEPA-Schema ausgenommen), und der Zahlungsempfänger muss sich vom Verkäufer unterscheiden.
So beheben Sie den Fehler
Behalten Sie genau eine Empfängerkennung — oder entfernen Sie die PayeeParty, wenn der Verkäufer selbst die Zahlung erhält.
Related rules
UBL-SR-19— The payee name (BT-59) is invalid: cac:PayeeParty may carry at most one PartyName/Name, and it must differ…UBL-SR-21— The payee legal registration identifier (BT-61) is invalid: at most one PartyLegalEntity/CompanyID is…UBL-SR-18— The buyer VAT identifier (BT-48) appears more than once — only one PartyTaxScheme with TaxScheme/ID 'VAT'…UBL-SR-22— The tax representative name (BT-62) appears more than once — cac:TaxRepresentativeParty may carry only one…UBL-SR-17— The buyer legal registration identifier (BT-47) appears more than once — only one PartyLegalEntity/CompanyID…UBL-SR-23— The tax representative VAT identifier (BT-63) appears more than once — only one PartyTaxScheme/CompanyID is…
Official sources
- XRechnung specification (KoSIT / xeinkauf.de)
- KoSIT validator on GitHub and the XRechnung validator configuration
Every 422 from the API lists the rule id, the path in your request JSON, a plain-language message and a suggested fix — see the docs overview for the report format.
Or try it live: drop any XRechnung XML on the free validator — same KoSIT-backed report, no account.