ErrorEN 16931Manual only

BR-G-01

An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Export outside the EU" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Export outside the EU".

What does this rule mean?

At least one line, allowance or charge has VAT category "G" (export outside the EU), but the VAT breakdown (BG-23) has not exactly one entry with category "G".

Every VAT category used must appear in the breakdown exactly once — that is where the taxed amount and rate are stated.

BG-20
Document level allowances (group)
BG-21
Document level charges (group)
BG-23
VAT breakdown (group)
BG-25
Invoice line (group)
BT-95
Document level allowance VAT category code
BT-102
Document level charge VAT category code
BT-118
VAT category code (UNCL 5305)
BT-151
Invoiced item VAT category code (UNCL 5305)
Official rule message (standard)

An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Export outside the EU" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Export outside the EU".

Where the rule applies

Syntax: CII · UBL

The same rule, expressed twice: UBL and CII name the same fields with different paths. Running a CII file against the UBL rules is why you get errors that mean nothing.

UBL

  • /ubl:Invoice | /cn:CreditNote

CII

  • /rsm:CrossIndustryInvoice

Technical test

The rule passes when this Schematron expression holds true:

(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='G'])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='G'])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode='G'])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='G'])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='G']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='G'])))

How to fix it

Touches amounts, VAT or IBAN. We never change these automatically — correct them in your source data.

Add exactly one breakdown with category code "G" — or correct the line's category.

Correct the affected entry in your XML, then re-check the invoice. Validation runs locally in your browser — your file never leaves your machine.

Check an e-invoice here

Drop an XML or ZUGFeRD PDF file here. Validation runs locally in your browser against EN 16931 — your file never leaves your machine.

100% local — no upload, no account.

Related rules

← Back to the error library