# BR-62: Add the schemeID attribute to the seller electronic address

When the seller Party has a cbc:EndpointID, the element must carry a schemeID attribute saying which scheme the address belongs to.

- Layer: EN 16931
- Severity: fatal (the document is invalid)
- Topics: Parties and addresses
- Official definition: https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-62/
- Explanation last updated: 2026-09-20

## The short answer

`BR-62` fails when `cac:AccountingSupplierParty/cac:Party/cbc:EndpointID` is written without a `schemeID` attribute. The identifier alone is ambiguous: `7300010000001` could be a GLN, a national organisation number or something else. Add `schemeID` with the code of the scheme the seller address was issued under.

## What the rule checks

The rule applies to the seller `cbc:EndpointID` and tests one thing: that the `schemeID` attribute exists on it. If the seller has no `cbc:EndpointID` at all the rule has nothing to run on and does not report; Peppol reports the missing element as `PEPPOL-EN16931-R020`.

The attribute value is not read. `schemeID=""` satisfies `BR-62`, and the empty code is then rejected by `BR-CL-25` on the EN 16931 layer and `PEPPOL-EN16931-CL008` on the Peppol layer.

The element content is not read either. An empty `cbc:EndpointID` with no attribute reports `BR-62` together with `PEPPOL-EN16931-R008`, the Peppol rule against empty elements.

| Term | Meaning | UBL element |
|---|---|---|
| BT-34 | Seller electronic address | `cac:AccountingSupplierParty/cac:Party/cbc:EndpointID` |
| BT-34 | Seller electronic address: its scheme identifier attribute | `cac:AccountingSupplierParty/cac:Party/cbc:EndpointID/@schemeID` |

## How an integration ends up here

Possible causes, from the shape of the rule rather than from measured usage:

- The source system stores the electronic address as one string and the mapping writes it as element content without an attribute.
- Scheme and identifier are stored together, for example `0088:7300010000001`, and the split that should feed `schemeID` is missing or failed for this seller.
- The serialiser omits attributes whose value is null, and the scheme column is empty for this seller.
- The code is written to a different attribute, such as `schemeAgencyID`. The rule looks only at `schemeID`, and the stray attribute adds the warning `UBL-DT-27`.

## How to fix it

1. Establish which scheme the seller address belongs to. It is a property of the identifier, decided when the seller obtained it: `0088` for a GLN, a national code for an organisation or VAT number. Do not pick a code because it validates.
2. Hold the scheme code as its own field next to the identifier in the seller configuration.
3. Write it to the `schemeID` attribute of `cac:AccountingSupplierParty/cac:Party/cbc:EndpointID`, spelt exactly that way.
4. Check the code against the EAS code list before sending; `BR-CL-25` tests it as soon as the attribute exists.

## 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 EndpointID has a value and no schemeID

```xml
<cac:AccountingSupplierParty>
  <cac:Party>
    <cbc:EndpointID>7300010000001</cbc:EndpointID>
    <!-- postal address, tax scheme and legal entity omitted from this fragment -->
  </cac:Party>
</cac:AccountingSupplierParty>
```

Fragment of the corrected invoice: schemeID names the scheme of the identifier

```xml
<cac:AccountingSupplierParty>
  <cac:Party>
    <cbc:EndpointID schemeID="0088">7300010000001</cbc:EndpointID>
    <!-- postal address, tax scheme and legal entity omitted from this fragment -->
  </cac:Party>
</cac:AccountingSupplierParty>
```

The corrected file has `schemeID="0088"` on the seller `cbc:EndpointID`; the failing file has the same element and value with no attribute. The failing document reports only `BR-62`. Its Peppol layer passes: with no `schemeID` there is no scheme code for the Peppol code list rule to reject.

### What the validator reported

- The failing invoice reports **BR-62**. The corrected document passes every layer with no findings.
  - [Download the failing XML](https://ironfang.uk/finance/rule-examples/BR-62-invalid.xml)
  - [Download the corrected XML](https://ironfang.uk/finance/rule-examples/invoice-minimal.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 UBL `Invoice` and `CreditNote`; a credit note with the attribute removed reports the same single finding.
- Only the seller party is covered. The buyer `cbc:EndpointID` has its own rule, `BR-63`, and a document missing both attributes reports both.
- This is an EN 16931 rule, so it is reported on the EN 16931 layer even though, under Peppol, the element it examines is mandatory.

## Related rules

- [BR-63 is the same attribute check for the buyer electronic address](https://ironfang.uk/docs/finance/rules/BR-63.md)
- [BR-CL-25 checks that the schemeID value is a code from the EAS list](https://ironfang.uk/docs/finance/rules/BR-CL-25.md)
- [PEPPOL-EN16931-R020 reports a seller Party with no EndpointID at all](https://ironfang.uk/docs/finance/rules/PEPPOL-EN16931-R020.md)

## 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-20.

[The official definition of BR-62](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-62/) 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.

## Links

- [This rule as a web page](https://ironfang.uk/docs/finance/rules/BR-62)
- [Free Peppol invoice validator](https://ironfang.uk/tools/peppol-validator)
- [Rule index](https://ironfang.uk/docs/finance/rules.md)
- [Ironfang Finance API docs](https://ironfang.uk/docs/finance)
- The same rule is available to MCP clients as the tool `finance.rule.get` on https://mcp.ironfang.uk/mcp
