Skip to content

BR-CO-03: Value added tax point date (BT-7) and tax point date code (BT-8) are mutually exclusive

Official message

[BR-CO-03] Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.

EN 16931 (CII) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31

[BR-CO-03] Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.

EN 16931 (UBL) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31

[BR-CO-03] Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.

Factur-X / ZUGFeRD EN 16931 · Error · Message language: English · Version: Factur-X 1.08 / ZUGFeRD 2.4
Severity
Error The invoice is invalid and may be rejected by the recipient.
Applies to
EN 16931 (CII), EN 16931 (UBL), Factur-X / ZUGFeRD EN 16931
Affected fields
BT-7, BT-8

What does this mean?

The value added tax point date (BT-7) and the value added tax point date code (BT-8) must not be stated together. The invoice contains both.

Typical causes

Both a specific date and a code for the tax point were entered.
CII: the check covers the whole document. If the date is in one VAT breakdown and the code in another, the rule is triggered as well.

How to fix the error

Use only one of the two: either the date (BT-7) or the code (BT-8) that indicates which date is relevant for the tax point.
Remove the other one everywhere in the invoice.
CII: ram:ApplicableTradeTax/ram:TaxPointDate (BT-7) or ram:ApplicableTradeTax/ram:DueDateTypeCode (BT-8), UBL: cbc:TaxPointDate (BT-7) or cac:InvoicePeriod/cbc:DescriptionCode (BT-8).
Generate and validate the invoice again.

In E-Rechnungsfreund

In the invoice form, expert view ("Experte"), section "Datum & Zeiträume" (dates and periods), fill in only one of the fields "Steuerfälligkeitsdatum (BT-7)" (tax point date) or "Steuerfälligkeitscode (BT-8)" (tax point date code). The entry applies to the whole invoice: the code is written into every VAT breakdown, the date only once (into the first VAT breakdown).
In section "Steueraufstellung (BG-23)" (VAT breakdown) leave the fields "Steuerfall.-Datum (BT-7)" and "Steuerfall.-Code (BT-8)" empty. An invoice has only one tax point date or only one tax point date code; the app does not accept a different date or code per VAT breakdown, or a date in one VAT breakdown and a code in another. If both fields above are filled in, the document contains both.
Validate the invoice again.

Example

Wrong

<ram:ApplicableTradeTax>
  <ram:CalculatedAmount>190.00</ram:CalculatedAmount>
  <ram:TypeCode>VAT</ram:TypeCode>
  <ram:BasisAmount>1000.00</ram:BasisAmount>
  <ram:CategoryCode>S</ram:CategoryCode>
  <ram:TaxPointDate><udt:DateString format="102">20261015</udt:DateString></ram:TaxPointDate>
  <ram:DueDateTypeCode>5</ram:DueDateTypeCode>
  <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>

Correct

<ram:ApplicableTradeTax>
  <ram:CalculatedAmount>190.00</ram:CalculatedAmount>
  <ram:TypeCode>VAT</ram:TypeCode>
  <ram:BasisAmount>1000.00</ram:BasisAmount>
  <ram:CategoryCode>S</ram:CategoryCode>
  <ram:TaxPointDate><udt:DateString format="102">20261015</udt:DateString></ram:TaxPointDate>
  <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
For developers: test expression per syntax

EN 16931 (CII) (CII)

Context: //ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax

((//ram:TaxPointDate) and not(//ram:DueDateTypeCode)) or (not (//ram:TaxPointDate) and (//ram:DueDateTypeCode)) or (not (//ram:TaxPointDate) and not (//ram:DueDateTypeCode))

EN 16931 (UBL) (UBL)

Context: /ubl:Invoice | /cn:CreditNote

(exists(cbc:TaxPointDate) and not(cac:InvoicePeriod/cbc:DescriptionCode)) or (not(cbc:TaxPointDate) and exists(cac:InvoicePeriod/cbc:DescriptionCode)) or (not(cbc:TaxPointDate) and not(cac:InvoicePeriod/cbc:DescriptionCode))

Factur-X / ZUGFeRD EN 16931 (CII)

Technical ID in the source: FX-SCH-A-000051

Context: //ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax

((ram:TaxPointDate) and not (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and not (ram:DueDateTypeCode))

Related validation rules

  • BR-CO-04: Invoiced item VAT category code (BT-151) is missing
  • BR-CO-05: Document level allowance reason code (BT-98) and allowance reason (BT-97) must indicate the same type
  • BR-CO-06: Document level charge reason code (BT-105) and charge reason (BT-104) must indicate the same type
  • BR-CO-07: Invoice line allowance reason code (BT-140) and allowance reason (BT-139) must indicate the same type
  • BR-CO-08: Invoice line charge reason code (BT-145) and charge reason (BT-144) must indicate the same type
  • BR-CO-09: VAT identifier without valid country prefix (BT-31, BT-48, BT-63)

Last updated:
Explanation of the validation rule, not legal or tax advice.