Oversize parcel surcharge calculator
Catch a large-package fee before checkout: a 50 × 20 × 15 inch carton weighing 20 lb has a longest side over the 48-inch limit, so a 25 oversize fee lifts an 18.5 base rate to 43.5. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Length
- 50
- Width
- 20
- Height
- 15
- Weight
- 20
- Base rate
- 18.5
- Oversize fee
- 25
- Unit system
- Imperial
- Longest side
- 50
- Girth
- 70
- Length plus girth
- 120
Parcel networks bill more than the zone-chart rate when a carton is too long, too bulky, or too heavy for the standard conveyor envelope. Sellers, warehouse clerks, and 3PL quote desks need one deterministic check that flags an oversize or overweight surcharge and adds the published fee to the base shipping cost before checkout or invoice. This oversize parcel surcharge calculator accepts length, width, height, and billed weight, orients the longest side as length, computes girth as twice the sum of the two shorter sides, and compares longest side, length plus girth, and weight against carrier-style limits. When a limit is exceeded the matching oversize fee, overweight fee, or both is added to the base rate. Limits default to common additional-handling and large-package breaks in inches and pounds or centimetres and kilograms, and you may override them.
How oversize and overweight flags turn into a shipping total
Carriers treat an oversize parcel as one whose longest side or whose combined length plus girth exceeds the additional-handling or large-package envelope, and they treat an overweight parcel as one whose billed weight exceeds a published weight break. After you send length, width, and height, this calculator orients the longest side as length so a long board cannot hide by being labeled as width.
Girth is twice the sum of the two remaining sides—the ribbon that wraps the cross-section—and length plus girth is the single combined measure used on most large-package tariff pages. Default limits follow common additional-handling and large-package style breaks: forty-eight inches, one hundred thirty inches of length plus girth, and fifty pounds in imperial units, or one hundred twenty-two centimetres, three hundred thirty centimetres, and twenty-three kilograms in metric. Equality at a limit does not trigger the surcharge; only a strict exceedance does.
You may override any one of those three limits when your contract uses a different break.
Where an oversize parcel surcharge calculator earns its keep
Ecommerce platforms use an oversize parcel surcharge calculator so checkout and back-office tools can warn a seller before a long or heavy SKU is quoted at the standard carton rate and then billed a large-package fee after pickup. Third-party logistics operators and freight brokers need a deterministic oracle for quote emails, rate cards, and margin checks when the same base appears under different additional-handling tables by region or service.
Warehouse packing stations can measure a carton once and decide whether to split the shipment, choose a different box, or accept the surcharge, instead of discovering the fee on the weekly carrier invoice. Keep sides, weight, base, and the two fees as the only required inputs, pin rounded money fields in tests, and you get reproducible landed shipping totals for marketplaces, WMS plugins, and edge workers without standing up a full rating engine of your own.
What you can do with it
Checkout and landed shipping display
Show shoppers or B2B buyers the all-in shipping charge by adding the oversize and overweight fees to the quoted base rate before payment.
Pack-station and carton choice
Measure a packed carton and decide whether to split, resize, or accept the surcharge before the label is purchased.
Invoice and carrier audit lines
Rebuild oversize and overweight fees for each shipment when reconciling weekly carrier invoices against the published size and weight breaks.
FAQ
What are the default oversize and overweight limits?
Imperial defaults are 48 inches on the longest side, 130 inches of length plus girth, and 50 pounds. Metric defaults are 122 cm, 330 cm, and 23 kg.
Can a parcel be both oversize and overweight?
Yes. Both flags are independent and the two fees stack.
Does this look up live carrier oversize tables?
No. You supply the fees and, if needed, the limits that apply for the contract you are pricing.
How is girth measured for an oversize check?
Girth is twice the sum of the two shorter sides, like a ribbon around the cross-section. A 50 × 20 × 15 carton has a girth of 70, so its length plus girth is 120, under the default 130.
Is a parcel exactly at the limit charged a surcharge?
No. Only a strict exceedance triggers the fee, so a longest side of exactly 48 inches or a billed weight of exactly 50 pounds stays at the standard rate. Anything above the limit triggers it.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/ecom/oversize-surcharge \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"length":50,"width":20,"height":15,"weight":20,"base_rate":18.5,"oversize_fee":25,"overweight_fee":40}'const res = await fetch("https://api.kit.forhosting.com/ecom/oversize-surcharge", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"length": 50,
"width": 20,
"height": 15,
"weight": 20,
"base_rate": 18.5,
"oversize_fee": 25,
"overweight_fee": 40
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ecom/oversize-surcharge",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"length": 50,
"width": 20,
"height": 15,
"weight": 20,
"base_rate": 18.5,
"oversize_fee": 25,
"overweight_fee": 40
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ecom/oversize-surcharge", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"length":50,"width":20,"height":15,"weight":20,"base_rate":18.5,"oversize_fee":25,"overweight_fee":40}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"length":50,"width":20,"height":15,"weight":20,"base_rate":18.5,"oversize_fee":25,"overweight_fee":40}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ecom/oversize-surcharge", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"length": 50,
"width": 20,
"height": 15,
"weight": 20,
"base_rate": 18.5,
"oversize_fee": 25,
"overweight_fee": 40
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ecom.oversize_surcharge",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
How oversize and overweight flags turn into a shipping total
The parcel is flagged oversize when the longest side exceeds length_limit or when length plus girth exceeds girth_limit. It is flagged overweight when weight exceeds weight_limit. Both flags can fire on the same carton, and the two fees stack: total_shipping equals base_rate plus oversize_fee when oversize is true plus overweight_fee when overweight is true. Money fields are rounded half-up to two decimal places so invoices and API clients stay aligned on the same cent.
Input contract, response shape, and validation behaviour
Invalid requests are not billed. POST a JSON body with seven required finite numbers: length, width, and height as positive sides in the chosen length unit; weight as a non-negative billed weight; base_rate as the shipping amount before these surcharges; oversize_fee as the money added when the carton is oversize; and overweight_fee as the money added when the carton is overweight. Optional unit_system is the enum imperial or metric and defaults to imperial. Optional length_limit, girth_limit, and weight_limit override the defaults for that system. Each numeric field may arrive as a JSON number or as a numeric string; empty strings, missing required fields, non-finite values, non-positive sides, and negative money or weight fail with invalid_input naming the field. Aliases exist for the common nicknames (l, w, h, depth, wt, shipping_rate, oversize_surcharge, weight_fee, units). On success the body includes unit_system, longest_side, girth, length_plus_girth, weight, the three limits actually used, booleans is_oversize and is_overweight, the split oversize_fee_applied and overweight_fee_applied, surcharge_amount, echoed base_rate, total_shipping, a triggers array of the strings oversize and overweight in that order, and a formula string restating the identity. Example: length fifty, width twenty, height fifteen, weight twenty, base_rate eighteen point five, oversize_fee twenty-five, overweight_fee forty in imperial yields longest_side fifty, girth seventy, length_plus_girth one hundred twenty, is_oversize true because fifty exceeds forty-eight, is_overweight false, surcharge_amount twenty-five, and total_shipping forty-three point five. Pair this endpoint with a zone-rate or dimensional-weight step if you still need to derive the base; this calculator only applies the size and weight fees once the base is known.
Where an oversize parcel surcharge calculator earns its keep
Spreadsheet replacements and low-code automations call the API so finance can reprice historical shipments when auditing a disputed line that used last season’s size break.
Technical questions
How do I calculate an oversize parcel surcharge?
Send length, width, height, weight, base_rate, oversize_fee, and overweight_fee. The API orients the longest side, computes girth as twice the other two sides, flags oversize or overweight against the limits, and returns total_shipping = base_rate plus the matching fees.
What does the oversize parcel surcharge calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.