Invoicing
Taxes
Set up the tax rates each business charges, as exclusive, inclusive or compound taxes, and apply them per line. Rates are frozen on each line.
Taxes such as VAT, GST or sales tax are set up once per business as a list of tax rates, then applied to each line of a document. The engine works out the tax for every line and the document's tax total, in integer minor units, and copies the rate onto the line so later changes never alter documents you already issued.
Tax rates
Each business keeps its own list of tax rates in Settings > Taxes. A tax rate has:
| Field | What it means |
|---|---|
name | The label printed on the document, for example "VAT" or "GST". |
rate | The percentage, for example 20 or 17.5. Up to four decimal places. |
calculation | exclusive: tax is added on top of the price. inclusive: the price already contains the tax. |
compound | When true, this tax is calculated on top of the amount including other taxes. |
preset_key | Set when the rate was created from a built-in preset. |
Rates you no longer use can be archived. An archived rate is not offered for new lines, and documents that already used it are not changed.
Exclusive, inclusive and compound
The tax is added to the line. A line of 100.00 with a 20% exclusive tax comes to 120.00, with 20.00 of tax.
The price already includes the tax. A line of 120.00 with a 20% inclusive tax still comes to 120.00, of which 20.00 is tax. Use this when your prices are quoted tax included.
A compound tax is charged on an amount that already includes another tax, for places where one tax applies on top of another. Set the compound flag on such a rate.
The engine is tested so that exclusive, inclusive and compound taxes give the same result whether they are computed line by line or recomputed from a stored snapshot, and so that rounding never creates or loses a minor unit.
Built-in presets
To save typing, tax presets ship for the first markets: Pakistan, India, the United Kingdom, the European Union, the United States and the United Arab Emirates. Preset names and rates are taken from official sources when they are built, so check them against your own obligations. The United States has no national rate: you add state rates yourself.
Free Invoice Automation calculates the tax you choose; it does not decide which tax applies to you or file returns. Check with your accountant or tax office which rates you must charge.
Set up and use taxes in the web app
Open Settings > Taxes
Make sure the business switcher shows the business you are setting up.
Add a rate
Start from a preset or enter the name, percentage, calculation (exclusive or inclusive) and whether it is compound.
Set defaults
Optionally choose a default tax rate for the business, override it for particular clients, or give a saved item its own default rate.
Apply on lines
In the document editor, each line has a tax field filled from those defaults. Change it on any line if needed.
Your business's own tax registration numbers live on the business profile, and a client's tax number on the client, so both can be printed on the document.
Through the API
Create or update a tax rate with one call, then reference it on lines with tax_rate_id:
curl -X POST "https://api.freeinvoiceautomation.com/v1/tax-rates" \
-H "Authorization: Bearer $FIA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 1a2b3c4d-vat-standard" \
-d '{
"business_id": "0193f2a0-1b2c-7d3e-8f40-5a6b7c8d9e01",
"name": "VAT",
"rate": "20",
"calculation": "exclusive",
"compound": false
}'{ "description": "Website design", "quantity": "1", "unit_price_minor": "100000", "tax_rate_id": "0193f2a3-2d4e-7f60-8a1b-2c3d4e5f6a70" }With a 20% exclusive rate, that line has tax_minor of "20000" and total_minor of "120000".
| Task | Endpoint |
|---|---|
| List tax rates | List tax rates |
| Create or update a rate | Create or update a tax rate |
| Archive a rate | Archive a tax rate |
Tax rates have no MCP tool of their own. MCP clients and the AI agent apply existing rates by id when they create documents with create_invoice or create_estimate.
Rules and edge cases
- Frozen on the line. When a line uses a tax rate, the tax name, rate and calculation are copied onto the line. Editing the rate in your settings later changes new lines only.
- Frozen in the snapshot. When a document is first sent, its line tax rates are part of the snapshot. Changes after that are revisions.
- Totals per rate. The document's
tax_minoris the sum of its lines' tax. From the week of 25 January 2027 the Tax collected report groups tax by rate and period. - Store taxes. The Shopify and WooCommerce connectors let you map store taxes to your tax rates in their settings.
Permissions
| Action | Permission key |
|---|---|
| See tax rates | businesses.view |
| Create, change or archive tax rates | settings.manage |
| Choose a tax rate on a line | documents.create or documents.edit |
By default only Owners and Admins can change tax rates.
Errors you may see
| Code | Meaning |
|---|---|
validation_failed | For example a calculation other than exclusive or inclusive. |
not_found | The tax_rate_id on a line does not exist in this business. |
permission_denied | Your role lacks settings.manage. |
document_not_editable | The document was sent; change a line's tax by revision. |