How to price B2B same-day delivery in the GTA, Vancouver and Montréal
A step-by-step method for setting same-day courier prices from your own costs, then turning them into zones, service levels, fuel surcharges and waiting-time charges for Canada's three biggest metros.
6 min read

"What should I charge for a same-day delivery in Toronto?" There is no honest single answer. It depends on your costs, your drivers, your vehicles, your customers and what your competitors are doing this month. Anyone who quotes you a market rate without knowing those is guessing.
What we can give you is the method. The takeaway: price from your cost per productive minute, not from the kilometre, then check the result against the market rather than starting from it. Every number below is an illustrative example, not a market rate; replace each one with your own.
Step 1: Work out your cost per driver hour
Start with what an hour of a driver on the road costs you.
- Employee drivers: hourly wage plus the employer's share of CPP or QPP and EI, vacation pay, workers' compensation premiums and any benefits.
- Contractor drivers: what you pay per job, converted to an hourly equivalent at a typical pace.
Then add utilisation. Drivers are not delivering for every paid minute: there are gaps between jobs, breaks and the drive back. If drivers are productive about 70 % of their paid time (an example; measure your own), your cost per productive hour is your hourly cost divided by 0.7.
Step 2: Add vehicle cost per kilometre
Fuel, insurance, maintenance, tires (including winter tires), depreciation or lease, and parking tickets if you are honest about downtown. Divide the yearly total by the kilometres driven. Cars, cargo vans and cube trucks will each have a very different figure.
Step 3: Add overhead per job
Dispatch staff, office, software, cargo insurance, accounting, marketing. Divide a month's overhead by a month's jobs to get a per-job amount.
Step 4: Cost two typical jobs
With the costs above, you can cost any job from its door-to-door time (including the drive to the pickup, the wait at each end and the drive itself) and its kilometres.
Example inputs, for illustration only:
| Input | Example value |
|---|---|
| Driver cost per productive hour | $32.00 |
| Vehicle cost per km | $0.40 |
| Overhead per job | $4.00 |
| Target margin on price | 20 % |
| Job A: downtown to downtown | Job B: suburb to downtown at rush hour | |
|---|---|---|
| Door-to-door time | 25 min | 70 min |
| Distance | 6 km | 30 km |
| Driver cost | 25 ÷ 60 × $32 = $13.33 | 70 ÷ 60 × $32 = $37.33 |
| Vehicle cost | 6 × $0.40 = $2.40 | 30 × $0.40 = $12.00 |
| Overhead | $4.00 | $4.00 |
| Total cost | $19.73 | $53.33 |
| Price for 20 % margin (cost ÷ 0.8) | $24.66 | $66.67 |
Two lessons from the example. First, time dominates: Job B is five times the distance but costs less than three times as much, while a slow downtown crossing can cost more than a quick suburban run. Second, a margin is not a markup: to keep 20 % of the price, divide cost by 0.8, do not multiply it by 1.2.
Step 5: Turn costs into zones
You cannot cost every job by hand, so group postal codes into zones and price each lane (pickup zone to delivery zone) from a typical door-to-door time at a typical time of day.
How the three metros tend to break down:
- Greater Toronto Area. Toronto postal codes start with M; the surrounding region (Mississauga, Brampton, Vaughan, Markham and beyond) starts with L. A downtown core zone, mid-town and inner suburbs, and outer-905 zones is a common starting shape. Lanes that cross the core at rush hour deserve their own price. If drivers use Highway 407, its tolls are a real cost; price them or ban them.
- Metro Vancouver. Codes start with V. Water shapes the region: the bridges to the North Shore, Richmond and across the Fraser are where time disappears. Major Metro Vancouver bridges have not been tolled since 2017, so the cost is time, not tolls. Price lanes that cross water above those that do not, even at equal distance.
- Greater Montréal. Montréal island and Laval codes start with H; the South Shore (for example Longueuil) and North Shore suburbs often start with J. Bridges and tunnels onto and off the island are the bottleneck; the A25 and A30 have toll sections. If you serve Québec customers, also check your obligations under the Charter of the French Language for customer-facing documents such as quotes and invoices.
Start with fewer zones than you think you need. Merge any two zones that always end up with the same prices. Read Zone pricing explained for how zone tables work.
Step 6: Define service levels
Same-day is not one product. A typical B2B ladder:
- Direct or rush: a driver goes now, within a short promise. Highest price, because the job interrupts everything else.
- Same day: picked up and delivered before the end of the business day, booked before a cut-off.
- Scheduled or next day: lowest price, because it can be batched.
Each level is priced from the same costs, with less batching (and so more cost per job) the faster the promise.
Step 7: Add the adjustments
- Fuel surcharge. Set your base prices at a reference fuel price, then add a surcharge that moves in bands with a published index, such as the weekly average retail prices published by Natural Resources Canada. Publish the bands so customers can check them.
- Waiting time. Include a free allowance (often 10 to 15 minutes) and charge per started block after that, based on actual arrival and departure.
- Weight and size. A charge per kilogram over an allowance, using the greater of actual and dimensional weight for bulky parcels.
- After hours, weekends and statutory holidays. These cost more in pay; price them accordingly.
- Extra stops and return trips. A clear per-stop charge beats a vague "multi-drop" quote.
- Minimum charge. Protects you on very short jobs where the drive to the pickup is the real cost.
Step 8: Check against the market, and your customers
Now compare your prices with what you know of the market: lost quotes, what new customers say they paid before, published rate cards. If you are much higher, look at your costs and utilisation before cutting price. If you are much lower, you may be leaving margin on the table, or you may have found an efficient niche.
Then test the new rate card against last month's real orders before switching. Which customers would see the biggest changes? Talk to them first.
Contract rates for big accounts
Large B2B customers will ask for their own rates. Rather than inventing a new price list, start from the standard one and apply a discount or a customer-specific zone table, then check the margin on their actual job mix. A volume discount should be earned by volume that really lowers your cost per job, such as batched pickups from the same address.
How NemiRoute fits
NemiRoute's pricing engine is built for this method: zones from postal prefixes (three characters up to a full postal code), zone tables per service, price sets for each service level with cut-offs, and modifiers for fuel (fixed or from a fuel index you update weekly), waiting time charged on the actual wait, weight with dimensional weight, after hours, weekends, holidays from a Canadian business calendar, extra stops, return trips and a minimum charge. Customer discounts and contract rates sit on top. Price testing quotes a new price set against sample inputs or real orders side by side, without saving anything. If you run this as a same-day courier, every order keeps its price breakdown.
Next step
Fill in the example tables with your own numbers this week. Then start free and build one service as a price set, or book a demo. For the invoicing side, read GST, HST, QST and PST for courier companies.
- pricing
- same-day
- gta
- vancouver
- montreal
- fuel surcharge

