The short answer
UBL-SR-53 fails when a cac:PartyTaxScheme is missing either its cbc:CompanyID or its cac:TaxScheme/cbc:ID. In the recorded example the seller block names the VAT scheme but carries no VAT number. Put the party's identifier for that scheme in cbc:CompanyID, or, if the party has no such registration, remove the whole cac:PartyTaxScheme.
Removing the block is right only when the registration genuinely does not exist. For the seller, the VAT category rules then decide whether the invoice can go without a VAT identifier; with a standard rated line it cannot, and BR-S-02 says so.
What the rule checks
The rule runs on each cac:PartyTaxScheme in the document, for the seller, the buyer and the tax representative alike, and the finding is located at that block. When tried, a buyer block holding only the VAT scheme reported UBL-SR-53 alone.
Both children must exist, whatever the scheme. The tax scheme value is not examined, so a block for a non-VAT tax registration needs its cbc:CompanyID too.
The number is not read, only looked for. When tried, an empty cbc:CompanyID passed this rule and was reported by PEPPOL-EN16931-R008 instead.
The two halves are enforced at different layers. The UBL schema requires cac:TaxScheme itself, so a block without it failed the XSD layer when tried; a cac:TaxScheme with cbc:Name in place of cbc:ID reached this rule and was reported, with the warning UBL-CR-174 for the name.
| Term | Meaning | UBL element |
|---|---|---|
| BT-31 | Seller VAT identifier | cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID |
| BT-48 | Buyer VAT identifier | cac:AccountingCustomerParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID |
| BT-63 | Seller tax representative VAT identifier | cac:TaxRepresentativeParty/cac:PartyTaxScheme/cbc:CompanyID |
| - | Tax scheme identifier of any party tax scheme | cac:PartyTaxScheme/cac:TaxScheme/cbc:ID |
How an integration ends up here
Possible causes, from the shape of the rule rather than from measured usage:
- The serialiser writes the tax scheme block for every party and fills
cbc:CompanyIDonly when a VAT number is on record, so parties without one get a block holding the scheme alone. - The VAT number is held in a field the mapping does not read for this party type.
- A null VAT number is dropped as an empty element, but its parent block is still written.
- A block meant for a non-VAT tax registration has its scheme filled and its number left out.
How to fix it
- Use the finding location to see which party the block belongs to.
- If the party is registered under that scheme, take the identifier from the party record and write it as
cbc:CompanyID, beforecac:TaxScheme. For VAT, include the country prefix, whichBR-CO-09checks. - If the party has no registration under that scheme, write no
cac:PartyTaxSchemefor it. Do not put another number, such as a company registration number, in its place. - For the seller, re-check the VAT category rules after the change: a standard rated line needs a seller VAT or tax registration identifier, or a tax representative VAT identifier, and
BR-S-02reports its absence.
Validate your corrected invoice
Before and after
These are fragments, not complete documents. The complete synthetic documents they come from are linked below.
Fragment of the failing invoice: the seller tax scheme names VAT and gives no number
<cac:AccountingSupplierParty>
<cac:Party>
<!-- endpoint and postal address omitted from this fragment -->
<cac:PartyTaxScheme>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<!-- legal entity omitted from this fragment -->
</cac:Party>
</cac:AccountingSupplierParty>Fragment of the corrected invoice: the seller VAT number comes before the tax scheme
<cac:AccountingSupplierParty>
<cac:Party>
<!-- endpoint and postal address omitted from this fragment -->
<cac:PartyTaxScheme>
<cbc:CompanyID>GB123456789</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<!-- legal entity omitted from this fragment -->
</cac:Party>
</cac:AccountingSupplierParty>The corrected invoice has cbc:CompanyID GB123456789 at the top of the seller cac:PartyTaxScheme; the failing one keeps the VAT scheme and drops the number. The failing document also reports BR-S-02: its line is standard rated, which requires a seller VAT identifier, and that identifier is now missing. When tried, removing the entire seller cac:PartyTaxScheme instead cleared UBL-SR-53 and left BR-S-02, so here only restoring the number fixes both.
What the validator reported
- The failing invoice reports BR-S-02 and UBL-SR-53. The corrected document passes every layer with no findings.Download the failing XMLDownload the corrected XML
Recorded on phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, the engine behind the free validator, using synthetic data. A recorded result is regression evidence for these documents; it is not a certification.
Where it applies
- Applies to credit notes as well. When tried, the same edit to a credit note reported the same two rules.
- Reported on the EN 16931 layer, which carries the UBL syntax rules of the EN 16931 binding.
- Which VAT category rule appears alongside depends on the lines. When tried on an exempt invoice, the same edit brought
BR-E-02in place ofBR-S-02. - On the tax representative, a block without its number is also reported by
BR-56.
Related rules
- BR-S-02 is reported with this rule when the missing number is the seller VAT identifier on a standard rated invoice
- BR-56 requires the tax representative VAT identifier, and fires with this rule when only the number is missing
- BR-CO-09 checks the country prefix of the CompanyID once it is present
- PEPPOL-EN16931-R008 reports a CompanyID that is present but empty, which this rule accepts
- Browse every rule in the reference
- Background: Understanding EN 16931 validation errors
Scope and source
Written for Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, as applied to UBL 2.1 Invoice and CreditNote documents. Other profiles, syntaxes and releases can define this identifier differently. Guidance version 2026-09-24.1: source checked 2026-09-24, explanation last updated 2026-09-24.
The official definition of UBL-SR-53 carries the normative wording and test. This page is our explanation of it, not a copy.
Guidance does not change the engine verdict. Fixing this finding does not mean the document passes every layer, and validation does not certify legal or tax compliance or transmit a document over Peppol.
