*Estimate only. Taxes and additional handling fees (Oversize, Residential Delivery) not included.
Understanding Purolator Rate Calculation
Calculating Purolator rates requires more than just knowing how much your package weighs. To get an accurate estimate for your shipment within Canada or internationally, you must account for "Dimensional Weight," regional zones, and fluctuating fuel surcharges.
1. Actual Weight vs. Dimensional Weight
Purolator uses the greater of the actual weight or the volumetric (dimensional) weight to determine the billable weight.
Formula: (Length x Width x Height) / 5000 = Dimensional Weight in kg.
2. Regional Zoning
Shipping costs vary significantly based on the distance between the origin and destination postal codes. Purolator categorizes these into:
Local: Within the same metropolitan area.
Regional: Typically within the same province.
National: Between major Canadian provinces (e.g., Ontario to BC).
Remote: Locations with limited access, often incurring significantly higher fees.
3. Service Levels
Speed is a major price driver. Purolator Ground is the most economical choice for non-urgent shipments, while Purolator Express guarantees next-day delivery but comes at a premium price. If you require morning delivery (9:00 AM or 10:30 AM), expect the rate to increase by 50% or more.
Example Calculation
Imagine shipping a box weighing 5 kg with dimensions of 40cm x 30cm x 30cm from Toronto to Vancouver:
Actual Weight: 5 kg
Dimensional Weight: (40 x 30 x 30) / 5000 = 7.2 kg
Billable Weight: 7.2 kg (The larger of the two)
Base Rate: National Zone rate for 7.2 kg (~$35.00)
Fuel Surcharge: 18% of $35.00 = $6.30
Total Estimate: $41.30 + Taxes
function calculatePurolatorRate() {
var zoneMultiplier = parseFloat(document.getElementById("p_zone").value);
var serviceMultiplier = parseFloat(document.getElementById("p_service").value);
var actualWeight = parseFloat(document.getElementById("p_weight").value);
var length = parseFloat(document.getElementById("p_length").value);
var width = parseFloat(document.getElementById("p_width").value);
var height = parseFloat(document.getElementById("p_height").value);
var fuelRate = parseFloat(document.getElementById("p_fuel").value) / 100;
if (isNaN(actualWeight) || isNaN(length) || isNaN(width) || isNaN(height)) {
alert("Please enter valid numeric values for all fields.");
return;
}
// Volumetric Weight Calculation (Standard Divisor 5000)
var dimWeight = (length * width * height) / 5000;
// Determine billable weight
var billableWeight = Math.max(actualWeight, dimWeight);
// Simulated Base Pricing Logic
// Base fee $12.00 + $2.20 per kg for local
var baseRatePerKg = 2.20;
var startingFee = 12.00;
var subtotal = (startingFee + (billableWeight * baseRatePerKg)) * zoneMultiplier * serviceMultiplier;
var fuelSurcharge = subtotal * fuelRate;
var totalCost = subtotal + fuelSurcharge;
// Display Results
document.getElementById("p_result").style.display = "block";
document.getElementById("billable_weight_display").innerHTML = "Billable Weight: " + billableWeight.toFixed(2) + " kg " + (dimWeight > actualWeight ? "(Volumetric)" : "(Actual)");
document.getElementById("base_cost_display").innerHTML = "Base Service Rate: $" + subtotal.toFixed(2);
document.getElementById("fuel_cost_display").innerHTML = "Fuel Surcharge: $" + fuelSurcharge.toFixed(2);
document.getElementById("total_cost_display").innerHTML = "Total Estimated Rate: $" + totalCost.toFixed(2);
// Scroll to result
document.getElementById("p_result").scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}