Skip to main content
This page explains every column in your shipping rates spreadsheet file. Use it to understand what each column means, what values to enter, and how to handle special cases.

Column reference table

What each column means

Zone

The shipping zone this rate applies to. This must match a zone you’ve already created in the MatrixRates app. If the zone name doesn’t exist, the import will fail.

Country Code

The two-letter code for the destination country. Use standard ISO codes.
  • Specific Country (e.g., US, GB) — Applies the rate to that country.
  • Global Wildcard (*) — Applies the rate to all supported countries.

Country Name

The full name of the country (e.g., United States or United Kingdom). This is for readability; the app primarily uses the Country Code to identify the destination.

Province

The state, province, or region within a country. Enter the full name (like “California” or “Ontario”).
  • Multiple Provinces — You can enter a comma-separated list (e.g., California, New York, Texas).
  • All Provinces — Leave blank or enter * to apply the rate to all provinces in the country.

Postcode

Growth Plan Scale Plan The postal or ZIP code. You can enter a single code, a comma-separated list (e.g. 90210, 90211), or use wildcards for powerful matching:
  • 90210 — Matches exactly “90210”
  • 90* — Matches any code starting with “90” (e.g., 90210, 90001)
  • *1AA — Matches any code ending with “1AA”
  • SW* AA — Matches codes like “SW1A 1AA” or “SW2 0AA”
  • * — Fallback: the rate only shows when no other rate in the same country matches the customer’s address more specifically. See Fallback rates.
Leave blank if you want the rate to apply to all postcodes. A blank cell is always shown — unlike *, it is never hidden by more specific rates.
Always use * on its own in the cell. Don’t combine it with other patterns in a comma-separated list (e.g. *, 90210).

City

Growth Plan Scale Plan The city name. You can enter a single city, a comma-separated list (e.g. London, Paris), or use wildcard patterns:
  • London — Matches exactly “London”
  • New * — Matches “New York”, “New Orleans”, etc.
  • * city — Matches “Kansas City”, “Jersey City”, etc.
  • * — Fallback: the rate only shows when no other rate in the same country matches the customer’s address more specifically. See Fallback rates.
Leave blank if you want the rate to apply to all cities in the country or province. A blank cell is always shown — unlike *, it is never hidden by more specific rates.
Always use * on its own in the cell. Don’t combine it with other patterns in a comma-separated list (e.g. *, Haifa).

Fallback rates

Growth Plan Scale Plan In the Postcode and City columns, a * on its own turns the rate into a catch-all: it shows at checkout only when no other rate in the same country matches the customer’s address more specifically. This lets you charge one price for specific areas and a different “everywhere else” price — without both rates appearing together. At checkout, rates fall into three groups:
  • Specific rate — has at least one Postcode or City pattern that isn’t a bare * (e.g. Tel Aviv, or a partial wildcard like 10*). It shows when the customer’s address matches its city and postcode rules, and is hidden when it doesn’t.
  • Catch-all rate — every Postcode and City pattern is exactly *: City * with Postcode blank, Postcode * with City blank, or both *. It shows only when no specific rate in the same country matches the customer’s address, and is hidden when one does.
  • No location rule — both Postcode and City are blank. The rate is always shown. It never hides a catch-all, and it is never hidden by specific rates.
A few things to keep in mind:
  • Specific rates never hide each other. If an exact postcode (1050) and a partial wildcard (10*) both match the customer’s address, both rates show. The only priority is specific over catch-all — there is no further ranking by how specific a pattern is.
  • Priority applies per country. Catch-alls and specific rates are compared within the same country in a zone. A specific match in one country never hides a catch-all in another country.
* means different things in different columns. In Country Code and Province, * means “all countries” / “all provinces” — the rate always applies. Only in Postcode and City does * mean “fallback”.

Example: higher price for remote cities

Suppose you charge more for delivery to remote cities in Israel, and a standard price everywhere else in the country: At checkout:
  • Customers in Jerusalem, Safed, or Dimona see only Remote Delivery (69.00 ILS). Standard Delivery is a catch-all, so it’s hidden wherever a specific rate matches.
  • Customers everywhere else in Israel see only Standard Delivery (35.00 ILS).
If Standard Delivery’s City cell were left blank instead of *, it would show for everyone — customers in the three remote cities would see both rates and could choose the cheaper one.

Name

A short, friendly name for this shipping rate. This is what your customer sees at checkout. Keep it under 50 characters.

Description

A description of what this rate includes. Your customer sees this at checkout. Leave blank if you don’t want to show any description.

Price

The shipping price. Like subtotals, you can enter just a number or include a currency code.
  • Just a number (e.g., 9.99) — Uses your store’s default currency.
  • Number + Currency (e.g., 10.00 USD) — Overrides the default currency for this specific rate.
A price of 0 (or 0.00) means free shipping for orders that match the conditions.

CSV Limits and Safety

To ensure your file imports smoothly and securely, keep these technical limits in mind:
  • Row Limit — Your spreadsheet can have a maximum of 40,000 rows.
  • Name & Description — Names must be under 255 characters. Descriptions must be under 2,048 characters.
  • Formula Safety — For security reasons, any text in the Name or Description column cannot start with formula characters like =, +, -, or @.
  • Weight vs Subtotal — A single row can have either Weight conditions OR Order Subtotal conditions, but not both. If you need both, create two separate rows.

Order Subtotal >= and <=

The minimum and maximum order values to qualify for this rate. You can enter just a number, or a number with a specific currency code.
  • Just a number (e.g., 100) — MatrixRates will use your Shopify store’s default currency.
  • Number + Currency (e.g., 100.00 USD or 50 GBP) — You can specify a three-letter currency code to override the default.
For example:
  • Order Subtotal >= 0 and Order Subtotal <= 100 = orders from 0 to 100 in your store currency.
  • Order Subtotal >= 50 GBP and Order Subtotal <= 200 GBP = orders between £50 and £200.
Leave both blank if there is no subtotal requirement. Leave Order Subtotal <= blank if there is no upper limit.
Prices and subtotals are entered in regular amounts (e.g., 9.99), not in cents.

Weight >= and <=

The minimum and maximum weight to qualify for this rate. You can enter just a number, or a number with a specific unit.
  • Just a number (e.g., 10) — MatrixRates will use your Shopify store’s default weight unit.
  • Number + Unit (e.g., 10kg or 500 g) — You can specify a unit to override the default. Supported units: g, kg, oz, lb.
For example:
  • Weight >= 0 and Weight <= 5 = up to 5 units (using store default)
  • Weight >= 500g and Weight <= 1kg = packages from 500g to 1kg
If you don’t specify a unit, double-check your Shopify Admin (Settings > General > Store defaults) to confirm which unit your store uses.

Transit Time Min Days and Transit Time Max Days

Requires New Shipping Options to be enabled.
Shows customers an estimated delivery window at checkout. Enter a whole number of 1 or greater in each column.
  • Min = 3, Max = 7 — delivery in 3 to 7 days
  • Min = 1, Max = 1 — next-day delivery
  • Leave both blank — no delivery window shown
Set both together or leave both blank. The minimum cannot exceed the maximum.

Free Min Order Amount

Requires New Shipping Options to be enabled.
The order value above which this rate becomes free. When a customer’s order reaches the threshold, Shopify charges nothing for that rate. The normal price applies for orders below the threshold. Format: A number followed by a three-letter currency code, separated by a space — for example 50.00 GBP or 100.00 USD. Leave blank for no threshold.
  • Must be greater than zero.
  • Currency code must match the currency in the Price column for that row.
  • If used with grouped (tiered) rates, all rows in the group that have a value must use the same amount. Rows with a blank are fine.

Inline example

Here’s what a valid set of shipping rates looks like:
Copy raw CSV
This example shows:
  • Tiered rate — “Standard Shipping” has two rows with the same name: orders under $50 pay $9.99, orders $50 and above pay $14.99. Both tiers offer free shipping above $75.
  • Flat rate — “Express Shipping” is a single rate with no conditions and a transit time of 1–2 days.
  • Weight-capped rate — “UK Delivery” applies to packages up to 2 kg, with free shipping above £75.

Download samples

Basic Sample

A standard set of rates that works for all stores and plans.

Growth/Scale Sample

Includes examples for Postcode and City filters (Growth & Scale plans).
Download the samples and open them in Excel or Google Sheets to see how the columns work in practice.

Edge cases

A cell is left blank

If a cell in a required column is blank, the import will fail. Required columns are: Zone, Country Code, Name, and Price. What happens: You’ll get an error message telling you which row has the problem. What to do: Fill in the missing value and try importing again.

Price is zero

A price of 0 means free shipping for orders that match the conditions. What happens: Customers pay nothing for shipping on those orders. What to do: Use this to offer free shipping over a certain order value or for certain products.

Weight = 0

When the minimum weight is 0 (or empty), the rate applies to all packages from the lowest possible weight up to the maximum you set. What happens: The rate applies to your lightest items. What to do: This is normal — leave the minimum at 0 if there’s no lower limit.

Consecutive weight ranges

For complete coverage, create consecutive ranges with no gaps between them. Rates with different names — each range can start exactly where the previous one ends: Grouped (tiered) rates with the same name — when using New Shipping Options, the next tier must start at prev.max + 0.0001. If tier 1 ends at 5.00 kg, tier 2 must start at 5.0001 kg: What happens: Each package falls into exactly one range. What to do: Always use consecutive ranges with no gaps. If you see a contiguity error on import, the error message tells you the exact value the next tier must start at.

Consecutive order subtotal ranges

The same rule applies to subtotal-based ranges, with a gap of 0.01 (one penny or cent) between tiers. Rates with different names — each range can start exactly where the previous one ends: Grouped (tiered) rates with the same name — when using New Shipping Options, the next tier must start at prev.max + 0.01. If tier 1 ends at 49.99, tier 2 must start at 50.00: What happens: Each order falls into exactly one tier. What to do: Always use consecutive ranges with no gaps. The error message on import tells you the exact value the next tier must start at.

Blank province, postcode, or city

If you leave Province, Postcode, or City blank, the rate applies to the entire country. What happens: The rate is always shown for that country. A blank Postcode or City cell is never hidden by more specific rates — customers in an area covered by a specific rate see both rates. What to do: This is normal if you want the rate offered everywhere. If you instead want a default that steps aside when a more specific rate matches, enter * in the Postcode or City column — see Fallback rates.

Next steps