BR-DEC: decimal places — two, everywhere

Twenty-one BR-DEC rules that all say the same thing: at most two decimal places. They differ only in which amount they mean.

21 rules · Rule set v2026-08-31

Why there are twenty-one at all

The norm states the requirement per field rather than once for all amounts, because every field gets its own rule number. In substance it is a single sentence; in an error report it is twenty-one possible codes.

VAT rates (BT-152, BT-119) are excluded — percentages may carry more places. And not every monetary amount is in: the item net price (BT-146) and gross price (BT-148) have no BR-DEC rule and therefore no two-place limit. Keep prices at four places and derive the line amounts from them, rounded, and you breach nothing. The twenty-one amounts below are checked and no others.

The numbering has gaps: BR-DEC-03, -04, -07, -08, -21, -22 and -26 do not appear in the rule set that ships. Meet one of those codes in somebody else's error list and this page will not have it — the German validator does not run them.

How it happens

Not through data entry but through arithmetic. A 3.33% discount on 1,000.00 gives 33.3333…, and writing the intermediate result straight out carries four places. The same goes for price base quantity conversions and for splitting an amount across lines.

Round on output, not mid-calculation — and use decimal arithmetic rather than float. That the rounded values then still have to agree with one another is what BR-CO-10 through BR-CO-17 check.

The test underneath each rule shows that nothing is computed here, only counted: string-length(substring-after(…, '.')) <= 2 takes the characters after the point. Trailing zeros count too. 1000.000 fails although the value is exactly one thousand; 1000.00 passes. It is a rule about the written form rather than about the number — a serialiser's decision, not an accounting one.

All decimal-place rules

One rule per amount, with the official rule text.

NormAPI provides technical validation, not tax or legal advice.