Rule reference

BR-AE-02 Reverse charge requires the buyer to be identified

Any line with VAT category AE means the invoice has to identify both parties for VAT. Our check covers the buyer half: buyer.vatId or buyer.legalRegistrationId.

Business term
BT-48 / BT-47 — Buyer VAT identifier / buyer legal registration identifier
Severity
fatal
Applies to
All profiles

What the rule requires

If any invoice line carries VAT category code AE in BT-151, the invoice must identify the seller for VAT — through BT-31, BT-32 or BT-63and identify the buyer, through BT-48 (buyer VAT identifier) or BT-47 (buyer legal registration identifier).

Our input check covers the buyer half of that: an AE line with neither buyer.vatId nor buyer.legalRegistrationId is fatal.

A common misunderstanding worth clearing up: reverse charge is not a discount, and it is not an exemption. The supply is still taxable. What moves is the obligation to account for the VAT, from you to your customer — and that only works if the customer is identifiable as a taxable person. Which is exactly what BT-48 is for.

An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" 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) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).

BR-AE-02 — EN 16931-1 VAT category rules, via Peppol BIS Billing 3.0

Why it exists

Under reverse charge your buyer self-assesses output VAT and usually reclaims the same amount as input VAT — a net-zero entry they still have to file. Their identifier on your invoice is your evidence that shifting the liability was legitimate in the first place. If it is missing, or if it was invalid on the date of supply, a tax authority can treat the supply as domestic and taxable. And here is the part that should get your attention: that assessment lands on you, the supplier, not on your customer. Which is why the library’s fix line tells you to check VIES and keep the response, rather than just fill the field in.

What the library returns

The exact object in result.errors when this rule fires. Generated by running @attestwire/en16931, not transcribed:

TeachingError
{
  "rule": "BR-AE-02",
  "field": [
    "BT-48",
    "BT-47"
  ],
  "severity": "fatal",
  "message": "A line uses VAT category AE (reverse charge), so the invoice must contain the buyer VAT identifier (BT-48) and/or the buyer legal registration identifier (BT-47). Under reverse charge the buyer accounts for the VAT themselves, and the tax authority matches your zero-rated output against their self-assessed input using that identifier.",
  "fix": "Set buyer.vatId to your client's VAT number — validate it against VIES on the invoice date and keep the response. If the number is invalid at the time of supply, the liability stays with you.",
  "example": "\"buyer\": { \"vatId\": \"ATU12345678\" }",
  "docsUrl": "https://attestwire.com/rules/BR-AE-02"
}

Failing and passing

Fails — AE line, buyer not identified
validateInput({
  // ...
  buyer: {
    name: "Client GmbH",
    // neither vatId nor legalRegistrationId   <- BR-AE-02
    address: { city: "Wien", postalCode: "1010", countryCode: "AT" },
  },
  lines: [{ id: "1", description: "API subscription", quantity: 1,
            unitCode: "C62", unitPrice: 490,
            vatCategory: "AE", vatRate: 0 }],
});
// -> { valid: false, errors: [ { rule: "BR-AE-02", ... } ] }
Passes
validateInput({
  // ...
  buyer: {
    name: "Client GmbH",
    vatId: "ATU12345678",       // verified against VIES, response retained
    address: { city: "Wien", postalCode: "1010", countryCode: "AT" },
  },
  lines: [{ /* ... */ vatCategory: "AE", vatRate: 0 }],
});
// -> { valid: true, errors: [] }

The fix, in plain English

Make the buyer VAT ID a hard requirement on any customer you are willing to invoice under reverse charge. Validate it against VIES when you save it, and store both the timestamp and the consultation number VIES gives back — that number is your evidence. Re-check it periodically too, because registrations get cancelled and it is the status on the date of supply that counts. And if a customer genuinely has no VAT ID and no legal registration identifier, they are not eligible for reverse charge at all: charge domestic VAT rather than leaving the field empty and hoping.

How our check differs

We enforce only the buyer half under this rule ID, so here is where to look for the rest. The seller half — that an AE invoice must also carry BT-31, BT-32 or BT-63 — currently comes back as BR-CO-26 (and, on XRechnung, BR-DE-16). So an invoice missing the seller identifier does fail, just under a different ID than a KoSIT or Peppol report would give you. One more gap: the official rule also covers document-level allowances and charges (BG-20/BG-21) marked AE, and our input model has no document-level allowances yet, so we look at lines only.

Arrived from a stack trace? The docsUrl on every error links straight here. Something wrong on this page — tell us.