Company-owned taxes
Create, edit and delete your own taxes next to the read-only Factuarea catalog, tell them apart with the new ownership field, and set defaults for your company only. Two new MCP tools, a new OAuth scope and two new error codes.
9 October 2026 — Taxes now come in two kinds. The Factuarea catalog (global)
is shared by every company and is read-only, and each company can create its own
taxes (company), visible only to that company. Defaults are chosen per company,
so choosing a default never changes what other companies see.
- Your own taxes — Create a tax creates a tax owned by the company of the API key. You can edit it with Update a tax, switch it with Toggle tax active state and remove it with Delete a tax.
- A new
ownershipfield — every tax in the responses carriesownership:global(Factuarea catalog) orcompany(created by your company). List all taxes acceptsownership=globalorownership=company; omit it to list both. Any other value answers422witherror.paramset toownership. - Visibility — you see the global catalog and your own taxes. A tax owned by
another company answers
404tax_not_found, exactly like one that does not exist. - Codes — a tax code must be unique among the global catalog and your own taxes
(
409tax_code_already_existsotherwise). Other companies can use the same code. - Defaults per company — Mark a tax as the default for its type
and Set tax default for a document type
work on any visible tax and only change the company of the API key. Without a document,
set-defaultwrites only in the compatible documents where that tax category (VAT, retention or surcharge) is switched on for your company.is_defaultanddefault_for_documentsare always the effective defaults of your company, anddefault_for_documentsis also accepted when you create or update a tax.recurring_invoiceinherits the default ofinvoice. - Usage check — Check whether a tax is in use
counts only the documents, products, contacts and defaults of your company.
used_byaddssupplier_profiles(supplier profiles with the tax as their default) andrecurring_invoices(recurring templates with a line that uses it, each counted once), documentscompany_tax_defaults, andtotal_countsums the nine counters. The MCP toolcheck_tax_in_usereturns the same keys. - Webhooks — the
tax.metadata_changed,tax.validity_changedandtax.external_reference_changedevents are delivered for the taxes owned by your company. Catalog taxes do not emit events. - MCP — two new tools,
update_tax(taxes:write) anddelete_tax(taxes:delete, irreversible, so it acceptsidempotency_key).search_taxesreturnsownershipand filters by it. The OAuth scopetaxes.delete, which maps totaxes:delete, lets an OAuth client usedelete_tax.
Error codes
global_tax_read_only(403) — you tried to change, toggle or delete a tax of the Factuarea catalog. Create your own tax or set your company defaults instead.tax_not_defaultable_for_document(422) — the tax cannot be the default of that document: its type isother, itsapplies_todoes not cover the document, or the document isrecurring_invoice.tax_default_axis_disabled(422,business_rule_violation) — the tax category (VAT, retention or surcharge) is switched off for your company in the requested document, or in every documentset-defaultwould write to. Returned by create, update,set-defaultandset-default/{docType}. Switch the category on in the company settings or pick a document where it is on.
The first two codes replace custom_tax_creation_disabled and
system_tax_default_modification_forbidden, which the API no longer returns.
system_tax_immutable_field,
system_tax_undeletable, tax_in_use
and tax_inactive_cannot_be_default keep their meaning.
See the error catalog.
All the operations already existed. Their scopes are unchanged.
Updated endpoints14
| Endpoint | Description |
|---|---|
GET/v1/taxes | List all taxes |
POST/v1/taxes | Create a tax |
GET/v1/taxes/{tax} | Retrieve a tax |
PUT/v1/taxes/{tax} | Update a tax |
DEL/v1/taxes/{tax} | Delete a tax |
POST/v1/taxes/{tax}/toggle | Toggle tax active state |
POST/v1/taxes/{tax}/set-default | Mark a tax as the default for its type |
PUT/v1/taxes/{tax}/set-default/{docType} | Set tax default for a document type |
GET/v1/taxes/{tax}/is-in-use | Check whether a tax is in use |
GET/v1/taxes/active | List active taxes |
GET/v1/taxes/by-type | List taxes filtered by type |
GET/v1/taxes/for-sales | List taxes applicable to sales |
GET/v1/taxes/for-purchases | List taxes applicable to purchases |
POST/v1/taxes/calculate | Calculate a tax over a base amount |