List tax regimes
The knowledge.regimes.list operation: GET /api/v1/tax/knowledge/regimes in the REST API and the knowledge_regimes_list tool in the MCP server.
/api/v1/tax/knowledge/regimesLists the regimes of the Jurisdiction Knowledge Base as loaded. A regime is a set of rules for one
jurisdiction and seller situation, for example HR_DOMESTIC, EU_OSS_UNION or US_SALES_TAX:TX: who it
applies to, the registration threshold (money as integer micros), grace rules, evidence and place-of-supply
rules, and how to register. Each has its record meta (status, confidence, open questions, sources).
Filter by jurisdictionId (regimes that cover it or live in its folder) or status (one or several).
Sorted by ID; paginate with limit (1–100, default 50) and starting_after (the previous next_cursor).
At a glance
- REST:
GET /api/v1/tax/knowledge/regimes - MCP tool:
knowledge_regimes_list - Operation ID:
knowledge.regimes.list - Scope: Platform
- Permission:
tax_knowledge:read - Risk tier:
read - Dry run: Not supported
- Idempotency: Not needed (read only)
- Modes: Test and live
- Pagination:
limit(at most 100) andstarting_after - Authentication: API key with the
tax_knowledge:readscope - Since: M3
Request
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
jurisdictionId | string | No | |
status | one of researched, cross_checked, reviewed, verified, retired or array of one of researched, cross_checked, reviewed, verified, retired | No | |
limit | integer (1 to 100) | No | |
starting_after | string | No |
Response
200 OK with a JSON object, a page of the list (newest first):
| Field | Type | Description |
|---|---|---|
object | "list" | |
data | array of object | |
data[].id | string | |
data[].object | "regime" | |
data[].version | string | |
data[].name | string | |
data[].jurisdictionIds | array of string | |
data[].appliesTo | object | |
data[].appliesTo.sellerEstablishment | one of in, outside, any, in_eu_other_ms, outside_eu | |
data[].appliesTo.customerType | one of b2c, b2b, both | |
data[].appliesTo.taxCategories | array of string | |
data[].threshold | object | |
data[].threshold.amount | object | |
data[].threshold.amount.amount | integer string | |
data[].threshold.amount.currency | string | |
data[].threshold.measure | one of sales_in_jurisdiction, eu_cross_border_b2c, worldwide_turnover, transactions_in_jurisdiction, sales_or_transactions | |
data[].threshold.window | one of calendar_year_current_or_previous, rolling_12_months, calendar_year_previous, base_period_two_years_prior, current_or_previous_12_months | |
data[].threshold.transactionCount | integer | |
data[].threshold.whatCounts | string | |
data[].threshold.amountInclusive | boolean | |
data[].zeroThreshold | boolean | |
data[].grace | object | |
data[].grace.rule | one of none, days_after_trigger, nth_day_of_following_month, before_first_sale, end_of_following_month | |
data[].grace.days | integer | |
data[].grace.nthDay | integer | |
data[].grace.effectiveFrom | string | |
data[].collectBeforeRegistration | boolean | |
data[].b2bReverseChargeNoRegistration | boolean | |
data[].b2bChargeWhenRegistered | boolean | |
data[].rounding | one of half_up, half_even, half_down, up, down | |
data[].requiresFiscalRepresentative | boolean | |
data[].requiresLocalAgent | boolean | |
data[].securityDeposit | string | |
data[].evidence | object | |
data[].evidence.requiredNonConflicting | integer | |
data[].evidence.acceptedTypes | array of one of billing_address, ip_country, card_bin_country, bank_country, phone_country, self_declared | |
data[].evidence.conflictPolicy | one of majority, billing_address_wins, hold_for_review | |
data[].supplyRules | array of object | |
data[].supplyRules[].taxCategoryId | string | |
data[].supplyRules[].customerType | one of b2c, b2b, both | |
data[].supplyRules[].placeOfSupply | one of customer_location, supplier_establishment, not_supported | |
data[].registration | object | |
data[].registration.method | string | |
data[].registration.portalUrl | string | |
data[].registration.identityRequirements | string | |
data[].registration.typicalProcessingDays | integer | |
data[].registration.prerequisites | array of object | |
data[].registration.prerequisites[].code | string | |
data[].registration.prerequisites[].description | string | |
data[].registration.prerequisites[].leadTimeDays | integer | |
data[].registration.packetFields | array of object | |
data[].registration.packetFields[].label | string | |
data[].registration.packetFields[].ownrecordField | string | |
data[].registration.packetFields[].required | boolean | |
data[].registration.packetFields[].notes | string | |
data[].registration.playbookId | string | |
data[].filingSpecId | string | |
data[].validFrom | string | |
data[].validTo | string | |
data[].meta | object | |
data[].meta.status | one of researched, cross_checked, reviewed, verified, retired | |
data[].meta.fixture | boolean | |
data[].meta.confidence | one of high, medium, low | |
data[].meta.sourceIds | array of string | |
data[].meta.openQuestions | integer (at least 0) | |
data[].meta.unsupportedRules | integer (at least 0) | |
data[].meta.blockingUnsupportedRules | integer (at least 0) | |
data[].meta.reviewedBy | string | |
data[].meta.reviewedAt | string | |
data[].meta.verifiedBy | string | |
data[].meta.verifiedAt | string | |
data[].meta.nextReviewBy | string | |
data[].meta.knowledgeRef | object | |
data[].meta.knowledgeRef.path | string | |
data[].meta.knowledgeRef.commit | string | |
has_more | boolean | |
next_cursor | string or null |
Examples
Croatia's regimes
GET /api/v1/tax/knowledge/regimes?jurisdictionId=HR
Authorization: Bearer or_test_…
Response (200):
{
"object": "list",
"data": [
{
"id": "HR_DOMESTIC",
"object": "regime",
"version": "6f1d2a9c0b3e4d58",
"name": "Croatian VAT (domestic)",
"jurisdictionIds": ["HR"],
"appliesTo": {
"sellerEstablishment": "in",
"customerType": "both"
},
"threshold": {
"amount": {
"amount": "60000000000",
"currency": "EUR"
},
"measure": "sales_in_jurisdiction",
"window": "calendar_year_current_or_previous"
},
"zeroThreshold": false,
"grace": {
"rule": "days_after_trigger",
"days": 8
},
"collectBeforeRegistration": false,
"b2bReverseChargeNoRegistration": false,
"b2bChargeWhenRegistered": false,
"rounding": "half_up",
"requiresFiscalRepresentative": false,
"requiresLocalAgent": false,
"evidence": {
"requiredNonConflicting": 1,
"conflictPolicy": "billing_address_wins"
},
"supplyRules": [
{
"taxCategoryId": "saas",
"customerType": "both",
"placeOfSupply": "supplier_establishment"
}
],
"registration": {
"method": "online",
"portalUrl": "https://e-porezna.porezna-uprava.hr",
"prerequisites": [
{
"code": "oib",
"description": "A Croatian personal identification number (OIB)"
}
],
"packetFields": [
{
"label": "Legal name",
"ownrecordField": "entity.legalName",
"required": true
}
],
"playbookId": "HR/playbooks/HR_DOMESTIC-registration.md"
},
"validFrom": "2013-07-01",
"meta": {
"status": "reviewed",
"fixture": false,
"confidence": "high",
"sourceIds": ["HR:S1", "HR:S4"],
"openQuestions": 0,
"unsupportedRules": 0,
"blockingUnsupportedRules": 0,
"reviewedBy": "Ana Horvat",
"reviewedAt": "2026-10-10",
"nextReviewBy": "2027-04-13",
"knowledgeRef": {
"path": "data/tax/knowledge/jurisdictions/HR/regimes/HR_DOMESTIC.yaml",
"commit": "1c14b2ec912aca347dd518b2044096f3b5d8eef1"
}
}
}
],
"has_more": false,
"next_cursor": null
}
Errors
| Code | HTTP status | When | What to do |
|---|---|---|---|
validation_failed | 400 | A filter or the page size is invalid. | Fix the fields listed in details.issues and send the request again. |
permission_denied | 403 | Your credentials can't read tax knowledge. | Ask an organization owner or admin for a role or scope that allows this action. |
It can also return these common errors: api_version_unsupported, authentication_required, api_key_invalid, resource_not_found, dry_run_not_supported, rate_limited, internal_error.