When importing goods into Canada, calculating the correct amount of duty and taxes owing is critical for customs compliance. The Canada Border Services Agency (CBSA) does not use the live market "spot rate" that you might see on Google Finance or XE. Instead, they strictly adhere to specific exchange rates dictated by the Currency Act.
How the Exchange Rate is Determined
The rate used for calculating the Value for Duty is generally the rate of exchange established by the Bank of Canada that is in effect on the date of direct shipment to Canada. This is the date the goods began their continuous journey to Canada.
Date of Direct Shipment: The date the goods were loaded onto the carrier that brought them to Canada.
Currency Conversion: All foreign currencies must be converted to Canadian Dollars (CAD) before duty rates are applied.
Calculation Formula
The import calculation follows a specific order of operations:
Value for Duty (VFD): Multiply the foreign value of the goods by the applicable CBSA exchange rate.
Duty Amount: Multiply the VFD by the duty percentage (based on the HS Code of the commodity).
Value for Tax: Add the VFD and the Duty Amount together.
GST/HST: Apply the tax rate to the "Value for Tax" figure.
Example Calculation
Imagine you purchased a jacket from the United States for $200 USD. The package was shipped on a day when the CBSA exchange rate was 1.35. The duty rate for the jacket is 18% and you live in Ontario (13% HST).
VFD (CAD): $200 USD × 1.35 = $270.00 CAD
Duty Payable: $270.00 × 18% = $48.60 CAD
Value for Tax: $270.00 + $48.60 = $318.60 CAD
HST Payable: $318.60 × 13% = $41.42 CAD
Total Payable to CBSA: $48.60 (Duty) + $41.42 (Tax) = $90.02 CAD
Use the calculator above to estimate your import costs by finding the current rate on the official CBSA website and inputting your invoice value.
function calculateImportCost() {
// 1. Get input values
var foreignVal = parseFloat(document.getElementById('foreignValue').value);
var exRate = parseFloat(document.getElementById('exchangeRate').value);
var dutyPercent = parseFloat(document.getElementById('dutyRate').value);
var taxPercent = parseFloat(document.getElementById('salesTaxRate').value);
// 2. Validate inputs
if (isNaN(foreignVal) || foreignVal < 0) {
alert("Please enter a valid Value of Goods.");
return;
}
if (isNaN(exRate) || exRate <= 0) {
alert("Please enter a valid Exchange Rate.");
return;
}
if (isNaN(dutyPercent)) dutyPercent = 0;
if (isNaN(taxPercent)) taxPercent = 0;
// 3. Perform Calculations Logic
// Step A: Convert to Canadian Dollars (Value for Duty)
var vfd = foreignVal * exRate;
// Step B: Calculate Duty Amount
var dutyAmt = vfd * (dutyPercent / 100);
// Step C: Calculate Value for Tax (VFD + Duty)
// Note: GST/HST is calculated on the value of goods plus the duty.
var valForTax = vfd + dutyAmt;
// Step D: Calculate Tax Amount
var taxAmt = valForTax * (taxPercent / 100);
// Step E: Total Payable (Duty + Tax)
var totalPayable = dutyAmt + taxAmt;
// 4. Update DOM with results
// Formatting as CAD currency
var formatter = new Intl.NumberFormat('en-CA', {
style: 'currency',
currency: 'CAD',
minimumFractionDigits: 2
});
document.getElementById('resVFD').innerHTML = formatter.format(vfd);
document.getElementById('resDuty').innerHTML = formatter.format(dutyAmt);
document.getElementById('resTaxVal').innerHTML = formatter.format(valForTax);
document.getElementById('resTaxAmt').innerHTML = formatter.format(taxAmt);
document.getElementById('resTotal').innerHTML = formatter.format(totalPayable);
// Show the result box
document.getElementById('cbsaResult').style.display = 'block';
}