"100.00", "-19.00", "0.19"). There is no wire-level cap on fractional digits.
tax_amount consistency
For each line_items[].taxes[] on a sale / return / exchange, OpenFiskal recomputes the expected tax_amount from the line’s total_amount (gross) and the rates on the same line, and rejects with 422 tax_amount_precision_invalid if it disagrees.
gross × rate / (1 + rate); multi-tax stacking (e.g. US state + municipal) checks every row against the full rate set.
Comparison is strict at 8 decimal places: expected is rounded half-up to 8 dp and compared by numeric equality. Submit tax_amount rounded to 8 dp.
The operation-level identity
pretax_amount + tax_amount + tip_amount = total_amount is enforced separately and exactly.