When WooCommerce offers a flat rate but the amount is wrong, inspect the matched method's base cost, shipping-class costs and calculation type. Per-class and per-order calculations intentionally produce different totals. A shipping class groups products; it does not create a rate by itself.
Freeze a small test basket
Use a basket with one product from each relevant class and a staff-controlled delivery address. Record product IDs, variation IDs, quantities and the displayed shipping tax separately. Keep the address fixed while comparing calculations.
First confirm the matched zone and exact Flat Rate instance. Multiple zones can contain methods with the same visible label. If no method appears at all, start with missing shipping options instead.
Write out the arithmetic
The Flat Rate reference explains the base Cost field and class calculation choices. In a deliberately simple example with no shipping tax, let the base cost be 5, class A cost 3 and class B cost 8.
| Basket |
Per class |
Per order, highest class |
| One A item |
5 + 3 = 8 |
5 + 3 = 8 |
| One B item |
5 + 8 = 13 |
5 + 8 = 13 |
| One A and one B |
5 + 3 + 8 = 16 |
5 + 8 = 13 |
These are illustrative fixed costs, not recommended shipping prices. Quantity expressions, multiple packages and extensions can change the calculation. If your field contains an expression, calculate that expression explicitly instead of assuming the table applies unchanged.
Matched method: Zone and instance confirmed. Product classes: Selected variations included. Written arithmetic: Base and class costs agree. Fresh checkout: Approved amount recalculates. Explanatory checklist, not a customer test result.
Verify assignments and the no-class branch
Open each product's shipping settings and inspect its assigned class. For a variable product, inspect the selected variation too. A product imported without its intended class may follow the No shipping class cost branch.
The shipping classes documentation separates class creation, product assignment and method pricing. Check all three. Renaming a visible class or adding a category does not automatically configure every method instance.
Compare a single item, two identical items, a mixed-class basket and a product with no class. Record the expected total before looking at checkout. This makes it easier to identify a quantity expression or fallback cost that only affects one branch.
Keep commercial policy separate from diagnosis
Ask the shipping owner whether mixed baskets should add class costs or use the most expensive class. Do not switch the calculation type merely because one customer expects a lower amount. Also distinguish an incorrect rate from correctly calculated shipping tax.
After saving an approved correction, retest in a fresh guest session. Change the address and return it to the original value to confirm recalculation. Verify the final checkout amount without placing a live paid order.
Send the small basket, matched method settings and written arithmetic to HandL WP for shipping troubleshooting. A precise calculation example is more actionable than a screenshot of a total that simply looks too high.
References reviewed October 5, 2026. Examples are explanatory, not customer test results.