Create or update a tax group
ID-keyed upsert.
- Create: omit
id.nameand at least one tax line are required. - Update: pass
id. Any subset of fields is patched; omit a field to leave it untouched.
A group is referenced by price lists, and changing its rate re-prices every quote that uses it, so an integration syncing tax rules should update the existing group rather than create a second one.
Errors
422 tax_group_name_required— creating without a name.422 tax_group_lines_required— creating with an emptytaxLines.404 tax_group_not_found— theidbelongs to another tenant, or doesn’t exist.
POST
/api/v1/tax-groupsAuthorization
AuthorizationBearer token (bloomcount_...) · headerrequiredHeader parameters
Idempotency-KeystringReplays return the cached response. 24h TTL, scoped per API key.
Request body
requiredapplication/jsonidstringExisting tax group ID. Present → update; absent → create.
namestringcalculationMethodstringHow the tax lines combine into the total rate:
- `combined` — lines are summed. Two lines of `0.05` and `0.07` give a total rate of `0.12` (12%). Use for jurisdictions where federal + provincial tax both apply to the pre-tax amount.
- `compounding` — each line is applied on top of the previous. Lines of `0.05` then `0.07` give `(1 + 0.05) × (1 + 0.07) - 1 = 0.1235` (12.35%). Use for tax-on-tax regimes (e.g. Quebec QST stacks on GST).
default: "combined"
Allowed:
combinedcompoundingtaxLinesTaxLine[]Show propertiesHide properties
Array of
TaxLinelabelstringrequiredratenumber<float>requiredDecimal rate. e.g. 0.2 = 20%.
Responses
200Updated
taxGroupIdstringrequiredactionstringrequiredAllowed:
createdupdated201Created
taxGroupIdstringrequiredactionstringrequiredAllowed:
createdupdated401Missing or invalid API key, or revoked / expired.
errorstringrequired403Authenticated, but the key lacks the required scope or the tenant has no API access.
errorstringrequired422Request body or arguments failed validation.
errorstringrequired429Per-minute rate limit (60/min) or per-month cap exceeded.
errorstringrequired