
Box Rate Shipping for WooCommerce
Woo calculates shipping by weight, the courier charges by box. This plugin packs the cart into your real boxes and charges for those. Catches products without dimensions after import. Free — 3 formats, Pro — no limit.
- Compatibility
- WordPress 6.2+, WooCommerce 6.0+ (tested on WP 7.1 / Woo 10.7)
- PHP
- 7.4 or newer
- Licence
- one site, annual
- Trial
- 7 days, no card, one per site
The module in action — 37 sec
Clear even without sound: Ukrainian subtitles
What Free has,
and what Pro adds
The free version works with no time limit. Pro adds the rest of the features in the table.
What it looks like

The trial starts when you ask
A fresh install is the free version, nothing switches on by itself. The “Try Pro for 7 days” button → e-mail → the key right in the window and by e-mail.

One key — one site
Moving the store? Unbind the licence on the old domain and activate it on the new one yourself.
Technical requirements
WordPress 6.2+ (tested on 7.1).
WooCommerce 6.0+ (tested on 10.7).
PHP 7.4+.
Product dimensions and weight filled in — no module of this kind can calculate honestly without them.
Compatibility with HPOS and the block cart/checkout is explicitly declared.
Version history
Box settings: the Name field no longer overlaps the Length column.
A purchased licence stays yours: the Pro features keep working after the licence term ends — the term covers updates and support.
Box catalogue, first-fit-decreasing packing with a three-side check, splitting an order across multiple boxes, per-kilogram and handling surcharges, free shipping above a threshold,…
Frequently bought with Box Rate Shipping for WooCommerce
4 modules in one order — 40% cheaper than separately


Nova Poshta Premium — Nova Poshta for WooCommerce

Mono Acquiring — monobank card payments for WooCommerce

Telegram notifications and Viber/SMS for customers for WooCommerce
Full module description
WooCommerce calculates shipping by weight and shipping class. The courier charges for the box the parcel actually fits in. For anything bulky, those two numbers aren’t even close, and the gap eats into your margin on every order.
Three T-shirts and one kettle weigh the same, but they travel in completely different boxes. A pillow, a dog bed, a lampshade: light, but they take up as much room as a 150 UAH box.
This module closes exactly that gap. You describe the boxes you actually ship in, and the checkout shows the cost of the boxes the order genuinely fits into.
What the buyer sees
An ordinary shipping method in the cart and at checkout, with whatever name you gave it. No extra fields, popups, or steps. The order details show which boxes made up the price — for example “Small × 2”.
If a product lands in the cart that can’t be honestly calculated, the method simply isn’t shown — instead of showing a confidently wrong amount.
What the admin gets
Box table: name, length, width, height, maximum weight, cost, and a per-kilogram surcharge. Dimensions in whatever units your WooCommerce uses — nothing is converted behind your back.
Rules: what to do with a product without dimensions, what to do with an oversized item, a handling surcharge (once per shipment, not per box), free shipping above a threshold, permission to rotate items when packing.
Separately — diagnostics: a list of published products with an empty length, width, or height, with edit links. On our own test site, 39 out of 40 turned out to be like that.
How it works, step by step
- The cart is broken down into individual physical items: three identical products are three items, each needing its own space, not one object with a quantity of 3.
- Items are sorted from largest by volume.
- Each item is first tried against already-open boxes — starting with the one with the least free space left, so boxes fill up instead of multiplying.
- If it doesn’t fit any open box, the smallest box it physically fits into is opened.
- Price = sum of the costs of the boxes used, plus weight surcharges, plus a one-off handling surcharge.
The “fits” check is not by volume. A 90 cm-long item won’t go into a 40 cm box, however much free volume is left, so every candidate is checked against all three sides. Rotating the item is optional — for products that must only travel one way up, it can be switched off.
Under the hood
The algorithm is first-fit-decreasing: largest items first, the smallest box they fit into. It’s not perfect three-dimensional packing — the perfect version is an NP-hard problem, and no checkout should be solving it. But it never claims a packing that’s physically impossible, and that property is what keeps the calculation honest.
The rotation check is done cheaply and correctly: both triples of sides are sorted and compared member by member — this covers all six orientations without enumerating them. Plus a small tolerance so a 30.0 cm item is treated as fitting a 30.0 cm box, as it would be in any warehouse.
🔴 The main decision is what to do with a product without dimensions. The most common reason a box-rate calculation produces nonsense has nothing to do with the maths: the store imported a feed that left the dimension fields empty, and half the catalogue officially has a zero size. Most modules happily treat such products as flat, and the seller finds out from the courier’s invoice.
Here, by default, the module refuses to calculate a cart containing a product without dimensions, logs the names of those products under WooCommerce → Status → Logs, and lists them on its own settings screen. Two other policies (treat as the largest box, or pack by weight only) are available — but that’s a decision you make deliberately, not a default behaviour you never saw.
Installation
- Plugins → Add New → Upload Plugin → zip → activate. WooCommerce must be active.
- Open Box rate in the admin menu and describe your boxes.
- Check the warning about products without dimensions — if there is one, fix the import first.
- Add the “Box rate” method to the relevant shipping zone: WooCommerce → Shipping.
Questions
about the module
Didn't find the answer? Message us on Telegram and we'll reply within a business day.
Is this a real 3D packer?
No. It's first-fit-decreasing with a genuine per-side check: it may open one box more than the perfect algorithm, but it will never promise an impossible packing.
What units do I enter boxes in?
Your own, from WooCommerce → Products → Dimensions. Nothing is converted.
What happens with an oversized product?
Your choice: don't show the method, or take a fixed oversize rate.
Does it work with variable products?
Yes, it takes the dimensions of the specific variation.
Why did the method suddenly disappear from checkout?
Most likely there's a product without dimensions in the cart. The module logs the reason and product names under WooCommerce → Status → Logs.
No reviews yet. Be the first.
No questions yet. Ask one — we answer within 24 hours.
Not quite what you are looking for?
We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about the task and we'll prepare an estimate.
Order a custom module
Buying the module
—
