Skip to main content
An invoice is always in one currency. Discounts come off the subtotal, and every tax rate applies to the same post-discount base.

The order of the calculation

1

Subtotal

Add up every line amount.
2

Discount

Subtract the discount. A percent discount is taken against the pre-discount subtotal.
3

Base for tax

subtotal − discount. If a discount is larger than the subtotal, the base floors at zero rather than going negative.
4

Tax

Apply each named tax rate to that same base. Taxes never compound.
5

Total

base + all taxes.

Discounts

A 10% discount on a 2,160subtotalis2160×0.10=2,160 subtotal is `2160 × 0.10 = 216`.

Taxes

Add as many named rates as you need. Each row has a Tax name (such as VAT) and a rate as a percentage (such as 20). A row only counts once both fields are filled.

Taxes do not compound

This is the rule that trips people up. Every tax line is calculated on the same post-discount base. A second tax is never applied on top of the first. Subtotal $1,000, no discount, two taxes: If taxes compounded, the total would be 1,000 × 1.20 × 1.05 = $1,260.00. TimeTracker does not do that.

A full worked example

Bluebird Coffee’s March invoice at Northwind Studio: Note that the VAT is on 1,944,noton1,944, not on 2,160. Tax always follows the discount.

Currency

The currency locks

The Currency field is editable until the invoice has a line. After that it is greyed out. To change it, remove every line, or start a new invoice. This exists so an invoice can never end up holding lines priced in a currency it no longer uses.

Exchange rates

If a selected line is priced in a different currency from the invoice, an Exchange rates section appears in the builder:
Some selected lines are billed in a different currency than this invoice (USD). Enter the rate to convert each into USD.
You get one field per source currency, labelled for example EUR → USD rate.

How the rate is applied

The rate is a multiplier: one unit of the source currency equals this many units of the invoice currency. Ana Ferreira bills at €80/hour. The invoice is in USD. You enter 1.08. The line is stored in USD, and the rate 1.08 is frozen onto it.
There is no automatic rate lookup and no silent 1:1 fallback. If a conversion is needed and no rate is supplied, the save is refused. Money is never summed across currencies.

The rate is frozen

The exchange rate is snapshotted onto the invoice line when the invoice is created. Using a different rate on a later invoice never re-prices an earlier one. See /rates/rate-snapshots.

Rounding

Money is rounded once, at the end, using half-up rounding, to the currency’s own number of decimal places. Nothing is rounded partway through, so the subtotal, discount and tax on an invoice always add up to the total exactly.

Expense markup

A billable expense on an invoice is billed at its amount plus its markup: amount × (1 + markup% ÷ 100) A 200travelexpensewitha15200 travel expense with a 15% markup bills at `200 × 1.15 = 230`. The markup is set on the expense, not on the invoice. See /expenses/billable-expenses.

What TimeTracker does not do

TimeTracker records the tax you tell it to charge. It is not a tax determination engine – check your own obligations.

Permissions

Common questions

After. The base for every tax line is subtotal − discount.
No. The discount applies to the whole invoice. For a per-line reduction, adjust the line itself or add a negative-value manual line.
The base floors at zero. The invoice never goes negative.
Yes, as many as you need. They all apply to the same post-discount base.
No. Remove every line first, or start a new invoice.
It is frozen onto this invoice’s lines. The next invoice asks again, so you always confirm the rate you are using.
Because the yen has no minor unit. Each currency is rounded to its own number of decimal places.

Troubleshooting

Currencies and exchange rates

Currency across the whole product.

Create an invoice

Where discount and tax are entered.

Record a payment

Payment currency must match.

Rate snapshots

Why a frozen rate matters.

Invoice statuses

How the balance is derived.

Invoicing troubleshooting

Every message in one place.