For Agents
Create, read, update, and search HubSpot CRM Tax records — the tax rates HubSpot Commerce applies to quote and invoice line items — through /crm/v3/objects/taxes.
Get started with Taxes in minutes using your preferred integration method.
# Add to your MCP client config (Claude Desktop, Cursor, Windsurf)
{
"jentic": {
"url": "https://api.jentic.com/mcp",
"auth": "oauth"
}
}
# Then ask your agent:
"create a hubspot tax rate"
# → Jentic returns the GET /events tool with parameter schema, agent executes.What an agent can do with Taxes API.
Create a new tax rate via POST /crm/v3/objects/taxes
Update a tax rate or label using PATCH /crm/v3/objects/taxes/{taxId}
List all configured tax rates with GET /crm/v3/objects/taxes
Search taxes by label or rate via POST /crm/v3/objects/taxes/search
Bulk-create tax rates per jurisdiction with POST /crm/v3/objects/taxes/batch/create
GET STARTED
Use for: I need to create a new VAT rate of 20% for UK orders, Update the rate on an existing tax record, List all tax rates configured in the HubSpot portal, Search for tax records that match a specific label
Not supported: Does not calculate tax, file returns, or determine nexus — use for managing named tax rate records inside HubSpot CRM only.
The HubSpot CRM Taxes API manages Tax records — the named tax rates that HubSpot Commerce applies to line items on quotes, invoices, and subscriptions. Each Tax record has a label, rate, and optional jurisdiction metadata, and can be associated with the line items it applies to. The API exposes single-record CRUD, batch read, batch create, batch update, batch upsert by unique property, batch archive, and a search endpoint with filters and sorting.
Upsert tax rates keyed by an external code via POST /crm/v3/objects/taxes/batch/upsert
Archive a tax rate that is no longer applied with DELETE /crm/v3/objects/taxes/{taxId}
Patterns agents use Taxes API for, with concrete tasks.
★ Loading Tax Rates From an External Tax Service
Companies that calculate tax in an external service (Avalara, TaxJar, Stripe Tax) often need the resulting named rates to exist in HubSpot so they appear correctly on quotes and invoices. A scheduled job pulls the latest rates and uses POST /crm/v3/objects/taxes/batch/upsert keyed by an external_tax_code custom property. New rates are created, existing ones updated, and obsolete ones archived in a follow-up call.
Call POST /crm/v3/objects/taxes/batch/upsert with idProperty='external_tax_code' and inputs containing label, rate, and jurisdiction for each tax rate from the external service.
Per-Jurisdiction Tax Configuration
B2B businesses selling across regions need tax records for each jurisdiction (VAT for the UK and EU member states, GST for Canada, state sales tax for the US). Using POST /crm/v3/objects/taxes/batch/create the configuration runs once during setup, creating dozens of rates in seconds. Quotes and invoices generated against the right jurisdiction line items then pick up the correct tax rate automatically.
Call POST /crm/v3/objects/taxes/batch/create with one input per jurisdiction (label='UK VAT 20%', rate=20, etc.).
Tax Rate Audit and Cleanup
Finance teams periodically audit tax records to remove rates that are no longer used or have been superseded by new legislation. POST /crm/v3/objects/taxes/search returns all records (paged), the team flags obsolete entries, and POST /crm/v3/objects/taxes/batch/archive removes them in one call. Updates to active rates are applied via POST /crm/v3/objects/taxes/batch/update.
Call POST /crm/v3/objects/taxes/search to list all tax records, identify those with obsolete labels, then POST /crm/v3/objects/taxes/batch/archive with their IDs.
AI Agent Tax Lookup During Quote Generation
An AI quoting agent generates a HubSpot quote and needs to attach the right tax rate to each line item based on jurisdiction. Through Jentic the agent searches for tax operations, queries existing tax records by jurisdiction label, and uses the returned taxId on line item creation. Jentic stores OAuth credentials in its vault so the agent only handles scoped execution tokens.
Search Jentic for 'find hubspot tax rate by jurisdiction', load the search operation, and execute POST /crm/v3/objects/taxes/search filtered by label='UK VAT 20%'.
11 endpoints — the hubspot crm taxes api manages tax records — the named tax rates that hubspot commerce applies to line items on quotes, invoices, and subscriptions.
METHOD
PATH
DESCRIPTION
/crm/v3/objects/taxes
Create a tax rate
/crm/v3/objects/taxes/{taxId}
Read a tax rate
/crm/v3/objects/taxes/{taxId}
Update a tax rate
/crm/v3/objects/taxes/{taxId}
Archive a tax rate
/crm/v3/objects/taxes/search
Search tax rates
/crm/v3/objects/taxes/batch/upsert
Upsert tax rates by external key
/crm/v3/objects/taxes/batch/create
Batch create tax rates
/crm/v3/objects/taxes
Create a tax rate
/crm/v3/objects/taxes/{taxId}
Read a tax rate
/crm/v3/objects/taxes/{taxId}
Update a tax rate
/crm/v3/objects/taxes/{taxId}
Archive a tax rate
/crm/v3/objects/taxes/search
Search tax rates
Three things that make agents converge on Jentic-routed access.
Credential isolation
HubSpot OAuth tokens and private app keys are stored encrypted in the Jentic vault. Agents receive scoped execution tokens — the raw secret never enters agent context or logs.
Intent-based discovery
Agents search Jentic with intents like 'create hubspot tax rate' and Jentic returns the matching Taxes operations with typed input schemas, so the agent can configure rates without browsing HubSpot's docs.
Time to first call
Direct HubSpot Taxes integration with OAuth and external sync logic: 1-2 days. Through Jentic: under 30 minutes — search, load schema, execute.
Alternatives and complements available in the Jentic catalogue.
Avalara AvaTax
Avalara calculates and files tax across thousands of jurisdictions with real-time rate determination.
Choose Avalara when you need real-time, jurisdiction-aware tax calculation rather than a fixed list of named rates managed inside HubSpot.
TaxJar API
TaxJar focuses on US sales tax calculation, nexus tracking, and filing for e-commerce.
Choose TaxJar when sales tax compliance is US-focused and you need automated filing on top of rate determination.
HubSpot Line Items
Tax rates are applied to line items on quotes and invoices — manage line items together with their tax associations.
Use Line Items to attach a Tax record to specific line items at quote-creation time.
Specific to using Taxes API through Jentic.
What authentication does the HubSpot Taxes API use?
It supports OAuth 2.0 (recommended for public apps) and HubSpot private app access tokens passed as a Bearer token in the Authorization header. Through Jentic the token is stored encrypted in the vault and injected at execution time so the agent never holds the raw secret.
Can I associate a tax record with line items through this API?
Yes. The Taxes API exposes the standard CRM associations pattern, so you can pass association inputs when creating or updating a tax record, or use the Associations API to link existing tax records to line items after the fact.
What are the rate limits for the HubSpot Taxes API?
HubSpot enforces 100 requests per 10 seconds for OAuth apps and 190 per 10 seconds for private apps on Enterprise tiers, plus daily quotas. Use POST /crm/v3/objects/taxes/batch/create and batch/upsert (up to 100 records per request) when loading many rates at once.
How do I keep HubSpot tax rates in sync with Avalara through Jentic?
Search Jentic for 'upsert hubspot tax rates', load POST /crm/v3/objects/taxes/batch/upsert, and execute it with idProperty set to your external_tax_code property and inputs containing the latest rates from Avalara. Jentic returns typed responses for each upserted record.
Does the Taxes API calculate tax for an order?
No. This API only manages named tax rate records. Actual tax calculation happens inside HubSpot Commerce when those rates are applied to line items, or in an external tax service whose results you sync into HubSpot via this API.
Can I archive a tax rate that is still attached to historical line items?
Yes — archiving a tax record with DELETE /crm/v3/objects/taxes/{taxId} removes it from active selection but leaves historical line item associations intact. To remove permanently you must use HubSpot's GDPR delete process.
/crm/v3/objects/taxes/batch/upsert
Upsert tax rates by external key
/crm/v3/objects/taxes/batch/create
Batch create tax rates