A delivery fee should cover the real cost of one truck's trip: driver wages for the round trip, fuel for the miles driven, wear on the truck, a slice of your commercial insurance, and an allowance for the runs that go wrong, like the second trip out when the jobsite gate is locked and nobody answers the phone. A fuel surcharge sits on top of that fee and moves with the weekly diesel price, so you don't have to reprint your fee schedule every time fuel jumps. Set the fee to cover your cost on a normal week, and let the surcharge absorb the abnormal ones.

What one delivery run costs you

Most owners underestimate the run because they count fuel and forget the rest. The driver's clock keeps running while the boom is offloading, while the forklift at the yard loads the pallet, and while everyone waits on the contractor to show up and sign. The truck itself is spending money parked, since tires, brakes, oil changes, and depreciation all track miles, not hours at the counter. And commercial insurance is a real annual bill that exists because the truck makes runs at all, so every run should carry its share.

Then there's the failed run. The gate is locked, the customer swears they said Friday, the jobsite foreman won't accept a partial. You pay the whole cost of that trip and get to pay it again tomorrow. It doesn't happen often, but it happens, and a small allowance spread across every run keeps it from coming out of your margin.

Common ways stores set a delivery fee

There's no single right structure, and plenty of stores mix two of them. The flat local fee is the simplest: one price inside your normal trading area, quoted at the counter without a map. It works when most of your runs are similar distances, like a hardware store dropping contractor orders across town.

Zones by distance fit yards with a wider footprint. You draw two or three rings around the store, price each ring off your cost per mile, and the counter can quote from the wall map in five seconds. Per-mile pricing is the most precise and the most annoying, since somebody has to figure the round-trip distance on every quote, so it's usually saved for the long runs outside your zones.

A minimum order for free delivery is a margin decision dressed up as a fee policy. If a $500 materials order carries enough margin to absorb a $60 run, waiving the fee can win you the whole order instead of the customer's pickup truck. And a fee by load size matches the fee to the equipment: a pallet dropped off the tailgate costs less than a boom truck placing drywall on the second floor, and the price should say so.

A worked example with small store numbers

Here is an illustrative run. Say your flatbed runs 60 miles round trip to a jobsite, takes two and a half hours door to door, and your driver costs you $22 an hour loaded. Here's the full cost of that one run:

Cost item How to figure it Cost per run
Driver time 2.5 hours at $22/hour $55.00
Fuel 60 miles at 8 mpg, diesel at $4.00/gal $30.00
Truck wear 60 miles at $0.40/mile $24.00
Insurance $6,000 annual policy over 600 runs $10.00
Failed-trip allowance one wasted run in 20, spread out $6.00
Total $125.00

That works out to roughly $2.08 per round-trip mile. Short runs still carry the fixed time of loading and unloading, so treat the per-mile number as a floor on Zone 1 rather than the whole story. Now build zones off it:

  • Zone 1, up to 20 round-trip miles: cost about $42, charge $45 to $49.
  • Zone 2, 20 to 40 round-trip miles: cost about $83, charge $85 to $89.
  • Zone 3, 40 to 60 round-trip miles: cost about $125, charge $125 to $129.
  • Beyond Zone 3: quote it per mile at $2.50, since long runs deserve a second look anyway.

A lumber yard delivering to jobsites and a feed store running a Tuesday farm route can use the same math, since a route with six stops is one run's cost divided six ways, plus a little for the extra time at each gate. Your numbers will differ, but the shape won't: figure the cost of one honest run, then price to cover it.

How to build a fuel surcharge

A fuel surcharge is a small, temporary add-on that appears when diesel climbs past a price you chose in advance, and disappears when it falls back. Contractors see surcharges on every freight bill they get, so one on your delivery ticket won't shock anyone, as long as it's a separate line and not a quiet bump folded into the fee.

Here's the build, one step at a time:

  1. Pick a base diesel price. This is the price baked into your regular delivery fee, the level where you charge no surcharge at all. If you set your fees when diesel was around $3.50, that's your base.
  2. Look up the current price weekly. The U.S. Energy Information Administration's Gasoline and Diesel Fuel Update publishes retail on-highway diesel prices every week, for the national average and for regions like the Midwest, Gulf Coast, and West Coast, plus selected states and cities. Many freight fuel surcharges reference this weekly number, so your contractors may recognize the source. Check your region's price each week, and let that number apply until the next release.
  3. Add the surcharge when the current price moves above the base, using either a step table or a per-mile formula.

The per-mile formula is the tidy version:

(current price − base price) ÷ truck miles per gallon × round-trip miles

At a base of $3.50, a weekly average of $4.25, a truck getting 8 mpg, and a 60-mile run, that's ($4.25 − $3.50) ÷ 8 × 60, which comes to $5.63. Call it $6 on the ticket and move on with your day. That's fuel for thought: the surcharge on a local run is usually single-digit dollars, which is exactly why a separate small line beats rebuilding your whole fee schedule twice a year.

If you'd rather not do the division at the counter, use a step table. This one is illustrative only, so plug in your own base price and truck numbers before you post it:

Weekly EIA regional diesel average Surcharge per local run
At or below $3.50 $0
$3.51 to $4.00 $5
$4.01 to $4.50 $10
$4.51 to $5.00 $15
Above $5.00 $20, plus $5 per additional $0.50

Whichever you pick, write down the base price, the source, and the table on one page, and tape it by the register. The day a customer questions the surcharge, pointing at a published schedule ends the conversation politely.

Put the fee and the surcharge on their own lines

Contractors budget jobs off your quotes, and a delivery charge that appears for the first time on the invoice is a small ambush. Quote the delivery fee and any fuel surcharge as separate lines, with plain labels like "Delivery, Zone 2" and "Fuel surcharge," so the customer can drop them straight into their job costing. If you're tightening up how your quotes read, our guide to quotes and estimates for contractors walks through the full document.

Keep the same separate lines all the way through: quote, sale, invoice, and the month-end statement for charge account customers. Consistency matters because the same lines also appear on the paperwork that travels with the truck, and our guide to pick tickets, packing slips, and bills of lading covers which document carries pricing and which never should. The pick ticket your yard hand pulls from has no prices on it, the packing slip in the pallet wrap lists what shipped, and the invoice is where the fee lines live.

Sales tax on delivery charges: it depends on your state

Whether you collect sales tax on a delivery fee is a state-by-state question, and the answers differ, so treat the two examples below as proof that you need to check your own state, not as a national rule.

In Texas, delivery charges connected to a taxable sale are taxable, full stop. The Texas Comptroller's guidance says, "Delivery and shipping charges connected with taxable items or services sold are taxable," and gives the example of a $500 sofa with a separate $50 delivery fee: "You must collect sales tax on $550." The flip side is that if your customer hands you a valid resale or exemption certificate, "the delivery charge is also exempt," which is one more reason to keep those certificates organized. Our guide to resale and tax exemption certificates for contractors covers how to collect and store them.

In California, the rules split shipping from handling. Under CDTFA Publication 100, shipping charges "may not be taxable," while handling charges are taxable. There's a record-keeping catch worth knowing: "If you do not keep records showing the actual cost of an individual delivery, tax applies to your entire delivery charge if it is made in connection with a taxable sale." So keeping records of what each delivery costs you, and labeling shipping and handling as separate charges, can change how much of the fee is taxed.

Two states, two different answers, and every other state and province writes its own rule. Check your own state before you change how you tax delivery.

Don't forget the freight coming the other direction

Everything above covers what you charge going out. Your vendors are running the same math coming in, and the freight and fuel surcharges on your inbound purchase orders are part of what each item costs you on the shelf. If those charges sit in a general "freight" expense account instead of landing on the items, your margins on delivered goods look fatter than they are. Our guide to landed cost for retail inventory shows how to spread inbound freight and surcharges across the products on the shipment, so we won't repeat it here.

Running deliveries in Rundoo

Rundoo handles the logistics side of the run. You schedule the delivery from the sale, at checkout or after, and a delivery in Rundoo is one truck's trip, with each address on it counted as a stop. Drivers with the Deliveries permission run their stops in the Staff App, your customers get an email or text when the delivery is scheduled, being prepared, on its way, and delivered, and Dooey can build a delivery from a list of sales with the stops already in drive order. A Deliveries report shows status, driver, and stops when you want to see the week at a glance.

One thing to know plainly: Rundoo does not calculate delivery fees or fuel surcharges automatically. The zone table and surcharge schedule above stay yours to set and apply, and the scheduling, driver, and customer-text side is on our deliveries page.