Give each job its site address and tax jurisdictions once. From then on, every hour your crew clocks lands in the place it was worked, sales tax follows the job onto the invoice, and your bookkeeper or payroll provider gets reports already split by state and city.
Read the step-by-step how-to guide →
Jurisdiction names are the ones you create. Each punch records its job's jurisdiction at clock-in. You and your adviser decide which taxes apply in each place.
Cross a city line or a state line and the tax picture can change with it. The city, county, or state where a job sits can have its own earnings tax, sales tax, gross receipts tax, or business activity tax. None of that cares where your shop is.
Most crews track one thing: the hours. Then somebody in the office rebuilds where those hours happened from memory, a calendar, or a stack of timecards, and types the sales tax onto each invoice by hand. That's where money leaks. Tax withheld for the wrong city. Sales tax at the wrong rate. A quarter-end scramble to figure out what was earned where.
BD Project Tools puts the answer on the job. Set the job's site address and its jurisdictions once, and every punch, estimate, and invoice on that job carries them. Your bookkeeper or payroll provider gets numbers already split by place.
Setup happens once, on a computer. After that your crew clocks in on their phones like always, and the office runs the reports when your bookkeeper asks.
In Setup > Tax Jurisdictions, add each place: a state, narrowed to a city, county, school district, or special district when a local tax applies. Name it the way you want it on reports, like "OH - Blue Ash," then list the taxes that place levies.
On the job's Tax & Jurisdiction panel, enter the site address and pick the Payroll / work location. Sales tax, Income / apportionment, Gross receipts, and Business activity follow it automatically, so most jobs take one pick. Override any of the four when that tax is owed somewhere else.
Each punch records the job's jurisdiction and the worker's wage at clock-in, with GPS. Move to another job mid-day and the current entry closes and a new one opens on the new job, with that job's jurisdiction.
For the one entry worked somewhere other than the job's usual place, set its jurisdiction in that entry's Jurisdiction & Work panel. The job stays untouched. Hours with no jurisdiction show under Review Needed instead of quietly disappearing.
A new estimate picks up the job's sales tax jurisdiction and rate. The invoice re-checks the rate as of the invoice date. When you review and push it to QuickBooks Online, collected tax goes to the liability account you chose.
From Reports, run Payroll by Jurisdiction and Revenue & Sales Tax by Jurisdiction for any date range, export to Excel, and send them to your bookkeeper, payroll provider, or tax adviser.
All of it is part of the full platform on every plan. Field punches happen on a phone; the setup and reports are built for a computer or large tablet. Click any screenshot to enlarge it.
Every job has a site address (street, city, county, state, ZIP, and whether it sits inside city limits) and five jurisdiction slots, using the app's own labels:
The last four inherit the first unless you override one. Once saved, a Triggers line on the panel names the location-based taxes the job sets off, such as Local earnings tax, Sales tax, or Gross receipts tax. Tick Real property improvement on a job in a place with a contractor excise tax, and Contractor excise tax shows up there too.
Nothing is hardcoded to one state. For each place, pick the taxes it levies from the app's list and add a rate where one applies:
The name you give a place ("OH - Cincinnati (Hamilton Co.)") is the label on every report. Every tax and rate change is recorded with the old and new values.
The Payroll by Jurisdiction report breaks hours and gross wages down by state, then local jurisdiction, then employee. In the example above, that's 24 hours under Cincinnati and 16 under Covington, not 40 under wherever the shop is.
It's an allocation report for your bookkeeper or payroll provider. They still do the filing from your payroll provider and QuickBooks Online.
Nobody re-types a rate. The job's sales tax jurisdiction (or its work location, if you didn't set a separate one) flows onto each new estimate, and the invoice binds the rate in force on the invoice date.
The Revenue & Sales Tax by Jurisdiction report gives you two views:
On QuickBooks Automated Sales Tax? Talk to us first. BD Project Tools holds taxed invoices back instead of posting them to a company on Automated Sales Tax.
The Revenue by Income Jurisdiction view lists contract, invoiced, collected, and direct labor for each place you work, with a total for each state. Revenue that isn't tagged to a place shows as Unassigned, so it stays in the totals where you can see it.
Run it for any date range and export it to Excel for your accountant's apportionment schedule. It reports the numbers; it doesn't compute apportioned income tax.
A jurisdiction report is only as good as the hours under it. These are the pieces that keep those hours honest.
Your crew clocks in on their phones in Timekeeper. Each entry shows how far the clock-in was from the job site, and entries past the distance threshold are flagged for review. The entry's map shows the job, the clock-in, and the clock-out.
Each time entry keeps the wage and jurisdiction in force when it was clocked. Give someone a raise from $26 to $28 on the 15th, and the hours they worked on the 10th stay at $26, in the place they were worked.
Switch jobs mid-day and the open entry closes and a new one opens on the new job in one step. Forgot to switch? The office can split the shift with Add Unpaid Time, which removes the gap between the two jobs, and set the second entry's jurisdiction.
Once the hours are keyed into your provider, close the period on the Payroll Periods page. Entries inside it can't be edited, deleted, or split, so later reports keep matching what was paid. Re-opening takes a written reason.
If a time entry changes after the export that covered it, the Payroll Periods page tells you how many entries no longer match the file that went out, so you can re-run it before anyone files.
Owners and office staff clock in, change job, and clock out from the My Time card on the admin dashboard. Same punch rules as the field app, so their hours land in the same jurisdiction reports.
BD Project Tools prepares the numbers. It doesn't file anything, and it doesn't decide what you owe.
You and your accountant or tax adviser decide which places and taxes apply. BD Project Tools applies that setup to every hour and every invoice, and your payroll provider, bookkeeper, and QuickBooks Online still do the filing.
If any of these sound like your week, this is the part of BD Project Tools you'll lean on most.
Your shop is near a border and your jobs land on both sides of it. You need hours and sales tax split by where the job sits, not where the truck parks at night.
You work in cities, counties, or school districts that levy their own earnings or business taxes. You want each job tied to the right one without a spreadsheet on the side.
Some of your jobs carry sales tax and some don't, and the rate depends on where the job is. You want the rate you set for each place to land on the invoice without anyone re-typing it.
Your bookkeeper, payroll provider, or CPA asks every quarter what was earned and worked where. You want to hand them an Excel file instead of an afternoon of questions.
The questions owners and office managers ask before they hand these reports to their bookkeeper.
Tax jurisdictions, per-job sales tax, and jurisdiction reports are included with every Best Decision Project Tools subscription. No add-on, no premium tier.
Read the step-by-step how-to guide →
USA 250 Early Adopter Rate: 25% off your base plan through December 31, 2026. Full platform on every plan, plans from $99 $74.25/mo. Your USA 250 rate is locked for your subscription as long as your account stays active and in good standing.