Cette page n’est pas encore disponible en français – voici la version anglaise.
Règles de calcul

BR-CO-15: Total with VAT (BT-112) ≠ net total + VAT

The gross total must be exactly the net total plus the total VAT amount.

Fiche

Règle
BR-CO-15
Gravité
Erreur – la facture est invalide
Référentiel
EN 16931 – s’applique à XRechnung et à Factur-X/ZUGFeRD
Champs concernés
BT-112, BT-109, BT-110
Syntaxe
CII & UBL

Vérifier votre facture

Déposez un PDF ou un XML – gratuit, sans inscription, selon les référentiels officiels.

Ouvrir le validateur en ligne

Libellé officiel

[BR-CO-15] Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).

Source : Schematron officiel de l’EN 16931 (CEN), également appliqué à XRechnung et à Factur-X/ZUGFeRD.

What the rule requires

The invoice total amount with VAT (BT-112) must equal the invoice total amount without VAT (BT-109) plus the invoice total VAT amount (BT-110) exactly. The rule is part of EN 16931 and applies to XRechnung, ZUGFeRD and Factur-X.

Amounts already paid (BT-113) and rounding amounts (BT-114) do not change BT-112; they only affect the amount due for payment (BT-115).

Common causes

  • Rounding per line: the gross total is added up from rounded gross line amounts instead of net plus VAT. With many lines it is then off by a few cents.
  • A prepayment was subtracted from BT-112 instead of being stated in BT-113.
  • BT-110 differs from the sum of the VAT amounts in the breakdown (BT-117).
  • Foreign currency: the VAT amount in accounting currency (BT-111) was included in the sum by mistake.

What it looks like in XML

✗ CII – wrong
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
    <ram:LineTotalAmount>300.00</ram:LineTotalAmount>
    <ram:TaxBasisTotalAmount>300.00</ram:TaxBasisTotalAmount>
    <ram:TaxTotalAmount currencyID="EUR">57.00</ram:TaxTotalAmount>
    <ram:GrandTotalAmount>357.01</ram:GrandTotalAmount>   <!-- 300.00 + 57.00 = 357.00 -->
    <ram:DuePayableAmount>357.01</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
✓ CII – correct
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
    <ram:LineTotalAmount>300.00</ram:LineTotalAmount>
    <ram:TaxBasisTotalAmount>300.00</ram:TaxBasisTotalAmount>
    <ram:TaxTotalAmount currencyID="EUR">57.00</ram:TaxTotalAmount>
    <ram:GrandTotalAmount>357.00</ram:GrandTotalAmount>
    <ram:DuePayableAmount>357.00</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>

In UBL, BT-112 is cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount.

Fix in C#

Compute the totals one after another from the values that actually appear in the invoice – never from your own intermediate values. With the Facturexa Creator:

C#
invoice.TaxBasisAmount = invoice.LineTotalAmount
    - (invoice.AllowanceTotalAmount ?? 0) + (invoice.ChargeTotalAmount ?? 0); // BT-109
invoice.TaxTotalAmount = invoice.Taxes.Sum(t => t.TaxAmount ?? 0);         // BT-110
invoice.GrandTotalAmount = invoice.TaxBasisAmount + invoice.TaxTotalAmount; // BT-112
invoice.DuePayableAmount = invoice.GrandTotalAmount;                        // BT-115 (no prepayment)

Règles associées

Toutes les règles expliquées