Tax: the filing documents, built from the work you already did
Nobody starts a business because they love tax filings. The tax module exists to make the filing documents assemble themselves from the transactions the rest of your workspace already recorded — so tax season is a review, not an excavation.
What it builds
Sales-tax liability reports per agency and period, from your real sales — with a record-as-filed close that locks the numbers once you've filed, so the report you filed is the report you keep. The P&L with tax-line mapping — Schedule C categories for the sole proprietors — built to full cash-out including tax paid on expenses. 1099 packets: per-year threshold logic, W-9 flags on the contractors who haven't handed theirs over, and totals that know the $600 line from the $2,000 one. Depreciation schedules — straight-line and MACRS — for the equipment your asset manager tracks. The estimated-tax worksheet for quarterly payments. A VAT/GST return in the nine-box format for the teams on that side of the fence. And for your bookkeeper, trial-balance and general-ledger CSVs that import cleanly.
Where the transactions come from
You don't enter them twice. Sales flow in from catalog orders; purchase-side VAT from acquisition invoices; depreciation from assets; contract labor from workforce; and the subscriptions module pushes its recurring charges through a dedicated write-off seam — idempotent, so a replayed sync can't double-count a single charge. External tax engines (TaxJar, Stripe Tax) connect as calculation adapters if you want live rates, but the system of record stays here either way.
One honesty note: tax calculation at order checkout is a documented follow-up — today's order tax is a derived estimate rather than a live calculation at purchase time. The calculate API exists and the engine is real; I'd rather tell you that than let you assume otherwise.
The deadline anxiety reducer
The estimated-tax worksheet deserves its own sentence. Self-employed people get blindsided by quarterly payments not because the math is hard but because the inputs live in six places. Here they live in one, and the worksheet recomputes from them — which turns "how much should I set aside" from a quarterly panic into a glance.
What I do here
I'm the interpreter. "What did we spend on materials last quarter" is a question I can answer from the transactions; "is this deductible" is one I'll point at the P&L line and your accountant, in that order. The module computes; the human decides; I fetch.
For the machine side of the house there's a calculation API — single lines or batches up to five hundred — running over the same rate engine the reports use, with per-line errors reported per-line instead of failing the whole batch. Whether the caller is an internal surface or your own integration, the numbers come from one engine, so the API and the reports cannot disagree.
The filing close matters more than it sounds: once a period is recorded as filed, the report locks, so a late-arriving transaction can't silently rewrite history you've already signed. Corrections happen in the next period, where corrections belong.
Related: the inputs come from everywhere — depreciation from the asset manager, purchase-side VAT from acquisition, and subscription write-offs from subscriptions.
How this compares
Tax season, for most small businesses, is a folder of exports: a spreadsheet here, an accountant-ready CSV there, a shoebox of 1099s. Bookkeeping apps like QuickBooks produce reports, and e-commerce sellers know TaxJar for automated sales tax — legitimate tools, each covering a slice. The slices rarely reconcile, because the underlying data lives in different systems that were never designed to agree.
This module is reporting-first over the records your workspace already has. Agency-level sales-tax liability reports with a record-as-filed lock, a P&L with Schedule C tax-line mapping, 1099 packets with threshold flags, MACRS and straight-line depreciation schedules, estimated-tax worksheets, a nine-box VAT return, and trial-balance and general-ledger CSVs for your accountant. Sales side and purchase side both land here — invoices from billing, acquisition invoices as input VAT, depreciation from the asset registry, contract labor from workforce — so the returns are assembled, not excavated. Connectors to TaxJar and Stripe Tax exist for automated calculation when you want it, with your workspace staying the system of record. No refunds, no magic: just your numbers, organized the way the filing asks for them.
Try it
Tax lives under Tax in your sidebar. Open the P&L for this year, look at the Schedule C mapping, and then look at the 1099 packet with the W-9 flags. If you've been running the other modules, the documents are already mostly built — that's the point.
