Magento 2 Shipping Table Rates: Setup & CSV Guide
Magento 2 Shipping Table Rates: Setup, CSV & Beyond

Magento 2 Shipping Table Rates: Setup, CSV & Beyond

2 min read 0 views

Table-rate shipping in Magento 2: what's native, where it stops

Magento Open Source does include a basic table-rates carrier: one CSV per website, keyed on destination + one condition (weight or price or item count), producing one rate. If your shipping is more real than that — multiple carriers with different tables, per-product surcharges, free-shipping thresholds by region, weight and price together — the native carrier can't express it, and most stores end up hard-coding workarounds.

Native table rates: the essentials

  1. Set the condition (weight vs destination, price vs destination, or items vs destination) under Stores > Configuration > Sales > Delivery Methods > Table Rates.
  2. Switch the scope selector to your website to reveal the Export/Import CSV buttons — the step everyone misses, because the buttons are hidden at Default scope.
  3. Fill the CSV: country, region, postcode, condition value, price. Use * as a wildcard.
  4. Import, save, and test rates in the cart with representative addresses.

When you need more than one table

Our Shipping Matrix for Magento 2 module is an advanced table-rate engine: multiple named methods (each with its own table and title at checkout), rates conditioned on combinations — weight, subtotal, item count, destination — per-method free-shipping thresholds, and CSV import/export per method. It behaves like a normal carrier at checkout, on Luma or headless.

CSV structure that keeps you sane

Whatever tool you use: keep one spreadsheet as the source of truth, one row per destination band, explicit * wildcards rather than blank cells, and re-export after every import so the file you store matches what the store is actually using. Test the edges — the postcode band boundaries and the free-shipping threshold — not just one address.

Frequently asked questions

Why can't I see the import/export buttons for table rates?

They only appear when the configuration scope is switched from Default to a specific website — native table rates are stored per website.

Can native Magento combine weight AND price in one table?

No — the native carrier uses exactly one condition type per website. Combining conditions needs an advanced module.

Does this work with a headless storefront?

Yes — rates are calculated server-side and returned to any checkout over GraphQL. Verified on Magento Open Source 2.4.9, PHP 8.4 and 8.5.

Shipping Matrix is a one-off purchase — no subscription — and is included in the AgenticEcom Suite.