Skip to main content
POST
Resolve the applicable tax rate for a destination

Authorizations

x-api-key
string
header
default:<your-api-key>
required
organisation
string
header
default:<your-organisation-id>
required

Path Parameters

business_entity_id
string<uuid>
required

Body

application/json

Request body for the rate-lookup endpoint.

Strict-level matching against the deepest field provided. A missing input field is treated as 'row must be empty at that level' — not 'ignore that level'. So city=SF alone matches rows with state='' AND city='SF' AND zip=''. Whatever combination of geography fields the caller supplies, the lookup either matches a row pinned to that exact shape or returns [].

tax_category_id
string<uuid>
required
country_code
string
required
Required string length: 2
effective_date
string<date>
required
state_code
string | null
Maximum string length: 10
city
string | null
Maximum string length: 100
zip_code
string | null
Maximum string length: 20

Response

Successful Response

Output of :meth:TaxLookupService.resolve_rates_for_destination — one matched jurisdiction.

source_jurisdiction_rate_id is provenance (which tax_jurisdiction_rates row matched). fingerprint is a sha256 over the resolved set so a future reverify can detect drift against current rate tables without re-shipping the breakdown.

source_jurisdiction_rate_id
string<uuid>
required
rate_breakdown
RateRow · object[]
required
fingerprint
string
required