Back to the error catalogue
PEPPOL-EN16931-R120BT-131
blocked

An invoice line net amount does not match its own calculation

`Invoice line net amount` (BT-131) must equal quantity × (net price ÷ base quantity), plus the line's charges and minus its allowances.

A financial field: the expected value is computed and offered, never written into the document — the correction is the issuer's to make. Test your invoice to find out whether it is affected.

The message your validator prints

Copied verbatim from the sealed artefact: this is the exact sentence the check prints when this rule fails.

Invoice line net amount MUST equal (Invoiced quantity * (Item net price/item price base quantity) + Sum of invoice line charge amount - sum of invoice line allowance amount

Quoted from schematron-xrechnung 3.0.2, licensed under Apache-2.0.

Common searches around this code

These phrases mirror what an integrator searches for: code, syntax, rule, business field and correction.

PEPPOL-EN16931-R120 An invoice line net amount does not match its own calculationPEPPOL-EN16931-R120 XRechnung Schematron package (KoSIT)PEPPOL-EN16931-R120 BT-131Invoice line net amount MUST equal (Invoiced quantity * (Item net price/item price base quantity) + Sum of invoice line charge amount - sum of invoice line allowance amountPEPPOL-EN16931-R120 correction

Test your file with this error in mind

Upload the invoice involved: the report will say whether this code appears, where it appears in the document, and whether Factlint can only report it or also fix it.

To automate this check in an ERP flow, call the validation API and link every returned code to its public page.

Why this error happens

This is the line-by-line equivalent of `BR-CO-15`, and the same cause recurs: rounding applied to the unit price instead of the line total. The check tolerates two cents (fifty forints in HUF), which absorbs honest rounding and leaves genuine gaps visible.

How to fix it

Fix the calculation in the system that produced the invoice. Factlint computes the expected value and returns it in `suggested_value`, but never writes an amount.

Severity returned by the rule set

The package classifies it as `warning` where the equivalent header check is blocking. An in-scope warning still rules out a “compliant” verdict — at best the invoice comes out as `needs_input`.

Reason it is blocked:

financial_field_policy

XML correction example

BEFORE (invalid)
<ram:BilledQuantity>10</ram:BilledQuantity> × 100.00 → total ligne 900.00
AFTER (compliant)
<ram:LineTotalAmount>1000.00</ram:LineTotalAmount>