errorbusinessEN 16931

BR-46:Each VAT breakdown (BG-23) shall have a VAT category tax amount (BT-117).

Fix: Add the required `cac:TaxSubtotal` element to your Invoice. Ensure it contains a valid value per EN 16931 (BR-46).

Each VAT breakdown (BG-23) shall have a VAT category tax amount (BT-117).. Check the `cac:TaxSubtotal` element in your invoice XML.

Severity
Fatal
Rule set
EN 16931
Country
All EU
Fix type
BLOCKED

Engine Classification

Financial or legal field · Modification blocked by policy

Reason: Unit codes affect pricing calculations and inventory systems. Must match your product catalog and trading partner agreements.

What is BR-46?

BR-46 is a fatal validation rule defined in the EN 16931 specification. It validates the @unitCode element under InvoiceLine > InvoicedQuantity in the UBL invoice XML.

When this rule fires, the invoice is rejected by Peppol access points and never reaches the buyer.

Target path: XPath: /Invoice/cac:InvoiceLine/cbc:InvoicedQuantity/@unitCode

This error requires manual correction — financial fields are protected by policy.

Why This Error Matters

Invoice rejected. The actual tax amount is required for tax reporting and payment.

BR-46 is a hard failure — the invoice must be corrected and re-sent before it can reach the recipient.

Validator Behavior

  • ·Causes invoice rejection
  • ·Error returned: BR-46
  • ·Specification: EN 16931

How to Fix It

1.

Use standard codes

C62=unit, EA=each, H87=piece

2.

Other common codes

KGM=kilogram, MTR=meter, LTR=liter, MTK=square meter

3.

Service codes

HUR=hour, DAY=day, MON=month, ANN=year

Before / After

Failing XML
<cac:TaxTotal>
  <!-- cac:TaxSubtotal is missing -->
</cac:TaxTotal>
Corrected XML
<cac:TaxTotal>
  <cac:TaxSubtotal>valid-value</cac:TaxSubtotal>
</cac:TaxTotal>

Technical Reference

XPathXPath: /Invoice/cac:InvoiceLine/cbc:InvoicedQuantity/@unitCode
SpecEN 16931
StrategyBLOCKED: This is a tax amount. We never auto-calculate taxes because tax calculation involves country-specific rounding rules and has legal implications. Source system must calculate.

Code Example

<cbc:InvoicedQuantity unitCode="HUR">40</cbc:InvoicedQuantity>
<!-- 40 hours of service -->

Common Causes

  • ·VAT breakdown missing tax amount (TaxAmount)
  • ·Tax subtotal created without calculated tax value
  • ·TaxSubtotal/TaxAmount not mapped in export
  • ·VAT calculation failed to produce tax amount
  • ·Zero-rate category exported without zero tax amount

Seeing this in production? The API handles BR-46 automatically. See the fix response →

Commonly Seen In

All invoicing software

Frequently Asked Questions

InvoicedQuantity unitCode must be a valid UN/ECE Recommendation 20 code.

Add the required `cac:TaxSubtotal` element to your Invoice. Ensure it contains a valid value per EN 16931 (BR-46). This error involves a protected field — Invoice Navigator flags it in your pipeline so your team can correct it at the source.

Yes, BR-46 is a critical error that will cause invoice rejection. It must be fixed before submission to ensure your invoice is accepted by the recipient's system.

BR-46 involves a financial or legal field that cannot be auto-modified by policy. Invoice Navigator detects and flags this error immediately, but the correction must be made manually in your ERP or invoicing software.

BR-46 is commonly seen in exports from All invoicing software. These software packages sometimes generate invoices that need adjustment to meet full compliance standards.

Related Errors

Related Content

Last updated: 3 March 2026

Share this guide:

Validate your invoice

Drop your XML here to check for BR-46

Detect BR-46 before submission

This error involves a financial field that can't be auto-modified. We'll flag it with a clear diagnosis so you can fix it at the source.