Money
Travel fees
A per-mile charge for jobs far from your yard: one rate, a free radius, a maximum, and road miles measured once per ZIP. Junk is one round trip; a dumpster rental is two, charged as one line.
This applies to both workflows
What are the two workflows?A travel fee is what you charge for the drive. It is worked out from road miles between your yard and the job's ZIP code, and it appears as its own line on the customer's price, the job and the invoice. Everything about it lives on one tab: Settings > Pricing > Travel. The switch that turns it on is under Settings > Platform > Features (Travel fees), and it is off until you turn it on.
Off means not computed
With the feature off there is no travel line anywhere: not on the form, not on a booking, not on an estimate. Nothing is hidden and waiting; the fee is simply never worked out. Turning it on measures your ZIPs first, and if that cannot be done the switch stays off and the screen tells you why.
The four settings
| Setting | What it does | Default |
|---|---|---|
| Yard ZIP code | Where the truck starts. Every distance is measured from here. Changing it re-measures every ZIP. | none -- required |
| Rate per mile | Applied to every billed mile, in both directions. | $1.00 |
| Free radius (miles) | ZIPs within this many one-way miles of the yard are included: no fee. | 10 miles |
| Maximum fee | Per job. The fee is clamped here after the rate is applied. A ZIP that hits it is marked capped in the table. | $150 |
There is one rate for every vertical. A dumpster rental costs more in travel than a junk pickup because it is two trips, not because it has a different rate.
How the fee is worked out
The formula, exactly as the product applies it:
billed miles = (one-way miles - free radius, floored at 0) x 2 x trips
fee = billed miles x rate per mile, clamped at the maximumStored miles are one way. The radius comes off first, then the round trip doubles it.
The two places people read this wrong
The free radius is subtracted BEFORE the doubling, because it is a distance from your yard, not a number of miles driven. A ZIP 40 miles out with a 10-mile radius bills 60 miles (30 beyond the radius, there and back), not 70. And the miles stored against each ZIP are ONE-WAY. The table on the Travel tab shows one-way miles in its own column and the fee beside it; the fee already includes the return.
A worked example, on the defaults
With the shipped defaults ($1.00 a mile, a 10-mile free radius, a $150 maximum):
| One-way miles | Junk removal (1 trip) | Dumpster rental (2 trips) |
|---|---|---|
| 8 | included -- inside the radius | included |
| 25 | 15 beyond the radius x 2 = 30 miles = $30 | 15 x 2 x 2 = 60 miles = $60 |
| 90 | 80 x 2 = 160 miles = $160, capped at $150 | 320 miles, capped at $150 |
How many trips a job is
| Job | Trips | Where the line appears |
|---|---|---|
| Junk removal | 1 | One line, Travel, on the job. |
| Dumpster rental (delivery and pickup) | 2 | One line, Travel, delivery and pickup, on the delivery trip. The pickup row carries no money, so both trips are charged together at checkout. |
| Swap, dump-and-return, relocate | 1 each | Its own Travel line on that trip's row. |
| Extending a rental | 0 | An extension creates no trip and no travel line. |
Where the customer sees it
- The junk quote form: + Travel: $30 under the price range for the ZIP they typed, then again on the booking review step and the confirmation.
- Estimates: a Travel row is added from the job's ZIP when you build one, and it goes to the job when the customer approves. Auto-estimate emails and texts carry the same label after the range.
- The dumpster checkout: a Travel, delivery and pickup line on Review & Pay, beside the dated trips, on your HaulHQ page, the WordPress widget and a booking you enter yourself.
- Invoices and receipts print the line as it sits on the job. It is taxable, like the dump fee, and its tax is worked out on its own so the totals add up.
Distances are measured once, not per quote
Road miles come from Google, once, when you configure, and are stored against each ZIP in your service area. No quote, booking, estimate or invoice ever calls out; the fee is arithmetic over the stored number, so it is fast and it is the same on every screen. Measuring happens when you save the yard ZIP, when you turn the feature on, and when you add or remove a ZIP on Settings > General. A ZIP added later is measured on that save. Re-measure on the Travel tab does the whole list again, and the tab shows when it last ran: *Priced 30 of 30 zips.*
The table recalculates as you type
The Fee by ZIP code table on the Travel tab recomputes on every keystroke, sorted most expensive first, with the priciest ZIP called out above it and a column per vertical. Until you press Save it is a preview, and the screen says so. Type until the number matches what a run actually costs you.
ZIPs that cannot be priced
- A ZIP on your list with no stored distance (measuring failed for it, or it was added and never measured) charges nothing, and the job's notes say so: *Travel fee not applied: no distance is stored for ZIP 85750. Re-measure in Pricing > Travel.* You can still add the fee by hand as a line item.
- A ZIP that is not on your service-area list changes nothing. No fee, no note. Serving it is your call when the lead arrives.
- A job with no ZIP at all charges nothing and says so in the notes.
- A service area built from cities with few ZIPs gets a warning when you enable, not a refusal: travel fees price by ZIP, so a cities-mostly area has little for them to work with. Add the ZIPs you serve under Settings > General.
Turning the feature on is refused, with the reason on screen, when there is no yard ZIP or no US ZIP in your service area (travel fees are US-only). An entry that is not a ZIP, such as several ZIPs pasted into one line, is named so you can fix it.
Waiving it on one job
The travel line is a line item like any other. Delete it on the job and the totals recompute without it. That is a decision you make per job; the setting stays on for the next one.
Common mistakes
"The radius is 10 miles and a 40-mile ZIP is billing 60 miles. It should be 70."
The radius comes off the one-way distance before the round trip is doubled: (40 - 10) x 2 = 60. It is a distance from your yard, so it is taken off once, not once each way.
"I want a higher rate for dumpsters than for junk."
There is one rate. A rental already bills two trips to a junk job's one, so a 25-mile rental pays double the travel of a 25-mile pickup at the same rate.
"I added a ZIP to my service area and jobs there have no travel fee."
Check the job's notes for *no distance is stored for ZIP*. Saving the ZIP list on Settings > General measures new ZIPs; if that failed, press Re-measure on the Travel tab. Until a distance is stored the ZIP charges nothing rather than guessing.
"My service area is cities, and the Travel tab has almost nothing in its table."
Travel fees price by ZIP code. Enabling on a cities-mostly area warns you for exactly this reason. Add the ZIPs you serve under Settings > General and they will be measured and priced.
"The table says 25 miles but the fee looks like it is for 30 or 60."
The miles column is one way. The fee column already includes the return trip and, for a rental, both trips. 25 one-way miles with a 10-mile radius is 30 billed miles for junk and 60 for a rental.
"A travel fee is showing on an extension."
It cannot be. Extending a rental creates no trip. If a rental shows a travel line, it is the delivery row's Travel, delivery and pickup line, which covers both trips of the rental at booking.