"How much does it cost to transport a shipping container?" has three different answers depending on what you mean. A local drayage move — pulling a container from the rail terminal to a GTA warehouse — is a few hundred dollars plus time-based fees. An ocean shipment of a full container from Toronto to Europe or Asia is a few thousand, built from a dozen components. And an LCL shipment of a few pallets is priced per cubic metre with fixed charges at each end that make small shipments expensive per unit.
This guide breaks down all three as they are quoted for containers moving through the Greater Toronto Area. Prices move with fuel, season and carrier capacity, so we show the structure and the relative size of each line rather than a rate card that would be out of date by the time you read it. For a current quote, see ocean freight FCL & LCL or container drayage Toronto.
Part 1: Local container drayage costs in the GTA
Drayage is the truck move between the rail terminal or port and your facility. In the GTA that means CN Brampton (BIT), CPKC Vaughan, CN Malport or the Port of Toronto. The quote has a base rate for the lane — terminal to delivery zone — with the tractor, driver, standard chassis and one delivery included. Short moves inside the GTA sit at the low end; deliveries to Hamilton, Kitchener–Waterloo, Barrie or London sit at the high end and often cost more than a transload plus a regular truck.
On top of the base: a fuel surcharge as a percentage; chassis days beyond the included allowance; wait time past the free live-unload window (usually one to two hours); a tri-axle surcharge for overweight containers; a hazmat surcharge for placarded dangerous goods; a pre-pull and yard storage charge if the container is pulled early and held; a second trip for drop-and-pick; and terminal fees and tolls at cost. A well-run import in the GTA pays the base, fuel and little else. A badly run one pays every line.
| Drayage component | Basis | Typical share of a clean move |
|---|---|---|
| Base rate (terminal → zone) | Per move | The bulk of the invoice |
| Fuel surcharge | % of base | Adds a fixed percentage |
| Chassis beyond allowance | Per day | Zero on a clean move |
| Wait time | Per hour after free window | Zero if the dock is ready |
| Tri-axle / hazmat | Flat surcharge | Only when applicable |
| Pre-pull + yard | Flat + per day | Cheaper than terminal storage |
| Terminal fees, tolls | At cost | Small |
The time-based fees that double a drayage bill
The charges that surprise importers are not on the drayage carrier's rate sheet at all. Terminal storage (demurrage) starts when the railway's free time expires — typically two to three business days after the container becomes available at BIT or Vaughan — and runs daily until the box is pulled. Container per-diem (detention) is the ocean carrier's daily charge for the container from the day it leaves the terminal until the empty is returned, after a short free period. Chassis days accrue for as long as the container sits on a chassis anywhere.
A container that waits five days at the terminal, four days at a receiver's yard and goes back late pays all three, and the total can exceed the drayage rate several times over. Avoiding it is mostly scheduling — pull on time, unload promptly, return promptly — and, when the receiver's dock cannot cooperate, transloading at a warehouse so the empty goes back the same day. We wrote a plain-language explainer: what is drayage?
Rule of thumb for GTA imports: if a container will sit more than three days waiting for a dock, transload it. The transload fee is almost always less than storage plus per-diem plus chassis.
Part 2: What a full-container (FCL) ocean shipment costs
An FCL quote from Toronto is a stack of charges from different parties, and understanding it is the difference between comparing forwarders and comparing headline numbers. From the origin side: pickup or delivery to the forwarder's warehouse; receiving and any packing, crating or palletizing; container loading, blocking and bracing; drayage from the warehouse to the rail terminal; the rail leg to Montreal, Halifax, Vancouver or Prince Rupert (often bundled by the carrier as "carrier haulage"); the origin terminal handling charge (OTHC) at the port; the export declaration and documentation / bill of lading fee; and the VGM submission.
Then the ocean freight itself — the largest single line — with its surcharges: bunker adjustment (BAF) for fuel, peak season surcharge (PSS) from roughly August to October and before Lunar New Year, currency adjustment (CAF) on some trades, and emergency or congestion surcharges when carriers impose them. At destination: destination terminal handling (DTHC), delivery order and release fees, customs clearance by the broker, and the final delivery. Duty and tax at destination are the importer's and sit outside the freight quote.
| FCL cost component | Charged by | Notes |
|---|---|---|
| Pickup, receiving, packing, loading | Forwarder / warehouse | Larger if crating or floor-loading is needed |
| Drayage to rail terminal | Drayage carrier | Short from a North York or Brampton-area warehouse |
| Rail to port | Railway via carrier | 1–2 days to Montreal, 5–7 to Vancouver |
| Origin THC | Port terminal | Per container |
| Ocean freight + BAF/PSS/CAF | Steamship line | Largest line; moves with season and capacity |
| Documentation, B/L, VGM, CERS | Forwarder / carrier | Fixed fees |
| Destination THC, release, D/O | Destination terminal / agent | Per container |
| Customs clearance abroad | Broker | Duty and tax separate |
| Final delivery | Destination agent | Depends on distance and access |
What moves the FCL price up or down
Container size: a 40′ costs more than a 20′ but far less than double, so volume-dense cargo that fills a 40′ ships cheapest per cubic metre. Destination and routing: Northern Europe from Montreal is the shortest, cheapest lane from Toronto; Australia via Vancouver the longest. Season: rates rise into the fall peak and before Lunar New Year and fall in late winter. Carrier capacity: blank sailings and port congestion push spot rates up quickly. Cargo: dangerous goods, out-of-gauge pieces on flat-racks and reefers carry premiums. And weight: a 20′ loaded past the rail or road limit for the routing must be re-worked, which costs more than getting the weight right at loading.
Part 3: LCL pricing — why small shipments cost more per cubic metre
Less-than-container-load freight is priced per cubic metre (or per weight-measure tonne — whichever of 1 m³ or 1,000 kg is greater), with a minimum of one or two cubic metres. That per-m³ rate looks cheap next to a full container. What makes LCL expensive for small shipments is the fixed charges at each end: CFS receiving and consolidation at origin, documentation per house bill of lading, deconsolidation and delivery-order fees at destination, and destination customs clearance, which costs the same for one pallet as for ten. A single pallet to Europe can carry more in fixed fees than in freight.
The crossover with FCL is usually around 12–15 cubic metres — eight to ten standard pallets. Above that, a 20′ container is typically the same price or cheaper and moves faster with less handling. Below it, LCL wins, and the way to lower the per-unit cost is to consolidate: ship monthly instead of weekly, or combine with other cargo bound for the same port.
A worked example: importer in Vaughan, container from Asia
Take a 40′ high-cube of floor-loaded cartons from a factory in China to a distributor in Vaughan. The ocean freight and origin charges are booked to Vancouver or Prince Rupert; the carrier's rail moves the container to CN Brampton. There, the clock starts. Option A: dray direct to the distributor's dock for a live unload — cheap drayage, but the distributor's receiving team spends most of a day hand-unloading 2,000 cartons, and if the dock is not free that morning the container waits on a chassis with per-diem running. Option B: dray to a transload warehouse, where a lumper crew unloads and palletizes the cartons the same day, the empty goes back inside free time, and the palletized freight is delivered on a straight truck when the distributor is ready. Option B adds a transload fee and removes the unloading labour, the per-diem risk and the chassis days. For floor-loaded imports it is usually the cheaper number once everything is counted — which is why we built our operation around it. The unloading side is described on the container loading and unloading page.
How to get an accurate container transport quote
Give the forwarder or drayage carrier the whole picture: commodity and HS code, container size and count or cargo dimensions and weight, whether the cargo is palletized or floor-loaded, the origin and destination addresses, the Incoterm, any dangerous goods, and the date the freight is ready. Ask for the quote itemized with every component named, and ask which charges are estimates that can move (ocean surcharges, destination fees) and which are fixed. Then compare totals, not ocean rates. An honest quote from Toronto will show you the drayage, the rail, the ocean, the port charges and the documentation as separate lines — ours do.
- Commodity, HS code, value
- Container size/count, or dimensions and weight for LCL
- Palletized or floor-loaded; any crating needed
- Origin and destination addresses; Incoterm
- Dangerous goods, out-of-gauge, temperature control
- Cargo-ready date and required arrival
Want an itemized container quote from Toronto?
Send the container size, commodity, origin and destination. We quote drayage, rail, ocean, port and handling as separate lines — and tell you which ones can move.