Attestwire › Rule reference › BR-S-02
BR-S-02 Charging standard-rate VAT requires a seller VAT identifier
noun · EN 16931 · fatal · BT-31 / BT-32
standard-rate VAT charged by someone with no VAT number.
Your invoice was refused because it charges VAT at the standard rate but does not say who is registered to collect that VAT. An invoice that charges tax has to carry the seller’s VAT number, or a national tax number, or a tax representative’s VAT number, and adding your VAT number is the fix. In the standard those are fields BT-31, BT-32 and BT-63, and BR-S-02 is the rule that asks for one of them whenever a line is standard-rated.
- Business term
BT-31 / BT-32— Seller VAT identifier- Severity
fatal- Applies to
All profiles
The fix
Put your VAT number, with its country prefix, in the seller VAT identifier: seller.vatId: "DE123456789", one string. If you are not VAT-registered and are charging standard-rate VAT anyway, stop and check that: in most of the EU those two facts cannot both be true, and the real fix is either a registration or a different VAT category.
A national tax number in seller.taxRegistrationId satisfies the rule but does not make an unregistered supplier entitled to charge VAT; that part is your jurisdiction’s question.
What the rule requires
If any invoice line is standard-rated, code S in BT-151, which is most lines on most invoices, the document must contain the seller VAT identifier (BT-31), the seller tax registration identifier (BT-32), or a seller tax representative VAT identifier (BT-63).
In this model that is seller.vatId, seller.taxRegistrationId, or a taxRepresentative block. Any one of the three satisfies it.
The rule is about invoice lines. A document-level allowance or charge marked S is asked the same question by two sibling rules, BR-S-03 and BR-S-04, and you will get those ids instead. That split is in the standard.
An Invoice that contains an Invoice line where the Invoiced item VAT category code (BT-151) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).
Failing and passing
validateInput({
// ...
seller: {
name: "Acme GmbH",
// no vatId, no taxRegistrationId, no taxRepresentative <- BR-S-02
address: { city: "Berlin", postalCode: "10115", countryCode: "DE" },
},
lines: [{ id: "1", description: "Consulting", quantity: 10,
unitCode: "HUR", unitPrice: 150,
vatCategory: "S", vatRate: 19 }],
});
// -> { valid: false, errors: [ { rule: "BR-S-02", ... }, { rule: "BR-CO-26", ... } ] }validateInput({
// ...
seller: {
name: "Acme GmbH",
vatId: "DE123456789", // BT-31
address: { city: "Berlin", postalCode: "10115", countryCode: "DE" },
},
lines: [{ /* ... */ vatCategory: "S", vatRate: 19 }],
});
// -> { valid: true, errors: [] }Why it exists
Standard-rated means you are charging VAT and keeping it until you remit it. The identifier ties that collected tax to a registered taxable person. Without it, the buyer holds a document claiming VAT with nobody accountable for it, and the buyer’s own input-tax deduction is at risk.
That last part is why this rule gets enforced hard in practice: your customer’s finance team is protecting their own deduction, and a missing VAT ID is the fastest way for an invoice to come back.
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:
{
"rule": "BR-S-02",
"field": [
"BT-31",
"BT-32"
],
"severity": "fatal",
"message": "A line uses VAT category S (Standard rated), so the invoice must carry the seller VAT identifier (BT-31), the seller tax registration identifier (BT-32), or a seller tax representative (BG-11). You are charging VAT, so the tax authority must be able to trace the VAT you collected back to a registered taxable person.",
"fix": "Set seller.vatId (e.g. \"DE123456789\"). If you are not VAT-registered but have a national tax number, set seller.taxRegistrationId instead.",
"example": "\"seller\": { \"vatId\": \"DE123456789\" }",
"docsUrl": "https://attestwire.com/rules/BR-S-02"
}How our check differs
You will almost always see BR-CO-26 reported alongside this one, because a seller with no VAT identifier usually has no identifier at all. They are different rules with different fixes: BR-CO-26 accepts a commercial-register number, BR-S-02 does not. Fixing BR-S-02 fixes both; fixing BR-CO-26 alone leaves this one standing.
Our check reads invoice lines only, which matches the rule as published.
If your S category appears solely on a document-level allowance or charge, the finding arrives as BR-S-03 or BR-S-04 instead. If you are automating a response, allow for those ids as well.
See also: BR-CO-26 — the weaker seller-identification rule that fires beside it; BR-CO-09 — the VAT identifier needs its country prefix; BR-AE-02 — the reverse-charge version of the same question.