Select Destination Zone…
Canada (Price Group 1)
Mexico (Price Group 2)
Europe/Asia/Australia (Groups 3-5 Avg)
Rest of World (Groups 6-8 Avg)
Flat Rate Envelope (Regular/Legal/Padded)
Small Flat Rate Box
Medium Flat Rate Box
Large Flat Rate Box
Estimated Retail Price:–
Max Weight Limit:–
Inner Dimensions:–
* Rates are estimated retail prices for 2024/2025. Online rates (Commercial Base) may be lower.
Understanding USPS Priority Mail International Flat Rate
Shipping internationally can be complex due to varying zones, weights, and customs regulations. The USPS Priority Mail International Flat Rate service simplifies this process by offering fixed pricing for specific box sizes, regardless of the package's weight (up to a specific limit). This eliminates the need to calculate complex dimensional weight formulas for dense items.
How Pricing Works
Unlike domestic shipping where the cost is the same for the entire country, international flat rate shipping costs depend on the Destination Price Group. USPS categorizes countries into several price groups:
Price Group 1: Canada (Lowest rates).
Price Group 2: Mexico.
Price Groups 3-8: The rest of the world, including Europe, Asia, Australia, and Africa. Rates generally increase as the group number goes up.
Weight Limits and Dimensions
One of the most critical aspects of using International Flat Rate is adhering to the weight limits, which are different from domestic (US) limits:
Flat Rate Envelopes & Small Boxes: Maximum weight of 4 lbs.
Medium & Large Flat Rate Boxes: Maximum weight of 20 lbs.
If your package exceeds these limits, you cannot use the Flat Rate pricing and must pay based on weight and destination zone (regular Priority Mail International).
Customs and Requirements
All international shipments, including Flat Rate, require a customs form (CN 22 or CN 23). When you print your label online, this form is usually generated automatically. Key benefits of this service include:
Tracking: Included for major destinations.
Insurance: Includes up to $200 for merchandise loss or damage (restrictions apply).
Delivery Speed: Generally 6-10 business days.
Use the calculator above to get a quick estimate of your shipping costs based on your destination and preferred box size.
function calculateShipping() {
// Define rate table (Estimated Retail Rates 2024)
// Structure: Zone ID -> { boxType: price }
var rates = {
"1": { // Canada
"envelope": 30.35,
"small_box": 31.45,
"medium_box": 61.10,
"large_box": 76.50
},
"2": { // Mexico
"envelope": 37.70,
"small_box": 39.30,
"medium_box": 79.60,
"large_box": 96.75
},
"3": { // Europe/Asia Avg (Group 3-5 baseline)
"envelope": 44.00,
"small_box": 45.50,
"medium_box": 93.00,
"large_box": 118.00
},
"4": { // Rest of World Avg (Group 6-8 baseline)
"envelope": 46.50,
"small_box": 48.00,
"medium_box": 98.00,
"large_box": 125.00
}
};
// Define Specs (Dimensions and Weight Limits)
var specs = {
"envelope": {
"weight": "4 lbs",
"dims": "12-1/2\" x 9-1/2\""
},
"small_box": {
"weight": "4 lbs",
"dims": "8-5/8\" x 5-3/8\" x 1-5/8\""
},
"medium_box": {
"weight": "20 lbs",
"dims": "11\" x 8-1/2\" x 5-1/2\""
},
"large_box": {
"weight": "20 lbs",
"dims": "12\" x 12\" x 5-1/2\""
}
};
// Get Input Values
var destSelect = document.getElementById("destinationGroup");
var zone = destSelect.value;
var typeSelect = document.getElementById("packageType");
var packType = typeSelect.value;
// Validation
if (zone === "0") {
alert("Please select a destination country/zone.");
return;
}
// Logic Calculation
var finalPrice = 0;
if (rates[zone] && rates[zone][packType]) {
finalPrice = rates[zone][packType];
} else {
// Fallback for safety
finalPrice = 0;
}
var specData = specs[packType];
// Display Results
var resultDiv = document.getElementById("result");
var priceDisplay = document.getElementById("priceDisplay");
var weightDisplay = document.getElementById("weightDisplay");
var dimDisplay = document.getElementById("dimDisplay");
priceDisplay.innerHTML = "$" + finalPrice.toFixed(2);
weightDisplay.innerHTML = specData.weight;
dimDisplay.innerHTML = specData.dims;
resultDiv.style.display = "block";
}