Cockroach Treatment Pricing Calculator: what to charge per unit
Price a German roach cleanout and its follow-ups from your own numbers: units opened, time per unit, crew size, drive time, product cost, a per-unit floor and a margin check.
How this is calculated
The program is a straight build-up from the doors you open and the time you enter. Three things behave deliberately: per-unit times are per technician and crew size multiplies them, drive time is counted once for every visit in the program, and in a multi-unit building the units you price are the reported units plus their ring of neighbours.
treatedUnits = min(reported + reported × adjacentPerReport, buildingUnits)
(the buildingUnits cap applies only when you enter one)
visits = 1 + followUpVisits
initialTech = treatedUnits × (inspectHours + treatHours)
followTech = treatedUnits × followUpHours × followUpVisits
onSiteCrew = (initialTech + followTech) × crewSize
driveCrew = drivePerVisit × crewSize × visits
billedDrive = driveCrew × driveBillPct%
labour = (onSiteCrew + billedDrive) × chargeRate × (1 + outOfHours*)
(*kitchen setting only)
product = productPerUnitVisit × treatedUnits × visits × (1 + markup)
subtotal = labour + product
program = max(subtotal, jobMinimum, perUnitMinimum × treatedUnits)
perUnit = program ÷ treatedUnits
cost = (onSiteCrew + driveCrew) × costRate + productAtCost
margin = (program − cost) ÷ program Worked example. Three units report roaches in an apartment building, two neighbours are opened per report, so nine doors are priced. At 15 minutes to inspect and 45 to treat, that is 9 technician-hours on the cleanout; two follow-ups at half an hour a unit add 9 more; a crew of two turns 18 technician-hours into 36 crew-hours. A half-hour round trip across three visits adds 3 paid crew-hours that nobody is billing. At a charge-out rate of 85 a crew-hour the labour is 3,060, product at 6 a unit per visit is 162 at cost and 194.40 with 20 percent on it, so the program is 3,254.40 before tax, or 361.60 a door, returning 83.45 per paid crew-hour once the windshield time is counted.
No price presets anywhere. Every currency field starts empty. The only pre-filled numbers are the per-unit times, the adjacency ring and the follow-up count, and all of them sit in editable boxes. They are a scoping starting point, not a benchmark, and the numbers you replace them with are the ones that matter.
Why the ring exists. In a shared structure, a German cockroach problem is a building problem rather than a unit problem, so pricing only the door that complained prices only part of the job you will end up doing. The ring is an editable input, not a rule: set it to zero if you genuinely treat one unit, and the tool will say plainly that you did.
The margin check prices the cleanout only. When you quote an ongoing plan alongside it, the plan total is reported separately, because the plan carries a delivery cost you have not entered here and counting its revenue without its cost would manufacture margin out of nothing. The check is also all-or-nothing: with no cost per crew-hour the labour half of the cost is unknown, so the block simply does not appear.
This page prices, it does not dose. Nothing here describes, sequences or quantifies a product. Placement counts and grams of gel belong in the cockroach gel bait calculator, worked against the label in front of you; the customer-facing prep instructions belong on the cockroach treatment prep sheet. Bring the cost back here as one line.
Everything runs in your browser. No account, no email gate, nothing stored or sent.
What this prices, and what it deliberately does not
This page is the pricing rung of the cockroach entity, and it does exactly one job: turn a roach complaint into a program price you can defend. It does not dose, it does not sequence a treatment, and it does not tell you what to put where. Placement counts, grams of gel and tubes to buy live in the cockroach gel bait calculator, which is where that arithmetic belongs, against the label in front of you. Here, product is a single cost line: what the load-out cost you, per unit, per visit.
The customer half of the job is a separate document. What the occupant has to do before you arrive, and what happens if they do not, prints from the cockroach treatment prep sheet. Prep failure is the most common reason a priced-in follow-up turns into a third and fourth visit, so the handout is worth more to your margin than any line on this page.
Every money field starts empty on purpose
Search for the price of a roach treatment and you will find plenty of numbers. Follow their citations and they resolve to retailer blogs and lead-generation directories quoting each other: no regulator, no trade body, no published survey. Under this site’s cite-or-omit rule that means the tool ships with none of them, and no average was invented to fill the gap. What it gives you instead is the shape of the quote, with every currency field blank until you fill it.
The only pre-filled numbers anywhere are the per-unit times, the adjacency ring and the follow-up count, and all of them sit in editable boxes. They are a scoping starting point, not a benchmark. Overwrite them after your first few timed jobs. If you have not yet set a defensible number to type into the rate box, the service hourly rate calculator and the labor burden rate calculator are the two places that number comes from.
The doors you open are not the doors that called
This is the structural difference between a roach quote and a general pest quote. In a multi-unit building, treating only the unit that complained leaves the neighbouring units seeded, and the re-infestation comes back to you as a callback rather than a new job. So the tool prices the ring: for each unit that reported, it adds the neighbours you intend to open as well, caps the total at the building’s real door count, and shows you the number it is pricing before it shows you a price.
Set the ring to zero and nothing is hidden from you. The calculation respects it and the result says, in plain words, that only the reporting units are priced. That is the point of making it an input rather than a rule.
Drive time is counted once for every visit
A cleanout is not one trip. It is a trip, then another trip, then usually a third, and the windshield time repeats every time. Most operators bill none of it, so most cleanout quotes lose it entirely. This tool refuses to: drive hours always land in your cost, because you pay the crew for them regardless, while only the share you nominate lands in the charge. The result is a per-paid-crew-hour figure that counts the whole program, which is usually the number that explains why a busy month of roach work felt thin.
From a one-off cleanout to an account
A cleanout that ends when the roaches do is a job. A cleanout that ends with the customer on a plan is an account, and the difference shows up in the annual value rather than the invoice. Tick the plan box, enter your monthly number and the term, and the tool reports the first-term total alongside the cleanout. What it will not do is fold the plan into the margin check, because the plan carries a delivery cost you have not entered and counting its revenue without its cost would flatter the number.
Which plan shape to sell is a separate question. The recurring plan comparator puts monthly, bi-monthly and quarterly side by side on annual value and visit cost, so you can see what the frequency is actually worth before you quote it. And if you are pricing a mixed pest account rather than a roach cleanout specifically, the pest control pricing calculator is the broader tool.
Turn the number into a document
When the program settles, it still has to become something the customer can accept. Move it into the pest control estimate template, where the treated-unit count becomes the scope of work, and the pest control service agreement is what gets signed if the plan goes with it.
Everything runs in your browser: no account, no email gate, nothing stored or sent. Estimate only, not a binding quote.