Releases: cboxdk/laravel-tax
Release list
v0.1.3
Real, cited, no-fabrication tax data (additive, backward-compatible).
- Live EU VAT rate feed — binds the public, MIT-licensed
ibericode/vat-ratesdataset (a community compilation, honestly not labelled as the official EU TEDB) viaIbericodeVatRateSource, composed asChainTaxRateSource(feed → static fallback)whentax.eu_vat.enabled. Static snapshot stays the zero-config default. Reduced bands surface only from an operator-supplied category map. - US per-state SaaS taxability — a curated
StaticProductTaxability::unitedStatesSaas()map covering 40 states where two dated authoritative compilations (TaxJar + Anrok) agree, each cited in docs. The 7 conflicting/partial/home-rule states are deliberately left for the operator to configure. - US economic-nexus thresholds — a cited
StaticNexusThresholdstable (Sales Tax Institute) with AND/OR combinators;UsSalesTaxRegimeflags a likely obligation but nexus is still asserted by explicit registration.
Everything sourced from primary/authoritative references; undetermined jurisdictions are omitted (operator-owned), never invented. US rooftop/local rates still not shipped (documented).
v0.1.2
Backward-compatible tax-correctness additions (stays within consumers' ^0.1).
- EU OSS €10k threshold sourcing (Art. 59c): a below-threshold, non-opted single-Member-State seller charges origin VAT on cross-border B2C; opted-in/over-threshold charges destination. Deny-by-default → destination.
- Category-aware reduced-rate resolution: the rate-source now honors
TaxCategoryand can resolve aRateBand(reduced/zero) when the bound source supplies one. No national reduced-rate data is fabricated — bands are source-driven. - Per-subdivision return aggregation: returns group by country + subdivision (US state) and per-member-state (EU OSS), so a
TaxReturncan drive a real filing. TedbRateSource(config-driven,TAX_TEDB_URL): reads a documented TEDB-derived dataset shape, auto-composed asChainTaxRateSource(TEDB → static)only when configured. No endpoint hardcoded.- Honest US docs: US is marked LOGIC-ONLY / not production-ready — per-state SaaS taxability, rooftop local rates, and nexus thresholds require real datasets before invoicing US customers.
Additive/backward-compatible: SellerRegistrations gained an optional $oss; no consumer signature broke.
v0.1.1 — Laravel 13 requirement fix
Corrects the framework constraint to Laravel 13 (illuminate/* ^13.0). The ^12 claim in v0.1.0 was not installable: brick/money ^0.14 requires brick/math >=0.15 (RoundingMode enum) while Laravel 12 caps brick/math at ^0.14. No API changes. CI now runs the PHP 8.4/8.5 x Laravel 13 matrix.
v0.1.0 — self-hostable global tax engine
First release of Cbox Tax — a self-hostable consumption-tax engine for Laravel that owns the calculation logic and sources only rate data behind pluggable contracts. Built on cboxdk/laravel-geo.
Coverage — ~52 jurisdictions, every rate primary-source verified
- EU VAT (27, Art. 44/45/58 + intra-EU B2B reverse charge)
- National VAT/GST: UK, CH, NO, AU, NZ, MX, Singapore, Taiwan, UAE, Saudi Arabia, Bahrain, Oman, Türkiye, Chile, Indonesia, Vietnam, Philippines, Japan, South Korea, Thailand, Ukraine
- India (dual GST — IGST vs CGST+SGST, OIDAR)
- Malaysia (SST — charges B2B+B2C, no reverse charge)
- US sales tax (nexus + per-state taxability + state/rooftop rate) and Canada (province-level)
We omit rather than ship an unverified rate — see docs/coverage for the honest not-yet-supported list (China, Argentina, Pakistan provinces, and a rate-known/mechanics-pending batch).
Capabilities
- Multi-entity / seller-of-record routing (tax = f(seller registrations, buyer, product))
- Reverse-charge with VAT-ID validation (VIES · HMRC · ABN), fail-safe on outage
- Address geocoding (Geocodio) for US rooftop resolution
- Composable rate sources (static · remote feed · caching · chain)
- Return-data aggregation for filing
- Deny-by-default throughout: unmodelled jurisdiction or missing rate → refuse, never a silent 0%
Quality
PHP ^8.4 · Laravel ^12 || ^13. Gate green: pint · phpstan level max · 50 tests · license-check · CycloneDX SBOM · composer audit.
Status: early / pre-1.0. Rates are illustrative defaults unless a live source is bound; external adapters (VIES/HMRC/ABN/Geocodio/remote feeds) implement documented shapes — verify against the live services before production.