core

A variant of Tax Compliance Engine.

View the interactive variant page →

Tax Compliance Engine

Part of the worlds-biggest-software-project initiative.

An open-source, AI-native sales tax compliance engine for multi-jurisdiction calculation, nexus monitoring, and filing automation.

Tax Compliance Engine is a developer-first platform for businesses that must collect, report, and remit sales tax, VAT, and GST across thousands of jurisdictions. It targets e-commerce operators, SaaS companies, and enterprise tax teams currently locked into expensive, opaque commercial suites. The project addresses the absence of a viable open-source alternative in a regulatory space dominated by proprietary vendors.


Why Tax Compliance Engine?

  • No viable open-source alternative exists. Existing OSS projects (OpenTaxSolver, UsTaxes) cover personal income tax only; no community-maintained engine handles business multi-jurisdiction sales tax.
  • Incumbent pricing is opaque and steep. Avalara's median customer pays ~$19,356/year, Vertex runs $60K–$200K+/year, and ONESOURCE reaches $300K+ at the enterprise tier — pricing complaints are a recurring theme in customer reviews.
  • Percentage-of-revenue pricing punishes growth. Anrok charges $499–$1,000/month plus ~0.4% of revenue, which compounds painfully at scale.
  • Digital goods classification lags legislation. Static lookup tables at incumbent vendors struggle with SaaS, AI services, bundled offerings, and emerging digital categories.
  • Switching costs are high by design. Deep ERP integrations, multi-year auto-renewing contracts, and 6–12 month implementation timelines lock buyers in.

Key Features

Calculation & Jurisdiction Coverage

  • Tax rate calculation across US state, county, city, and special-district jurisdictions (12,000+)
  • Product taxability mapping via a configurable taxonomy spanning physical goods, SaaS, digital services, and professional services
  • International VAT/GST calculation for major markets including EU VAT OSS, UK VAT, Australia GST, and Canada GST/HST
  • Idempotent calculation API with per-transaction line-item explainability
  • Multi-entity support for organisations with multiple legal entities across jurisdictions

Nexus Monitoring & Registration

  • Economic nexus threshold tracking with configurable alerting per jurisdiction
  • Physical nexus monitoring via HRIS integration to detect remote-employee-triggered nexus
  • Webhook-driven alerts on threshold approach and crossing events
  • Workflow triggers to drive registration once a nexus event is detected

Filing, Remittance & Exemptions

  • Automated returns preparation with jurisdiction-specific formatting
  • Filing and remittance execution for registered jurisdictions
  • Exemption certificate collection, storage, validation, and expiry tracking (SSUTA-compliant)
  • Audit log capturing every rate applied, with calculation rationale per transaction

Developer Experience & Integration

  • REST API exposing Products, Customers, Transactions, and Calculations as structured resources
  • SDKs for major programming languages
  • Webhook notifications for nexus alerts and filing confirmation events
  • Designed for embedding in billing, e-commerce, and ERP stacks rather than admin-console-only workflows

AI-Native Advantage

LLM-based product taxability classification can dramatically outperform the static lookup tables used by every incumbent for ambiguous digital goods, bundled offerings, and SaaS edge cases. Continuous legislative monitoring across 12,000+ jurisdictions can auto-propose rule and rate updates before they take effect, replacing slow human research cycles. AI-driven audit defence assembles jurisdiction-specific evidence packages — exemption certificates, calculation rationale, and supporting documentation — that today require manual compilation. Anomaly detection on returns flags statistical outliers before submission, reducing audit exposure.


Tech Stack & Deployment

The architecture targets self-hosted, cloud, and hybrid deployment with a developer-first REST API as the primary integration surface. The calculation layer (rate lookup, product mapping, jurisdiction routing) is suitable for an open-source core; rule-table maintenance can be crowdsourced from the community, with a commercial hosted service offering managed rate updates and filing. Streamlined Sales Tax (SST) Certified Service Provider certification is a target milestone, enabling free filing in 24 SST member states. Compliance with EU VAT OSS, DAC7, and GDPR data-residency requirements is addressed by design.


Demo Data

target/scripts/seed-demo.mjs loads a realistic sample dataset (customers, products, exemption certificates, committed + voided transactions across several states, nexus registrations with a filing calendar, draft and filed returns, webhook subscriptions) on top of the base reference seed, so every screen looks populated for demos, screenshots, and video recordings. It is idempotent — a prior demo load is detected (DEMO-* external ids) and the run is a no-op — and the whole load runs in one transaction, so a failed run leaves nothing behind.

node target/scripts/seed-demo.mjs <destination>
  • dev — reads the discrete DATABASE_* values from the repo-root .env.dev (Postgres from docker compose up -d postgres redis).
  • compose — reads .env.compose, falling back to this project's compose destination file .env.prod-parity. Those in-stack values use the compose service name (postgres); when running from the host, override with the host-mapped port, e.g. DATABASE_HOST=localhost DATABASE_PORT=54069 node target/scripts/seed-demo.mjs compose (real environment variables always win over the env file), or run it inside the app container.
  • standalone / aws — no env file is read; the platform-injected DATABASE_* variables must already be set (run inside the deployed environment or through a wbsp db tunnel with the variables exported).

The script runs the pre-built bundle (packages/db/dist/seed-demo.js, produced by pnpm build in target/) when present, and otherwise falls back to tsx on the TypeScript source (packages/db/src/seed/demo.ts, also runnable as pnpm --filter @taxengine/db seed:demo). To wipe and reload demo data in a local environment, reset the stack with docker compose down -v && docker compose up -d postgres redis and run the script again.

Preparing a real stage/production system for first use (wipe + minimal base data, no demo records) is the sibling script target/scripts/init-prod.mjs — see user-docs/production-initialization.md.


Market Context

The global sales tax software market was $5.43B in 2025 and is projected to reach $10.88B by 2032 at ~10.44% CAGR (Research and Markets); the broader tax management software market is forecast at $25.4B by 2033. Buyer personas range from price-sensitive e-commerce operators on Shopify and Amazon to SaaS CFOs needing digital-services VAT, enterprise tax directors with SAP/Oracle ERP integrations, and marketplace platforms requiring seller-level remittance and 1099-K reporting. Recent consolidation — Stripe's TaxJar acquisition (2021), Vista Equity's $8.4B Avalara take-private (2022), and Thomson Reuters' $856M Pagero acquisition (2024) — signals strong strategic demand.


Project Status

The US core is implemented and shipping: calculation, nexus monitoring, exemption certificates, return preparation, and the audit trail are live (108/108 spec tasks, ~300 tests green), with a standalone preview image for evaluation. See user-docs/READ-ME-FIRST.md for the plain-language tour. Contributions, feedback, and domain expertise are welcome.


Contributing

We welcome contributions from developers, domain experts, and potential users. See CONTRIBUTING.md for guidelines.

Important: All contributions must be your own original work or clearly attributed open-source material with a compatible licence. Copyright infringement and licence violations will not be tolerated and will result in immediate removal of the offending contribution. If you are unsure whether a piece of code, text, or other material is safe to contribute, open an issue and ask before submitting.


Licence

Licence to be determined. See discussion for context.