Skip to main content

Adding a per-item or per-weight shipping surcharge

Add a shipping fee that scales with the item count or total weight of the order

A method can add an incremental shipping fee as the order grows - by item count or by weight (lb). It applies to the whole order (per order, not per product), on top of the base rate.

⚠️ The rule that trips everyone up: the first band is free. The surcharge doesn't apply to the first increment you set - it starts beyond it, then adds your amount per additional band, up to your cap.

Per item

Pricing → Add cost per item, unit = item:
Add $5 · per 1 item · up to 5 items

Items in cart

Surcharge

1

$0 (first item free)

2

$5

3

$10

4

$15

5+

$20 (capped at 5)

Total shipping = base rate + surcharge.

Per weight (lb)

Same control, unit = lb. Because the first band is free, set the increment to about half your trigger weight.
Goal: add +$10 once an order passes 13 lbAdd $10 · per 6.5 lb · up to 19 lb

Order weight

Surcharge

up to 6.5 lb

$0

13 lb

+$10

~19 lb

+$20 (near the cap)

50 lb

stops stacking at the "up to 19 lb" cap

Common mistake: setting "per 13 lb" to charge at 13 lb does the opposite — a 16 lb order adds nothing (16 − 13 = 3 lb, under the band). Always set the increment to ~half the weight you want to trigger the charge.

Limitations

  • Per order, all items: the surcharge counts the whole cart's items/weight - not specific products. A Shipping Rule (e.g. a product tag) controls whether the method shows, not which items are surcharged. There's no way to scope the extra cost to only certain items.

  • To surcharge only specific products, isolate them (e.g. a dedicated checkout group).

Steps

  1. Shipping Rate Groups → open the method.

  2. Pricing → enable Add cost per item → choose unit (item or lb).

  3. Set Add / per / up to.

  4. Save, then Test Mode (PDQ in Address Line 2) at a few quantities/weights to confirm the math.


Did this answer your question?