Loading...
Loading...
Integrate the TaxCloud v3 sales tax API into an ecommerce application. Use this skill whenever the user wants to calculate sales tax, record or convert orders for tax compliance, process refunds or returns, issue standalone tax credits, import orders from external systems (Square, POS, marketplaces, ERPs, QuickBooks), handle tax-exempt customers, classify products with TIC codes, generate a typed TypeScript client from the OpenAPI spec, troubleshoot zero-tax responses, or handle any aspect of US sales tax automation with TaxCloud. Trigger on mentions of TaxCloud, sales tax calculation, nexus, tax compliance, tax quotes, order upload, exemption certificates, TIC codes, or filing.
npx skill4agent add hamstudy/taxcloud-skill taxcloudhttps://docs.taxcloud.com/openapi.jsonhttps://docs.taxcloud.com/openapi.yamlhttps://api.v3.taxcloud.com/tax/connections/{connectionId}https://docs.taxcloud.com| Task | Reference file |
|---|---|
| First-time setup, credentials, test vs prod | |
| Understand nexus, sourcing, how tax is calculated | |
| Real-time tax quote during checkout, discounts, exemptions | |
| Importing orders from Square, POS, ERPs, marketplaces | |
| Customer returns, partial refunds, standalone credits | |
| Product classification, TIC search API | |
| Tax-exempt customers, exemption certificates | |
| Address verification, address field formats | |
| Error handling, retry patterns, rate limits | |
| Generating a TypeScript/Node.js typed client | |
| Migrating an existing v1 integration to v3 | |
| Growing nexus over time, economic thresholds, adding states | |
| Vue.js integration patterns, testing, mocking, data storage | |
POST /carts → calculate tax, get cartId
↓ (customer checks out)
POST /carts/orders → convert cart → order (completed: true or false)
↓ (if deferred)
PATCH /orders/{id} → set completedDate to lock in filing periodPOST /orders → create order directly (with tax amounts you calculated)
or
POST /orders (kind: "credit") → standalone tax credit not tied to any ordercompletedDatetransactionDatecartIdexcludeFromFiling: trueexemptionIdisExempt: true| Operation | Method | Path |
|---|---|---|
| Health check | GET | |
| Calculate tax / create cart | POST | |
| Convert cart to order | POST | |
| Create order (upload) | POST | |
| Get order | GET | |
| Update order (complete) | PATCH | |
| Refund order | POST | |
| Create exemption certificate | POST | |
| Get exemption certificates | GET | |
| Get certificate by ID | GET | |
| Disable certificate | DELETE | |
| TIC search | POST | |
| Verify address | POST | |
| API | Base URL | Auth | Used for |
|---|---|---|---|
| Sales Tax API | | | All cart/order/refund/exemption operations |
| Management API | | Special scoped key (contact support) | Product catalog, access key management |
| Health check | | None | Service status (no auth needed) |
X-API-KEYPOST /api/cart/taxPOST /api/orders// server-side only — never in Vue components
const BASE_URL = `https://api.v3.taxcloud.com/tax/connections/${process.env.TAXCLOUD_CONNECTION_ID}`;
const HEADERS = {
'X-API-KEY': process.env.TAXCLOUD_API_KEY!,
'Content-Type': 'application/json',
};
async function taxcloud<T>(path: string, method = 'GET', body?: unknown): Promise<T> {
const res = await fetch(`${BASE_URL}${path}`, {
method,
headers: HEADERS,
body: body ? JSON.stringify(body) : undefined,
});
if (!res.ok) {
const err = await res.json().catch(() => ({}));
throw Object.assign(new Error(`TaxCloud ${res.status}: ${err.detail ?? res.statusText}`), { status: res.status, body: err });
}
return res.json();
}references/10-typescript-client.md