You enter the rate

InvoiceMint does not look up a country, a product category, or a registration threshold. Each line has a tax rate because you typed one. Zero is allowed. A line at 20 and a line at 0 can sit on the same invoice.

Exclusive or inclusive

Tax-exclusive prices are the amount before tax. The app adds tax on the discounted line. Tax-inclusive prices already contain tax. The app pulls the tax portion back out so the subtotal is the net amount and the total still matches the price you quoted.

Discount is applied before tax in both modes. A fixed discount cannot reduce a line below zero.

Rounding

Money is stored in minor units: cents for dollars, yen for yen, fils for dinars. Each line is rounded half away from zero to the minor unit, then the lines are added. The total is the sum of the rounded lines, not a second rounding of the grand total. The calculation notes in the repository walk through the same steps the code uses.

What this is not

A correct total for the rate you entered is not a tax return, a VAT invoice that meets every local field requirement, or advice that the rate applies. If a jurisdiction needs a specific legend, a tax number format, or a reverse-charge sentence, put that text in the notes yourself.