Item net price required

Error BR-FXEXT-BR-26 Factur-X

Each Invoice line (BG-25) shall contain the Item net price (BT-146) if the "Subtype of invoice line item" (BT-X-8) has the value "Normal line item (standard case)" (DETAIL) or is not specified.

Mandatory rule: As long as it is violated, the invoice is invalid and will be rejected by validators.
What is wrong

ChargeAmount, which contains the item's net price, is missing from SpecifiedLineTradeAgreement/NetPriceProductTradePrice. This applies when LineStatusReasonCode is not specified or is DETAIL.

What the rule means

The item's net price states the price used before calculating the invoice line net amount. It is required for a normal invoice line.

Affected fields BG-25 BT-146 BT-X-8
Please add the item's net price

The item's net price is missing from this invoice line. Add the price for the item.

What to do
  1. Check the status in AssociatedDocumentLineDocument.
  2. For a line with no status code or with DETAIL, add the net price using TradeLineItem.NetUnitPrice.
  3. Regenerate the invoice and validate it again.
What it looks like
✗ Triggers the message
<ram:SpecifiedLineTradeAgreement>
  <ram:NetPriceProductTradePrice/>
</ram:SpecifiedLineTradeAgreement>
✓ Correct
<ram:SpecifiedLineTradeAgreement>
  <ram:NetPriceProductTradePrice>
    <ram:ChargeAmount>25.00</ram:ChargeAmount>
  </ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
Check in FactoorSharp
  • AssociatedDocument.LineStatusReasonCode (BT-X-8)
  • LineStatusReasonCodes (BT-X-8)
  • TradeLineItem.NetUnitPrice (BT-146)
Technical details

The test requires SpecifiedLineTradeAgreement/NetPriceProductTradePrice/ChargeAmount for lines without a status code and for lines with DETAIL.

Where the rule applies

The rule applies to an IncludedSupplyChainTradeLineItem invoice line whose AssociatedDocumentLineDocument has no LineStatusReasonCode or has the value DETAIL.

Context (rule/@context)
//ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument[ not(ram:LineStatusReasonCode) or ram:LineStatusReasonCode = 'DETAIL' ]
Test expression (assert/@test)
(../ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount)