HomeError code lexicon › BR-38
BR-38 Field BT-104 EN 16931 core rules (BR)

Fix BR-38: Reason for the charge (BT-104/BT-105) missing

[BR-38]-Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason

BR-38 in your own invoice? Upload the file and find every error in seconds.

What does BR-38 mean?

Every document level charge must be justified, as free text or as a reason code. That keeps the surcharge transparent.

Common causes of BR-38

How to fix BR-38

  1. Find the faulty spot in the XML. Open the XML of the invoice and go to field BT-104 along this XPath://ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason
  2. Apply the fix. Every document level charge (BG-21) needs a reason: either the free text ram:Reason (BT-104) or the reason code ram:ReasonCode (BT-105) per UNTDID 7161. Add at least one of the two elements to the affected ram:SpecifiedTradeAllowanceCharge with ChargeIndicator=true.
  3. Validate again. Save the file and validate it again to check that BR-38 is no longer reported.
Concrete fix

Every document level charge (BG-21) needs a reason: either the free text ram:Reason (BT-104) or the reason code ram:ReasonCode (BT-105) per UNTDID 7161. Add at least one of the two elements to the affected ram:SpecifiedTradeAllowanceCharge with ChargeIndicator=true.

XPath//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason

Before / after: the XML example

This is the spot in question before and after the fix (Cross Industry Invoice, ZUGFeRD/Factur-X).

Wrong
<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator><udt:Indicator>true</udt:Indicator></ram:ChargeIndicator>
  <ram:ActualAmount>15.00</ram:ActualAmount>
</ram:SpecifiedTradeAllowanceCharge>
Correct
<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator><udt:Indicator>true</udt:Indicator></ram:ChargeIndicator>
  <ram:ActualAmount>15.00</ram:ActualAmount>
  <ram:Reason>Versandpauschale</ram:Reason>
</ram:SpecifiedTradeAllowanceCharge>

Frequent questions about BR-38

Is the free text enough, or do I need the code?
One of the two is enough. You can give ram:Reason (BT-104) as plain text or ram:ReasonCode (BT-105) from the list UNTDID 7161. Both together are allowed, but not required.
Where do I find suitable reason codes for BT-105?
In the code list UNTDID 7161, for example 'FC' for freight cost or 'ABK' for miscellaneous charges. If no code fits, simply use the free text BT-104.

Related error codes

Check BR-38 automatically

Instead of digging through the XML by hand you can validate your ZUGFeRD or XRechnung file online – upload the PDF or the XML and you get every error with rule ID, affected field, fix and XPath, as a readable report or as JSON through the API.

Find every error automatically instead of searching by hand

Upload your ZUGFeRD, Factur-X or XRechnung file – you get every violation back with rule ID, field, fix and XPath.

Validate online for free
Check invoice