EN 16931 rules › BR-AE-04
BR-AE-04 — An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is…
| Rule id | BR-AE-04 |
|---|---|
| Rule set | EN 16931 itself, not a national or network addition |
| Severity | fatal in CII and UBL — a validator enforcing this rule set rejects the invoice |
| Applies to | the CII and UBL syntaxes |
| Checked by | the validator on this site and invoicekit.go v0.2.11, the library behind it |
The rule as published
An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) 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).
fatal in CII and UBL — a validator enforcing this rule set rejects the invoice.
What runs for it
Straight from the artefacts the engine embeds: the node the assertion selects and the test it applies there. A failing invoice is reported with the message above.
| Syntax | Severity | Artefact phase | Applied to | Fails when |
|---|---|---|---|---|
| CII | fatal | EN16931-model-phase | //ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true()]/ram:CategoryTradeTax[ram:CategoryCode = 'AE'][upper-case(ram:TypeCode) = 'VAT'] | (//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = ('VA', 'FC')] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA']) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA'] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID) |
| UBL | fatal | EN16931model_phase | /ubl:Invoice | /cn:CreditNote | (exists(//cac:AllowanceCharge[cbc:ChargeIndicator=true()]/cac:TaxCategory[normalize-space(cbc:ID) = 'AE'][cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']) and (exists(//cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme/cbc:CompanyID) or exists(//cac:TaxRepresentativeParty/cac:PartyTaxScheme[cac:TaxScheme/(normalize-space(upper-case(cbc:ID)) = 'VAT')]/cbc:CompanyID)) and (exists(//cac:AccountingCustomerParty/cac:Party/cac:PartyTaxScheme[cac:TaxScheme/(normalize-space(upper-case(cbc:ID)) = 'VAT')]/cbc:CompanyID) or exists(//cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID))) or not(exists(//cac:AllowanceCharge[cbc:ChargeIndicator=true()]/cac:TaxCategory[normalize-space(cbc:ID) = 'AE'][cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT'])) |
Data elements it names
- BG-21 Document level charge (cited by 33 rules)
- BT-102 Document level charge VAT category code (cited by 40 rules)
- BT-31 Seller VAT Identifier (cited by 29 rules)
- BT-32 Seller tax registration identifier (cited by 18 rules)
- BT-63 Seller tax representative VAT identifier (cited by 29 rules)
- BT-48 Buyer VAT identifier (cited by 10 rules)
- BT-47 Buyer legal registration identifier (cited by 3 rules)
See also
- Every EN 16931 rule id — the same list as a filterable table, with the assertions as CSV and JSON.
- What XRechnung and Peppol BIS add — rule sets that run these ids plus their own.
- The data elements — every BT and BG with the rules that name it.