# BR-CO-13

Quoted from a public specification. This page is not a validator, and it is not tax, legal, or accounting advice.

- Country: EU
- Syntax: UBL
- Severity: fatal
- Statement language: en
- Last verified: 2026-10-17

## Official statement

> Invoice total amount without VAT (BT-109) = Σ Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).

Source: https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-CO-13/

Peppol BIS Billing 3.0, May 2026 release, EN 16931 model bound to UBL

Severity note: fatal, from the Flag column of the Peppol BIS Billing 3.0 UBL rules index retrieved 2026-10-17.

## Plain-language reading

The invoice total without VAT (BT-109) must equal the sum of line net amounts (BT-131), minus document-level allowances (BT-107), plus document-level charges (BT-108). The published test also covers a missing allowance total or a missing charge total.

## What to change

Recalculate BT-109 from the line net sum, the document allowances, and the document charges.

## Illustration

Illustration of the condition in the official statement. Not an example published by the source.

**Fails the stated condition.** Line net amounts sum to 100, document allowances are 10, document charges are 5, and BT-109 is 100.

**Passes the stated condition.** Those same inputs, and BT-109 is 95.

## Published context and test

Copied from the source. Not reimplemented on this page.

```
cac:LegalMonetaryTotal
```

```
((cbc:ChargeTotalAmount) and (cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = round((xs:decimal(cbc:LineExtensionAmount) + xs:decimal(cbc:ChargeTotalAmount) - xs:decimal(cbc:AllowanceTotalAmount)) * 10 * 10) div 100 )) or (not(cbc:ChargeTotalAmount) and (cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = round((xs:decimal(cbc:LineExtensionAmount) - xs:decimal(cbc:AllowanceTotalAmount)) * 10 * 10 ) div 100)) or ((cbc:ChargeTotalAmount) and not(cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = round((xs:decimal(cbc:LineExtensionAmount) + xs:decimal(cbc:ChargeTotalAmount)) * 10 * 10 ) div 100)) or (not(cbc:ChargeTotalAmount) and not(cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = xs:decimal(cbc:LineExtensionAmount)))
```

[All rule notes](https://einvoicegoblin.com/rules/index.md) · [JSON](https://einvoicegoblin.com/rules/BR-CO-13.json) · [HTML](https://einvoicegoblin.com/rules/BR-CO-13/) · [llms.txt](https://einvoicegoblin.com/llms.txt) · [Invoice page](https://einvoicegoblin.com/) · [Privacy](https://einvoicegoblin.com/privacy.html)
