Account
Nederlands

BR-CO-16: Te betalen bedrag (BT-115) klopt niet

EN 16931-kernregel · Fout · UBL, CII

StandaardEN 16931-1 (Europees semantisch model voor e-facturen)ErnstFout: de factuur wordt geweigerdSyntaxUBL, CIIBedrijfstermen
  • BT-112 Invoice total amount with VAT
  • BT-113 Paid amount
  • BT-114 Rounding amount
  • BT-115 Amount due for payment
Geldt voorElke EN 16931-factuur: Peppol BIS Billing 3.0, NLCIUS, XRechnung, ZUGFeRD 2.x / Factur-X (profielen EN 16931, EXTENDED, XRECHNUNG) en andere nationale CIUS.

Officiële regeltekst

[BR-CO-16] Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).

De normatieve tekst is Engels en wordt ongewijzigd geciteerd.

Waarom deze fout optreedt

Het te betalen bedrag (BT-115) moet gelijk zijn aan het totaal inclusief btw (BT-112) min het reeds betaalde bedrag (BT-113) plus het afrondingsbedrag (BT-114). De regel controleert cac:LegalMonetaryTotal/cbc:PayableAmount tegen cbc:TaxInclusiveAmount, cbc:PrepaidAmount en cbc:PayableRoundingAmount (UBL), of ram:DuePayableAmount tegen ram:GrandTotalAmount, ram:TotalPrepaidAmount en ram:RoundingAmount (CII). Meestal faalt hij wanneer software na een deelbetaling het openstaande saldo schrijft zonder ook het vooruitbetaalde bedrag op te nemen, of het verkeerde teken voor het afrondingsbedrag gebruikt.

Zo lost u het op

Formule: BT-115 = BT-112 - BT-113 + BT-114, afgerond op 2 decimalen; een ontbrekend BT-113 of BT-114 telt als 0. Is er een vooruitbetaling ontvangen, schrijf die dan als positieve waarde in cbc:PrepaidAmount / ram:TotalPrepaidAmount en verlaag cbc:PayableAmount / ram:DuePayableAmount dienovereenkomstig. Gebruik cbc:PayableRoundingAmount / ram:RoundingAmount alleen voor contante afronding, met het teken van de correctie (bijv. -0.02 of 0.03). Bij een volledig betaalde factuur is PrepaidAmount gelijk aan TaxInclusiveAmount en is PayableAmount 0.00.

Voorbeeld (geldig)

<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="EUR">200.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="EUR">200.00</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="EUR">238.00</cbc:TaxInclusiveAmount>
  <cbc:PrepaidAmount currencyID="EUR">100.00</cbc:PrepaidAmount>
  <cbc:PayableAmount currencyID="EUR">138.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>

Wat de validator controleert

Gecontroleerd element (context):

UBL

cac:LegalMonetaryTotal

Test (XPath):

(exists(cbc:PrepaidAmount) and not(exists(cbc:PayableRoundingAmount)) and (xs:decimal(cbc:PayableAmount) = (round((xs:decimal(cbc:TaxInclusiveAmount) - xs:decimal(cbc:PrepaidAmount)) * 10 * 10) div 100))) or (not(exists(cbc:PrepaidAmount)) and not(exists(cbc:PayableRoundingAmount)) and xs:decimal(cbc:PayableAmount) = xs:decimal(cbc:TaxInclusiveAmount)) or (exists(cbc:PrepaidAmount) and exists(cbc:PayableRoundingAmount) and ((round((xs:decimal(cbc:PayableAmount) - xs:decimal(cbc:PayableRoundingAmount)) * 10 * 10) div 100) = (round((xs:decimal(cbc:TaxInclusiveAmount) - xs:decimal(cbc:PrepaidAmount)) * 10 * 10) div 100))) or  (not(exists(cbc:PrepaidAmount)) and exists(cbc:PayableRoundingAmount) and ((round((xs:decimal(cbc:PayableAmount) - xs:decimal(cbc:PayableRoundingAmount)) * 10 * 10) div 100) = xs:decimal(cbc:TaxInclusiveAmount)))

CII

//ram:SpecifiedTradeSettlementHeaderMonetarySummation

Test (XPath):

(xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount) + xs:decimal(ram:RoundingAmount)) or      ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) + xs:decimal(ram:RoundingAmount)) and not (xs:decimal(ram:TotalPrepaidAmount))) or      ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount))) or      ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount)) and not (xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount)))

Automatisch herstellen

Deze fout kan automatisch worden hersteld: na uw bevestiging herberekent de checker totalen en btw uit de regelbedragen.

Factuur herstellen →

Dezelfde controle via API:

curl -F file=@invoice.xml https://einvoicechecker.com/v1/validate

Gerelateerde regels

Veelgestelde vragen

Wat betekent BR-CO-16?

BR-CO-16 is een en 16931-kernregel: Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).

Wordt mijn factuur geweigerd vanwege BR-CO-16?

Ja. BR-CO-16 is "fataal"; validators (Peppol-accesspoints, KoSIT, KSeF) weigeren de factuur totdat de fout is opgelost.

Voor welke formaten geldt BR-CO-16?

Elke EN 16931-factuur: Peppol BIS Billing 3.0, NLCIUS, XRechnung, ZUGFeRD 2.x / Factur-X (profielen EN 16931, EXTENDED, XRECHNUNG) en andere nationale CIUS. Syntax: UBL en CII.

Bron: EN 16931-1:2017 schematron (CEN TC434, via Peppol BIS 3.0.20). Catalogus gegenereerd uit de officiële regelsets op 2026-10-15.