Overview
Cbox Tax
cboxdk/laravel-tax assesses consumption tax — VAT, GST, US sales tax — on a supply
or on a whole document. You send the facts of the sale; it answers with a treatment, a
rate, the authorities the tax splits across, and the published source it came from.
The mental model
your app ──► TaxQuery ──► regime (this package: place of supply, reverse charge,
│ registration, exemptions, rounding)
▼
the register (published data: rates, rules,
│ boundaries, provenance)
▼
TaxAssessment
The engine owns the logic. The register owns the data. Neither crosses into the other: the engine never invents a rate, and no rate table decides whether a supply is a reverse charge. Both halves sit behind contracts, so a host can replace either.
The register is compiled to local disk by php artisan tax:data:sync and read without
a network call — nothing is fetched while pricing. Jurisdictions come from
cboxdk/laravel-geo, so a supply is placed
against canonical ISO data rather than a country-name match.
Three answers, kept apart
The engine is built around a distinction most calculators collapse:
- A resolved zero — the place levies nothing, or the supply is zero-rated or exempt under a published band.
- A zero that is not yours to charge — a reverse charge, a marketplace's liability, or a country the seller is not registered in.
- Not determinable — an exception. No regime, no published rate, a rule the register says it has not modelled. Never a plausible number.
And between them, the honest middle: an answer that is probably right, flagged with what was missing and the one step that would close it.
Where to start
| Quickstart | Install the data, price a supply, read the result |
| Getting started | Installation, the register, testing, upgrading from 0.9 |
| Cookbook | A checkout, a marketplace sale, a backfill |
| Core concepts | Regimes, seller registrations, dates, exemptions, rounding, breakdowns |
| Coverage | What is modelled, what the register publishes, what is neither |
| Beta status | The data is in beta — what is guaranteed, and what stays yours |
| Extension points | Bind your own sources, geocoder, catalogue, resolvers |
| Decisions | Why particular places are modelled the way they are |