# Changelog Source: https://docs.dojoapps.co.uk/changelog Latest updates and improvements to MatrixRates Import/Export. ### Reliability & Import Improvements * **Automatic Import Safety Net** — If an import fails without creating any new zones, the app now automatically restores your previous zones. In the rare case the restore can't finish, we email you so nothing slips through the cracks. * **Semicolon Spreadsheets Just Work** — Files that use semicolons (`;`) to separate columns — the default in European versions of Excel — now import automatically, with no conversion needed. * **Accurate Zone & Rate Counts** — The zone and rate counts shown in your import email and in the app now match Shopify exactly. * **Smoother App Loading** — Fixed an issue where the app could get stuck on a loading screen right after install. ### Behind-the-Scenes Improvements This release focused on internal stability and performance work to keep imports and exports running smoothly. There's nothing new to learn — everything you rely on works exactly as before. ### New Shipping Options We've shipped a set of features to give you more control over your shipping rates. * **Transit Time Support** — Set delivery day ranges per rate using the new `Transit Time Min Days` and `Transit Time Max Days` columns. Values are validated as non-negative integers with `min ≤ max` before any change reaches Shopify; blank cells leave a rate's transit time unset. * **Free Shipping Thresholds** — Set a minimum order amount that triggers free shipping using the new `Free Min Order Amount` column (e.g., `100.00 GBP`). Above the threshold the rate is free; below it the normal price applies. Currency must match your store's primary market. * **Automatic Rate Grouping** — Rates sharing the same name and zone are automatically grouped together during import as a single Shopify shipping option with tiers. No new column to learn — grouping is implicit. Tiers must be contiguous (e.g., `0–49.99`, `50.00–99.99`), use the same condition type and currency, and any open-ended top tier must be last. The importer rejects mismatches with a per-row error so you can fix the spreadsheet before anything reaches Shopify. * **Better Validation Feedback** — Per-row errors now appear inline in the import preview, with one bullet per offending row, so you can fix multiple issues in one pass. These features are opt-in. Enable them in **Settings → New Shipping Options**. New columns are added to the downloadable example CSV when the toggle is on. With it off, your existing 13-column CSVs continue to work unchanged. ### Live Snapshot Architecture We've completely rebuilt the app's backend to be faster, more reliable, and easier to use: * **No More Indexing** — MatrixRates now uses a "Live Snapshot" architecture. This means the app fetches your rates directly from Shopify in real-time, eliminating the need for background indexing and synchronization. * **Instant Exports** — Exporting your rates is now significantly faster and always reflects the most up-to-date information in your store. * **Simpler Workflow** — We've streamlined the import and export screens to make it easier to manage your shipping profiles and locations. ### Initial Release The first version of MatrixRates Import/Export is now live on the Shopify App Store! * **Bulk Import & Export** — Manage hundreds of shipping rates at once using CSV files. * **Spreadsheet Editing** — Edit your rates in Excel, Google Sheets, or Numbers and upload them directly to Shopify. * **Multi-Zone Support** — Full support for complex shipping zones across different countries and provinces. # Export Guide Source: https://docs.dojoapps.co.uk/export-guide How to download your shipping rates as a spreadsheet file. Download your shipping rates from MatrixRates — This guide shows you how to export your shipping rates as a file you can open in any spreadsheet app. **Plan Requirement:** Exporting shipping rates is available on the **Growth** and **Scale** plans. From your Shopify admin, go to **Apps** and click **MatrixRates Import/Export**. The app opens in a new window. Click on the delivery profile you want to manage (e.g., "General Profile"). This will show a list of shipping origins (locations) where you can import or export rates. Select delivery profile Find the location where you want to export rates from and click the **Export Rates** button. Export popup Ensure **Plain CSV file** is selected and click **Export rates**. Your browser will instantly download a CSV file to your computer. The file will be named according to your delivery profile, location, and the current date/time (e.g., `shipping_rates_export_122879803726_129467842894_20260422_193637.csv`). The file saves to your Downloads folder. If you're using Chrome or Edge, you'll see the file appear at the bottom of the browser window. Go to your **Downloads** folder and double-click the CSV file you just downloaded. It opens in your default spreadsheet app — like Microsoft Excel, Google Sheets, or Numbers. You now have a complete copy of your shipping rates that you can view, edit, or share. Your export might be emailed to you instead of downloading instantly if either: 1. **You're using Shopify's new shipping options** — Your store uses live data from Shopify, so the export runs in the background and you'll receive an email with the CSV attached. 2. **You have more than 100 shipping zones** — Large exports take time to generate, so we'll email it to you instead. In both cases, check your inbox for an email from us with the CSV file attached. Open the file in a spreadsheet app, update your rates, then follow the [Import Guide](/import-guide) to upload the changes back to MatrixRates. Save the exported file in a safe location — like a dedicated folder for your store settings. You can use it to restore rates if anything goes wrong. Email the file to teammates or upload it to your internal documentation so everyone has the same up-to-date rates. See the [Spreadsheet Reference](/spreadsheet-reference) to understand what each column means and how to format your rates correctly. # Import Guide Source: https://docs.dojoapps.co.uk/import-guide How to upload your shipping rates to Shopify. Importing a CSV is the fastest way to set up or update your shipping rates. Instead of entering rates one by one in Shopify, you can upload hundreds of rates at once using a spreadsheet file. ## Before You Import **Important:** Importing a file will **overwrite** all existing rates in the selected shipping zone. Always [export a backup](/export-guide) of your current rates before importing a new file. Before you start, make sure your file is formatted correctly. Shopify requires specific column names and values to correctly process your rates. * Review the [Spreadsheet Reference](/spreadsheet-reference) for required columns and data types. * Ensure your file is saved as a **.csv** (Comma Separated Values) file. * You can create new zones directly through your spreadsheet; rows sharing the same zone name will be automatically grouped together. ## The Import Process Follow these steps to upload your shipping rates to Shopify. Log in to your Shopify Admin and navigate to **Apps** > **MatrixRates Import/Export**. Click on the delivery profile you want to manage (e.g., "General Profile"). This will show a list of shipping origins (locations) where you can import or export rates. Find the location where you want to add rates and click the **Import Rates** button. Click the **Add file** button in the popup and select your spreadsheet file from your computer. Import screen showing the file picker Click the **Upload and preview** button. The app will process your file and show you a summary of the rates and zones to be imported. Import preview summary The preview screen shows approximately how many rates and shipping zones will be created. It also warns you that this action will overwrite existing shipping zones and rates for that location. Review the preview to ensure everything looks correct, then click the **Import rates** button to finalize the process. Once complete, you will see a success message. ## Verifying the Import After a successful import, it's good practice to verify that your rates are correctly loaded into Shopify. 1. Go to **Settings** > **Shipping and delivery** in your Shopify Admin. 2. Under **Shipping profiles**, select the profile that contains the shipping location you just imported your rates to. 3. Scroll down to see your new shipping zones and rates listed under that location. 4. To test your rates in action, act as a customer: add items to your basket and proceed to checkout using the addresses you configured. **Postcode and City filters:** Any postcode or city restrictions configured in your spreadsheet will not be visible within the Shopify Admin shipping settings. These rules are applied automatically during checkout. To verify they are working, you must test them by proceeding to checkout on your store's frontend. ## What to do next Add items to your cart and go to checkout to see your new rates in action. Getting an error message? Learn how to fix common import issues. Keep a copy of your rates on your computer for safekeeping. # MatrixRates Import/Export Source: https://docs.dojoapps.co.uk/index Documentation for the MatrixRates Import/Export Shopify app. MatrixRates Import/Export allows Shopify store owners to manage shipping rates via CSV. This tool simplifies the process of updating complex shipping rates by allowing you to edit them in your favorite spreadsheet software and upload them directly to your store. Make sure you have everything ready to go: * The [MatrixRates app](https://apps.shopify.com/matrixrates-import-export) is installed in your Shopify store. * You have Shopify Admin access with permissions to manage shipping settings. Upload your shipping rates to Shopify Download your current rates for editing or backup Complete column definition and sample file Fix common import errors and formatting issues # Enabling New Shipping Options Source: https://docs.dojoapps.co.uk/new-shipping-options/enable How to turn on transit times, free shipping thresholds, and grouped rates for your store. New Shipping Options is a feature that unlocks three new capabilities for your shipping rates: [transit times](/new-shipping-options/new-columns#transit-time-min-days-and-transit-time-max-days), [free shipping thresholds](/new-shipping-options/new-columns#free-min-order-amount), and [grouped (tiered) rates](/new-shipping-options/grouped-rates). It is turned off by default, and existing rates are unaffected until you enable it. ## Before you enable Most stores can enable New Shipping Options straight away. If your store uses an older version of Shopify's shipping setup, the toggle will appear greyed out with a link to Shopify's upgrade instructions — follow that link first, then come back here to enable the feature. ## How to enable Log in to your Shopify Admin and navigate to **Apps** > **MatrixRates Import/Export**. Click **Settings** in the navigation. Find the **New Shipping Options** toggle and click it to enable the feature. Settings page showing the New Shipping Options toggle The toggle will switch to the on position. No further confirmation is required. ## What changes when enabled Once New Shipping Options is on: * The **example CSV** you can download from the app switches to the **16-column v1.2 format**, which includes the three new columns. * **Exports** include `Transit Time Min Days`, `Transit Time Max Days`, and `Free Min Order Amount` columns. * **Imports** read and apply those same columns. Rows with blank values in the new columns import without transit times or a free shipping threshold — exactly as before. Rates you have already imported are not changed. The toggle only affects what happens on your next import or export. ## Disabling the toggle You can turn New Shipping Options off at any time. When off, the app goes back to the 13-column v1.1 format for exports and imports. The new columns are ignored if present in an uploaded file. This feature uses a part of Shopify's platform that is still in development. Shopify may update it without notice, which could temporarily affect how transit times and free shipping thresholds appear at checkout. If you notice unexpected behaviour after a Shopify update, contact us at [support@dojoapps.co.uk](mailto:support@dojoapps.co.uk). ## What to do next Transit times, free shipping thresholds, and the updated column layout. Group multiple rows into a single shipping option with price tiers. # Grouped (Tiered) Rates Source: https://docs.dojoapps.co.uk/new-shipping-options/grouped-rates Set up tiered pricing for a single shipping option by grouping multiple rows with the same rate name. Grouped rates let you create a single shipping option that changes price depending on the order value or weight. Instead of one flat price, you can offer, for example, £3.50 for orders under £50, £1.99 for orders £50–£99.99, and free from £100 — all under one "Standard Shipping" option at checkout. Grouped rates are only available when **New Shipping Options** is enabled. See [Enabling New Shipping Options](/new-shipping-options/enable) if you haven't turned it on yet. ## How grouping works There is no extra column to fill in. Grouping is **automatic**: any two or more rows in the same shipping zone with the same rate name are submitted to Shopify as a single shipping option with multiple price tiers. Name matching is case-insensitive and ignores leading or trailing spaces. `Royal Mail Tracked 24®` and `royal mail tracked 24®` are treated as the same group. ## Example The following three rows create a single "Standard" option with subtotal-based tiers: | Name | Price | Order Subtotal >= | Order Subtotal \<= | | -------- | -------- | ----------------- | ------------------ | | Standard | 5.99 GBP | 0 | 49.99 GBP | | Standard | 2.99 GBP | 50.00 GBP | 99.99 GBP | | Standard | 0.00 GBP | 100.00 GBP | | ```csv theme={null} Zone,Country Code,Country Name,Province,Postcode,City,Name,Description,Price,Order Subtotal >=,Order Subtotal <=,Weight >=,Weight <=,Transit Time Min Days,Transit Time Max Days,Free Min Order Amount UK Standard,GB,United Kingdom,*,*,*,Standard,,5.99 GBP,0,49.99 GBP,,,,, UK Standard,GB,United Kingdom,*,*,*,Standard,,2.99 GBP,50.00 GBP,99.99 GBP,,,,, UK Standard,GB,United Kingdom,*,*,*,Standard,,0.00 GBP,100.00 GBP,,,,,, ``` The top tier has a blank `Order Subtotal <=` — this is an **open-ended tier**, meaning it covers all orders above £100 with no upper limit. The open-ended tier must always be the last (highest) tier in the group. ## Rules Follow these rules to avoid import errors when using grouped rates. ### Tiers must be contiguous Each tier's lower bound must immediately follow the previous tier's upper bound, with a gap of exactly £0.01 for subtotal tiers or 0.0001 for weight tiers. For the example above: * Tier 1 ends at `49.99` — Tier 2 must start at `50.00` ✓ * Tier 2 ends at `99.99` — Tier 3 must start at `100.00` ✓ If there is a gap or overlap, you will see an error message that tells you the exact value the next tier must start at. ### Use one condition type per group All rows in a group must use the same type of condition — either all subtotal-based (`Order Subtotal >=` / `Order Subtotal <=`) or all weight-based (`Weight >=` / `Weight <=`). Mixing the two types in the same group is not allowed. ### Use one currency or weight unit per group All subtotal tiers in a group must use the same currency (e.g., all GBP). All weight tiers must use the same weight unit (e.g., all kg). If a row uses a different unit, it will be rejected. ### The open-ended tier must be last Only the highest tier — the one with the largest lower bound — may have a blank upper bound. If an earlier tier in a group has a blank upper bound, the import will fail. ### No duplicate flat rates Two rows with the same name, **the same country**, and no conditions cannot coexist in the same zone. If you want multiple price points for the same country, add `Order Subtotal` or `Weight` conditions to each row to create tiers. **Listing the same rate for multiple countries is fine.** A rate applies to every country in its zone, and the expected way to express that is one row per country: ```csv theme={null} Zone,Country Code,Country Name,Province,Postcode,City,Name,Description,Price,Order Subtotal >=,Order Subtotal <=,Weight >=,Weight <=,Transit Time Min Days,Transit Time Max Days,Free Min Order Amount Europe,FR,France,*,*,*,Colissimo International,,15.00 EUR,,,,,1,3, Europe,DE,Germany,*,*,*,Colissimo International,,15.00 EUR,,,,,1,3, ``` These two rows create one "Colissimo International" rate that covers both France and Germany. The rows are deduplicated — Shopify receives a single rate, not two. A rate and its `Free Min Order Amount` apply to **all countries in the zone**. If you need a different threshold (or no threshold) for a specific country, put that country in its own zone. ### Free shipping thresholds must match across the group If you set a `Free Min Order Amount` on any row in a group, every row that has a value must use the **same amount**. Rows with a blank `Free Min Order Amount` are fine — only rows with a non-blank, conflicting value are rejected. ## Common errors **Cause:** Some rows in the group have subtotal conditions and others have weight conditions. **Fix:** Split the rate into two separate names — one for subtotal-based tiers and one for weight-based tiers. **Cause:** There is a gap or overlap between two consecutive tiers. The error message tells you the exact value Z that the next tier must begin at. **Fix:** Update the lower bound of the affected tier to the value shown in the error. **Cause:** A tier that is not the last in the group has a blank upper bound (`Order Subtotal <=` or `Weight <=`). **Fix:** Add an upper bound to all tiers except the final (open-ended) one. Sort your tiers from lowest to highest to identify which one is missing its upper bound. **Cause:** Two or more rows have the same name, the same country, and no conditions — making them identical flat rates for that country. **Fix:** If you want multiple price points, add `Order Subtotal` or `Weight` conditions to each row to create tiers. If they were meant to be different rates, give them different names. If you were trying to list the same rate for multiple countries, make sure each row uses a different `Country Code` — that is valid and will not trigger this error. **Cause:** One or more rows in the group use a different currency to the rest. **Fix:** Make sure all rows in the group use the same three-letter currency code in their price and subtotal columns. **Cause:** Two rows in the same group both have a `Free Min Order Amount` set, but the values are different. **Fix:** Use the same threshold value on all rows in the group, or leave the column blank on all rows. ## Free shipping thresholds with tiered rates You can combine a free shipping threshold with tiered pricing. Set the same `Free Min Order Amount` on all rows in the group. When a customer's order reaches the threshold, Shopify makes the entire rate free — regardless of which tier the order falls into. The tier prices still apply for orders below the threshold. ## Single-rate behaviour is unchanged If a rate name appears only once in a zone (no other rows share the name), it continues to work exactly as before — as a flat rate with optional conditions. Grouping only applies when two or more rows share the same name in the same zone. ## What to do next Transit times, free shipping thresholds, and the full column layout. Step-by-step instructions for uploading your CSV. # New CSV Columns Source: https://docs.dojoapps.co.uk/new-shipping-options/new-columns Reference for the three new columns in the v1.2 CSV format: transit times, free shipping thresholds, and the updated column layout. With New Shipping Options enabled, you can add three things to any shipping rate: an estimated delivery window, a free shipping threshold, and tiered pricing. All three are set in your CSV — this page covers how to fill in each column. These columns only take effect when **New Shipping Options** is enabled. See [Enabling New Shipping Options](/new-shipping-options/enable) to turn it on. ## Transit Time Min Days and Transit Time Max Days These two columns let you show customers an estimated delivery window at checkout alongside the rate name and price. | Column | Description | Example | | ----------------------- | ------------------------------ | ------- | | `Transit Time Min Days` | Earliest expected delivery day | `2` | | `Transit Time Max Days` | Latest expected delivery day | `5` | **Format:** A whole number of 1 or greater. Decimals, zero, negative numbers, and non-numeric values are all rejected. **Rules:** * Set both columns together or leave both blank. A row with only one side filled is accepted by the app but may not display correctly at checkout. * The minimum cannot exceed the maximum. * If both cells are blank, no delivery window is shown for that rate. **On export:** If a rate in Shopify has no transit time set, both cells are blank — not zero. ### Transit time errors | Error message | Cause | Fix | | --------------------------------------------------------- | ------------------------------------------------ | ---------------------------------------------------- | | `Transit Time Min must be a positive integer (minimum 1)` | Min is zero, negative, a decimal, or non-numeric | Enter a whole number of 1 or greater, or leave blank | | `Transit Time Max must be a positive integer (minimum 1)` | Max is zero, negative, a decimal, or non-numeric | Enter a whole number of 1 or greater, or leave blank | | `Transit Time Min cannot exceed Transit Time Max` | The minimum is larger than the maximum | Correct whichever value is wrong | *** ## Free Min Order Amount This column sets an order value above which a shipping rate becomes free. When a customer's order total reaches your threshold, Shopify charges nothing for that rate. The normal price applies for orders below the threshold. | Column | Description | Example | | ----------------------- | ----------------------------------------- | ----------- | | `Free Min Order Amount` | Order value above which this rate is free | `50.00 GBP` | **Format:** A positive number followed by a three-letter currency code, separated by a space (e.g. `100.00 GBP`, `50.00 USD`, `200.00 EUR`). The currency must match your store's primary currency. Leave the cell blank for no threshold. **Rules:** * Must be greater than zero. * Currency code required. * Currency must match the `Price` column currency for that row. * If used on a [grouped rate](/new-shipping-options/grouped-rates), all rows in the group must use the same threshold value. ### Free threshold errors **Cause:** You entered `0` or `0.00`. **Fix:** Enter a positive amount (e.g. `50.00 GBP`), or leave the cell blank. **Cause:** The value starts with a minus sign. **Fix:** Enter a positive amount instead. **Cause:** The cell contains text that cannot be parsed as a number (e.g. `fifty pounds` or `£50`). **Fix:** Use the format ` ` (e.g. `50.00 GBP`). Do not include currency symbols. **Cause:** The currency code in the threshold doesn't match the currency in the `Price` column for the same row. **Fix:** Use the same currency code in both columns. ## What to do next Set up tiered pricing under a single rate name. Step-by-step instructions for uploading your CSV. # Spreadsheet Reference Source: https://docs.dojoapps.co.uk/spreadsheet-reference Column-by-column reference for the MatrixRates spreadsheet format. 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 | Column | Required | Available On | Accepted values | Example | | --------------------- | -------- | -------------------- | ---------------------------------------------------------------------------------------- | ---------------------- | | Zone | Yes | All Plans | Any zone name you've set up in Shopify | "US Standard" | | Country Code | Yes | All Plans | Two-letter country code or `*` for all countries | "US" | | Country Name | No | All Plans | Full name of the country | "United States" | | Province | No | All Plans | Full state name, comma-separated list, or `*` for all | "California" | | Postcode | No | Growth, Scale | Comma-separated ZIP codes or wildcards (902\*); `*` on its own makes the rate a fallback | "10001, 10002" | | City | No | Growth, Scale | Comma-separated cities or wildcards (New \*); `*` on its own makes the rate a fallback | "New York, London" | | Name | Yes | All Plans | A short name for this rate | "Standard Shipping" | | Description | No | All Plans | What the merchant sees at checkout | "Delivery in 3-7 days" | | Price | Yes | All Plans | Number (uses store currency) or Number + Currency (USD, GBP, etc.) | 9.99 | | Order Subtotal >= | No | All Plans | Number (uses store currency) or Number + Currency (USD, GBP, etc.) | 0 | | Order Subtotal \<= | No | All Plans | Number (uses store currency) or Number + Currency (USD, GBP, etc.) | "100.00 USD" | | Weight >= | No | All Plans | Number (uses store unit) or Number + Unit (g, kg, oz, lb) | "10 kg" | | Weight \<= | No | All Plans | Number (uses store unit) or Number + Unit (g, kg, oz, lb) | "20kg" | | Transit Time Min Days | No | New Shipping Options | Whole number, 1 or greater | `3` | | Transit Time Max Days | No | New Shipping Options | Whole number, 1 or greater | `7` | | Free Min Order Amount | No | New Shipping Options | Number + currency code | `50.00 GBP` | ## 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 | Country Code | | -------------------------------------------- | ------------ | | Afghanistan | AF | | Aland Islands | AX | | Albania | AL | | Algeria | DZ | | Andorra | AD | | Angola | AO | | Anguilla | AI | | Antigua And Barbuda | AG | | Argentina | AR | | Armenia | AM | | Aruba | AW | | Ascension Island | AC | | Australia | AU | | Austria | AT | | Azerbaijan | AZ | | Bahamas | BS | | Bahrain | BH | | Bangladesh | BD | | Barbados | BB | | Belarus | BY | | Belgium | BE | | Belize | BZ | | Benin | BJ | | Bermuda | BM | | Bhutan | BT | | Bolivia | BO | | Bosnia And Herzegovina | BA | | Botswana | BW | | Brazil | BR | | British Indian Ocean Territory | IO | | Brunei | BN | | Bulgaria | BG | | Burkina Faso | BF | | Burundi | BI | | Cambodia | KH | | Canada | CA | | Cape Verde | CV | | Caribbean Netherlands | BQ | | Cayman Islands | KY | | Central African Republic | CF | | Chad | TD | | Chile | CL | | China | CN | | Christmas Island | CX | | Cocos (Keeling) Islands | CC | | Colombia | CO | | Comoros | KM | | Congo | CG | | Congo, The Democratic Republic Of The | CD | | Cook Islands | CK | | Costa Rica | CR | | Côte d'Ivoire | CI | | Croatia | HR | | Curaçao | CW | | Cyprus | CY | | Czech Republic | CZ | | Denmark | DK | | Djibouti | DJ | | Dominica | DM | | Dominican Republic | DO | | Ecuador | EC | | Egypt | EG | | El Salvador | SV | | Equatorial Guinea | GQ | | Eritrea | ER | | Estonia | EE | | Eswatini | SZ | | Ethiopia | ET | | Falkland Islands (Malvinas) | FK | | Faroe Islands | FO | | Fiji | FJ | | Finland | FI | | France | FR | | French Guiana | GF | | French Polynesia | PF | | French Southern Territories | TF | | Gabon | GA | | Gambia | GM | | Georgia | GE | | Germany | DE | | Ghana | GH | | Gibraltar | GI | | Greece | GR | | Greenland | GL | | Grenada | GD | | Guadeloupe | GP | | Guatemala | GT | | Guernsey | GG | | Guinea | GN | | Guinea Bissau | GW | | Guyana | GY | | Haiti | HT | | Holy See (Vatican City State) | VA | | Honduras | HN | | Hong Kong | HK | | Hungary | HU | | Iceland | IS | | India | IN | | Indonesia | ID | | Iraq | IQ | | Ireland | IE | | Isle Of Man | IM | | Israel | IL | | Italy | IT | | Jamaica | JM | | Japan | JP | | Jersey | JE | | Jordan | JO | | Kazakhstan | KZ | | Kenya | KE | | Kiribati | KI | | Kosovo | XK | | Kuwait | KW | | Kyrgyzstan | KG | | Lao People's Democratic Republic | LA | | Latvia | LV | | Lebanon | LB | | Lesotho | LS | | Liberia | LR | | Libyan Arab Jamahiriya | LY | | Liechtenstein | LI | | Lithuania | LT | | Luxembourg | LU | | Macao | MO | | Madagascar | MG | | Malawi | MW | | Malaysia | MY | | Maldives | MV | | Mali | ML | | Malta | MT | | Martinique | MQ | | Mauritania | MR | | Mauritius | MU | | Mayotte | YT | | Mexico | MX | | Moldova, Republic of | MD | | Monaco | MC | | Mongolia | MN | | Montenegro | ME | | Montserrat | MS | | Morocco | MA | | Mozambique | MZ | | Myanmar | MM | | Namibia | NA | | Nauru | NR | | Nepal | NP | | Netherlands | NL | | New Caledonia | NC | | New Zealand | NZ | | Nicaragua | NI | | Niger | NE | | Nigeria | NG | | Niue | NU | | Norfolk Island | NF | | North Macedonia | MK | | Norway | NO | | Oman | OM | | Pakistan | PK | | Palestinian Territory, Occupied | PS | | Panama | PA | | Papua New Guinea | PG | | Paraguay | PY | | Peru | PE | | Philippines | PH | | Pitcairn | PN | | Poland | PL | | Portugal | PT | | Qatar | QA | | Republic of Cameroon | CM | | Reunion | RE | | Romania | RO | | Russia | RU | | Rwanda | RW | | Saint Barthélemy | BL | | Saint Helena | SH | | Saint Kitts And Nevis | KN | | Saint Lucia | LC | | Saint Martin | MF | | Saint Pierre And Miquelon | PM | | Samoa | WS | | San Marino | SM | | Sao Tome And Principe | ST | | Saudi Arabia | SA | | Senegal | SN | | Serbia | RS | | Seychelles | SC | | Sierra Leone | SL | | Singapore | SG | | Sint Maarten | SX | | Slovakia | SK | | Slovenia | SI | | Solomon Islands | SB | | Somalia | SO | | South Africa | ZA | | South Georgia And The South Sandwich Islands | GS | | South Korea | KR | | South Sudan | SS | | Spain | ES | | Sri Lanka | LK | | St. Vincent | VC | | Sudan | SD | | Suriname | SR | | Svalbard And Jan Mayen | SJ | | Sweden | SE | | Switzerland | CH | | Taiwan | TW | | Tajikistan | TJ | | Tanzania, United Republic Of | TZ | | Thailand | TH | | Timor Leste | TL | | Togo | TG | | Tokelau | TK | | Tonga | TO | | Trinidad and Tobago | TT | | Tristan da Cunha | TA | | Tunisia | TN | | Turkey | TR | | Turkmenistan | TM | | Turks and Caicos Islands | TC | | Tuvalu | TV | | Uganda | UG | | Ukraine | UA | | United Arab Emirates | AE | | United Kingdom | GB | | United States | US | | United States Minor Outlying Islands | UM | | Uruguay | UY | | Uzbekistan | UZ | | Vanuatu | VU | | Venezuela | VE | | Vietnam | VN | | Virgin Islands, British | VG | | Wallis And Futuna | WF | | Western Sahara | EH | | Yemen | YE | | Zambia | ZM | | Zimbabwe | ZW | ### 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. | Province | Country Name | Country Code | | ---------------------------------------- | -------------------- | ------------ | | Buenos Aires | Argentina | AR | | Catamarca | Argentina | AR | | Chaco | Argentina | AR | | Chubut | Argentina | AR | | Ciudad Autónoma de Buenos Aires | Argentina | AR | | Córdoba | Argentina | AR | | Corrientes | Argentina | AR | | Entre Ríos | Argentina | AR | | Formosa | Argentina | AR | | Jujuy | Argentina | AR | | La Pampa | Argentina | AR | | La Rioja | Argentina | AR | | Mendoza | Argentina | AR | | Misiones | Argentina | AR | | Neuquén | Argentina | AR | | Río Negro | Argentina | AR | | Salta | Argentina | AR | | San Juan | Argentina | AR | | San Luis | Argentina | AR | | Santa Cruz | Argentina | AR | | Santa Fe | Argentina | AR | | Santiago Del Estero | Argentina | AR | | Tierra Del Fuego | Argentina | AR | | Tucumán | Argentina | AR | | Australian Capital Territory | Australia | AU | | New South Wales | Australia | AU | | Northern Territory | Australia | AU | | Queensland | Australia | AU | | South Australia | Australia | AU | | Tasmania | Australia | AU | | Victoria | Australia | AU | | Western Australia | Australia | AU | | Acre | Brazil | BR | | Alagoas | Brazil | BR | | Amapá | Brazil | BR | | Amazonas | Brazil | BR | | Bahia | Brazil | BR | | Ceará | Brazil | BR | | Distrito Federal | Brazil | BR | | Espírito Santo | Brazil | BR | | Goiás | Brazil | BR | | Maranhão | Brazil | BR | | Mato Grosso | Brazil | BR | | Mato Grosso do Sul | Brazil | BR | | Minas Gerais | Brazil | BR | | Pará | Brazil | BR | | Paraíba | Brazil | BR | | Paraná | Brazil | BR | | Pernambuco | Brazil | BR | | Piauí | Brazil | BR | | Rio de Janeiro | Brazil | BR | | Rio Grande do Norte | Brazil | BR | | Rio Grande do Sul | Brazil | BR | | Rondônia | Brazil | BR | | Roraima | Brazil | BR | | Santa Catarina | Brazil | BR | | São Paulo | Brazil | BR | | Sergipe | Brazil | BR | | Tocantins | Brazil | BR | | Alberta | Canada | CA | | British Columbia | Canada | CA | | Manitoba | Canada | CA | | New Brunswick | Canada | CA | | Newfoundland and Labrador | Canada | CA | | Northwest Territories | Canada | CA | | Nova Scotia | Canada | CA | | Nunavut | Canada | CA | | Ontario | Canada | CA | | Prince Edward Island | Canada | CA | | Quebec | Canada | CA | | Saskatchewan | Canada | CA | | Yukon | Canada | CA | | Antofagasta | Chile | CL | | Araucanía | Chile | CL | | Arica and Parinacota | Chile | CL | | Atacama | Chile | CL | | Aysén | Chile | CL | | Biobío | Chile | CL | | Coquimbo | Chile | CL | | Los Lagos | Chile | CL | | Los Ríos | Chile | CL | | Magallanes | Chile | CL | | Maule | Chile | CL | | Ñuble | Chile | CL | | O'Higgins | Chile | CL | | Santiago | Chile | CL | | Tarapacá | Chile | CL | | Valparaíso | Chile | CL | | Anhui | China | CN | | Beijing | China | CN | | Chongqing | China | CN | | Fujian | China | CN | | Gansu | China | CN | | Guangdong | China | CN | | Guangxi | China | CN | | Guizhou | China | CN | | Hainan | China | CN | | Hebei | China | CN | | Heilongjiang | China | CN | | Henan | China | CN | | Hubei | China | CN | | Hunan | China | CN | | Inner Mongolia | China | CN | | Jiangsu | China | CN | | Jiangxi | China | CN | | Jilin | China | CN | | Liaoning | China | CN | | Ningxia | China | CN | | Qinghai | China | CN | | Shaanxi | China | CN | | Shandong | China | CN | | Shanghai | China | CN | | Shanxi | China | CN | | Sichuan | China | CN | | Tianjin | China | CN | | Xinjiang | China | CN | | Xizang | China | CN | | Yunnan | China | CN | | Zhejiang | China | CN | | Amazonas | Colombia | CO | | Antioquia | Colombia | CO | | Arauca | Colombia | CO | | Atlántico | Colombia | CO | | Bogotá, D.C. | Colombia | CO | | Bolívar | Colombia | CO | | Boyacá | Colombia | CO | | Caldas | Colombia | CO | | Caquetá | Colombia | CO | | Casanare | Colombia | CO | | Cauca | Colombia | CO | | Cesar | Colombia | CO | | Chocó | Colombia | CO | | Córdoba | Colombia | CO | | Cundinamarca | Colombia | CO | | Guainía | Colombia | CO | | Guaviare | Colombia | CO | | Huila | Colombia | CO | | La Guajira | Colombia | CO | | Magdalena | Colombia | CO | | Meta | Colombia | CO | | Nariño | Colombia | CO | | Norte de Santander | Colombia | CO | | Putumayo | Colombia | CO | | Quindío | Colombia | CO | | Risaralda | Colombia | CO | | San Andrés, Providencia y Santa Catalina | Colombia | CO | | Santander | Colombia | CO | | Sucre | Colombia | CO | | Tolima | Colombia | CO | | Valle del Cauca | Colombia | CO | | Vaupés | Colombia | CO | | Vichada | Colombia | CO | | Alajuela | Costa Rica | CR | | Cartago | Costa Rica | CR | | Guanacaste | Costa Rica | CR | | Heredia | Costa Rica | CR | | Limón | Costa Rica | CR | | Puntarenas | Costa Rica | CR | | San José | Costa Rica | CR | | 6th of October | Egypt | EG | | Al Sharqia | Egypt | EG | | Alexandria | Egypt | EG | | Aswan | Egypt | EG | | Asyut | Egypt | EG | | Beheira | Egypt | EG | | Beni Suef | Egypt | EG | | Cairo | Egypt | EG | | Dakahlia | Egypt | EG | | Damietta | Egypt | EG | | Faiyum | Egypt | EG | | Gharbia | Egypt | EG | | Giza | Egypt | EG | | Helwan | Egypt | EG | | Ismailia | Egypt | EG | | Kafr el-Sheikh | Egypt | EG | | Luxor | Egypt | EG | | Matrouh | Egypt | EG | | Minya | Egypt | EG | | Monufia | Egypt | EG | | New Valley | Egypt | EG | | North Sinai | Egypt | EG | | Port Said | Egypt | EG | | Qalyubia | Egypt | EG | | Qena | Egypt | EG | | Red Sea | Egypt | EG | | Sohag | Egypt | EG | | South Sinai | Egypt | EG | | Suez | Egypt | EG | | Ahuachapán | El Salvador | SV | | Cabañas | El Salvador | SV | | Chalatenango | El Salvador | SV | | Cuscatlán | El Salvador | SV | | La Libertad | El Salvador | SV | | La Paz | El Salvador | SV | | La Unión | El Salvador | SV | | Morazán | El Salvador | SV | | San Miguel | El Salvador | SV | | San Salvador | El Salvador | SV | | San Vicente | El Salvador | SV | | Santa Ana | El Salvador | SV | | Sonsonate | El Salvador | SV | | Usulután | El Salvador | SV | | Alta Verapaz | Guatemala | GT | | Baja Verapaz | Guatemala | GT | | Chimaltenango | Guatemala | GT | | Chiquimula | Guatemala | GT | | El Progreso | Guatemala | GT | | Escuintla | Guatemala | GT | | Guatemala | Guatemala | GT | | Huehuetenango | Guatemala | GT | | Izabal | Guatemala | GT | | Jalapa | Guatemala | GT | | Jutiapa | Guatemala | GT | | Petén | Guatemala | GT | | Quetzaltenango | Guatemala | GT | | Quiché | Guatemala | GT | | Retalhuleu | Guatemala | GT | | Sacatepéquez | Guatemala | GT | | San Marcos | Guatemala | GT | | Santa Rosa | Guatemala | GT | | Sololá | Guatemala | GT | | Suchitepéquez | Guatemala | GT | | Totonicapán | Guatemala | GT | | Zacapa | Guatemala | GT | | Hong Kong Island | Hong Kong | HK | | Kowloon | Hong Kong | HK | | New Territories | Hong Kong | HK | | Andaman and Nicobar Islands | India | IN | | Andhra Pradesh | India | IN | | Arunachal Pradesh | India | IN | | Assam | India | IN | | Bihar | India | IN | | Chandigarh | India | IN | | Chhattisgarh | India | IN | | Dadra and Nagar Haveli | India | IN | | Daman and Diu | India | IN | | Delhi | India | IN | | Goa | India | IN | | Gujarat | India | IN | | Haryana | India | IN | | Himachal Pradesh | India | IN | | Jammu and Kashmir | India | IN | | Jharkhand | India | IN | | Karnataka | India | IN | | Kerala | India | IN | | Ladakh | India | IN | | Lakshadweep | India | IN | | Madhya Pradesh | India | IN | | Maharashtra | India | IN | | Manipur | India | IN | | Meghalaya | India | IN | | Mizoram | India | IN | | Nagaland | India | IN | | Odisha | India | IN | | Puducherry | India | IN | | Punjab | India | IN | | Rajasthan | India | IN | | Sikkim | India | IN | | Tamil Nadu | India | IN | | Telangana | India | IN | | Tripura | India | IN | | Uttar Pradesh | India | IN | | Uttarakhand | India | IN | | West Bengal | India | IN | | Aceh | Indonesia | ID | | Bali | Indonesia | ID | | Bangka Belitung | Indonesia | ID | | Banten | Indonesia | ID | | Bengkulu | Indonesia | ID | | Gorontalo | Indonesia | ID | | Jakarta | Indonesia | ID | | Jambi | Indonesia | ID | | Jawa Barat | Indonesia | ID | | Jawa Tengah | Indonesia | ID | | Jawa Timur | Indonesia | ID | | Kalimantan Barat | Indonesia | ID | | Kalimantan Selatan | Indonesia | ID | | Kalimantan Tengah | Indonesia | ID | | Kalimantan Timur | Indonesia | ID | | Kalimantan Utara | Indonesia | ID | | Kepulauan Riau | Indonesia | ID | | Lampung | Indonesia | ID | | Maluku | Indonesia | ID | | Maluku Utara | Indonesia | ID | | North Sumatra | Indonesia | ID | | Nusa Tenggara Barat | Indonesia | ID | | Nusa Tenggara Timur | Indonesia | ID | | Papua | Indonesia | ID | | Papua Barat | Indonesia | ID | | Riau | Indonesia | ID | | South Sumatra | Indonesia | ID | | Sulawesi Barat | Indonesia | ID | | Sulawesi Selatan | Indonesia | ID | | Sulawesi Tengah | Indonesia | ID | | Sulawesi Tenggara | Indonesia | ID | | Sulawesi Utara | Indonesia | ID | | West Sumatra | Indonesia | ID | | Yogyakarta | Indonesia | ID | | Carlow | Ireland | IE | | Cavan | Ireland | IE | | Clare | Ireland | IE | | Cork | Ireland | IE | | Donegal | Ireland | IE | | Dublin | Ireland | IE | | Galway | Ireland | IE | | Kerry | Ireland | IE | | Kildare | Ireland | IE | | Kilkenny | Ireland | IE | | Laois | Ireland | IE | | Leitrim | Ireland | IE | | Limerick | Ireland | IE | | Longford | Ireland | IE | | Louth | Ireland | IE | | Mayo | Ireland | IE | | Meath | Ireland | IE | | Monaghan | Ireland | IE | | Offaly | Ireland | IE | | Roscommon | Ireland | IE | | Sligo | Ireland | IE | | Tipperary | Ireland | IE | | Waterford | Ireland | IE | | Westmeath | Ireland | IE | | Wexford | Ireland | IE | | Wicklow | Ireland | IE | | Agrigento | Italy | IT | | Alessandria | Italy | IT | | Ancona | Italy | IT | | Aosta | Italy | IT | | Arezzo | Italy | IT | | Ascoli Piceno | Italy | IT | | Asti | Italy | IT | | Avellino | Italy | IT | | Bari | Italy | IT | | Barletta-Andria-Trani | Italy | IT | | Belluno | Italy | IT | | Benevento | Italy | IT | | Bergamo | Italy | IT | | Biella | Italy | IT | | Bologna | Italy | IT | | Bolzano | Italy | IT | | Brescia | Italy | IT | | Brindisi | Italy | IT | | Cagliari | Italy | IT | | Caltanissetta | Italy | IT | | Campobasso | Italy | IT | | Carbonia-Iglesias | Italy | IT | | Caserta | Italy | IT | | Catania | Italy | IT | | Catanzaro | Italy | IT | | Chieti | Italy | IT | | Como | Italy | IT | | Cosenza | Italy | IT | | Cremona | Italy | IT | | Crotone | Italy | IT | | Cuneo | Italy | IT | | Enna | Italy | IT | | Fermo | Italy | IT | | Ferrara | Italy | IT | | Firenze | Italy | IT | | Foggia | Italy | IT | | Forlì-Cesena | Italy | IT | | Frosinone | Italy | IT | | Genova | Italy | IT | | Gorizia | Italy | IT | | Grosseto | Italy | IT | | Imperia | Italy | IT | | Isernia | Italy | IT | | L'Aquila | Italy | IT | | La Spezia | Italy | IT | | Latina | Italy | IT | | Lecce | Italy | IT | | Lecco | Italy | IT | | Livorno | Italy | IT | | Lodi | Italy | IT | | Lucca | Italy | IT | | Macerata | Italy | IT | | Mantova | Italy | IT | | Massa-Carrara | Italy | IT | | Matera | Italy | IT | | Medio Campidano | Italy | IT | | Messina | Italy | IT | | Milano | Italy | IT | | Modena | Italy | IT | | Monza e Brianza | Italy | IT | | Napoli | Italy | IT | | Novara | Italy | IT | | Nuoro | Italy | IT | | Ogliastra | Italy | IT | | Olbia-Tempio | Italy | IT | | Oristano | Italy | IT | | Padova | Italy | IT | | Palermo | Italy | IT | | Parma | Italy | IT | | Pavia | Italy | IT | | Perugia | Italy | IT | | Pesaro e Urbino | Italy | IT | | Pescara | Italy | IT | | Piacenza | Italy | IT | | Pisa | Italy | IT | | Pistoia | Italy | IT | | Pordenone | Italy | IT | | Potenza | Italy | IT | | Prato | Italy | IT | | Ragusa | Italy | IT | | Ravenna | Italy | IT | | Reggio Calabria | Italy | IT | | Reggio Emilia | Italy | IT | | Rieti | Italy | IT | | Rimini | Italy | IT | | Roma | Italy | IT | | Rovigo | Italy | IT | | Salerno | Italy | IT | | Sassari | Italy | IT | | Savona | Italy | IT | | Siena | Italy | IT | | Siracusa | Italy | IT | | Sondrio | Italy | IT | | Taranto | Italy | IT | | Teramo | Italy | IT | | Terni | Italy | IT | | Torino | Italy | IT | | Trapani | Italy | IT | | Trento | Italy | IT | | Treviso | Italy | IT | | Trieste | Italy | IT | | Udine | Italy | IT | | Varese | Italy | IT | | Venezia | Italy | IT | | Verbano-Cusio-Ossola | Italy | IT | | Vercelli | Italy | IT | | Verona | Italy | IT | | Vibo Valentia | Italy | IT | | Vicenza | Italy | IT | | Viterbo | Italy | IT | | Aichi | Japan | JP | | Akita | Japan | JP | | Aomori | Japan | JP | | Chiba | Japan | JP | | Ehime | Japan | JP | | Fukui | Japan | JP | | Fukuoka | Japan | JP | | Fukushima | Japan | JP | | Gifu | Japan | JP | | Gunma | Japan | JP | | Hiroshima | Japan | JP | | Hokkaidō | Japan | JP | | Hyōgo | Japan | JP | | Ibaraki | Japan | JP | | Ishikawa | Japan | JP | | Iwate | Japan | JP | | Kagawa | Japan | JP | | Kagoshima | Japan | JP | | Kanagawa | Japan | JP | | Kōchi | Japan | JP | | Kumamoto | Japan | JP | | Kyōto | Japan | JP | | Mie | Japan | JP | | Miyagi | Japan | JP | | Miyazaki | Japan | JP | | Nagano | Japan | JP | | Nagasaki | Japan | JP | | Nara | Japan | JP | | Niigata | Japan | JP | | Ōita | Japan | JP | | Okayama | Japan | JP | | Okinawa | Japan | JP | | Ōsaka | Japan | JP | | Saga | Japan | JP | | Saitama | Japan | JP | | Shiga | Japan | JP | | Shimane | Japan | JP | | Shizuoka | Japan | JP | | Tochigi | Japan | JP | | Tokushima | Japan | JP | | Tōkyō | Japan | JP | | Tottori | Japan | JP | | Toyama | Japan | JP | | Wakayama | Japan | JP | | Yamagata | Japan | JP | | Yamaguchi | Japan | JP | | Yamanashi | Japan | JP | | Al Ahmadi | Kuwait | KW | | Al Asimah | Kuwait | KW | | Al Farwaniyah | Kuwait | KW | | Al Jahra | Kuwait | KW | | Hawalli | Kuwait | KW | | Mubarak Al-Kabeer | Kuwait | KW | | Johor | Malaysia | MY | | Kedah | Malaysia | MY | | Kelantan | Malaysia | MY | | Kuala Lumpur | Malaysia | MY | | Labuan | Malaysia | MY | | Melaka | Malaysia | MY | | Negeri Sembilan | Malaysia | MY | | Pahang | Malaysia | MY | | Penang | Malaysia | MY | | Perak | Malaysia | MY | | Perlis | Malaysia | MY | | Putrajaya | Malaysia | MY | | Sabah | Malaysia | MY | | Sarawak | Malaysia | MY | | Selangor | Malaysia | MY | | Terengganu | Malaysia | MY | | Aguascalientes | Mexico | MX | | Baja California | Mexico | MX | | Baja California Sur | Mexico | MX | | Campeche | Mexico | MX | | Chiapas | Mexico | MX | | Chihuahua | Mexico | MX | | Ciudad de México | Mexico | MX | | Coahuila | Mexico | MX | | Colima | Mexico | MX | | Durango | Mexico | MX | | Guanajuato | Mexico | MX | | Guerrero | Mexico | MX | | Hidalgo | Mexico | MX | | Jalisco | Mexico | MX | | México | Mexico | MX | | Michoacán | Mexico | MX | | Morelos | Mexico | MX | | Nayarit | Mexico | MX | | Nuevo León | Mexico | MX | | Oaxaca | Mexico | MX | | Puebla | Mexico | MX | | Querétaro | Mexico | MX | | Quintana Roo | Mexico | MX | | San Luis Potosí | Mexico | MX | | Sinaloa | Mexico | MX | | Sonora | Mexico | MX | | Tabasco | Mexico | MX | | Tamaulipas | Mexico | MX | | Tlaxcala | Mexico | MX | | Veracruz | Mexico | MX | | Yucatán | Mexico | MX | | Zacatecas | Mexico | MX | | Auckland | New Zealand | NZ | | Bay of Plenty | New Zealand | NZ | | Canterbury | New Zealand | NZ | | Chatham Islands | New Zealand | NZ | | Gisborne | New Zealand | NZ | | Hawke's Bay | New Zealand | NZ | | Manawatu-Wanganui | New Zealand | NZ | | Marlborough | New Zealand | NZ | | Nelson | New Zealand | NZ | | Northland | New Zealand | NZ | | Otago | New Zealand | NZ | | Southland | New Zealand | NZ | | Taranaki | New Zealand | NZ | | Tasman | New Zealand | NZ | | Waikato | New Zealand | NZ | | Wellington | New Zealand | NZ | | West Coast | New Zealand | NZ | | Abia | Nigeria | NG | | Abuja Federal Capital Territory | Nigeria | NG | | Adamawa | Nigeria | NG | | Akwa Ibom | Nigeria | NG | | Anambra | Nigeria | NG | | Bauchi | Nigeria | NG | | Bayelsa | Nigeria | NG | | Benue | Nigeria | NG | | Borno | Nigeria | NG | | Cross River | Nigeria | NG | | Delta | Nigeria | NG | | Ebonyi | Nigeria | NG | | Edo | Nigeria | NG | | Ekiti | Nigeria | NG | | Enugu | Nigeria | NG | | Gombe | Nigeria | NG | | Imo | Nigeria | NG | | Jigawa | Nigeria | NG | | Kaduna | Nigeria | NG | | Kano | Nigeria | NG | | Katsina | Nigeria | NG | | Kebbi | Nigeria | NG | | Kogi | Nigeria | NG | | Kwara | Nigeria | NG | | Lagos | Nigeria | NG | | Nasarawa | Nigeria | NG | | Niger | Nigeria | NG | | Ogun | Nigeria | NG | | Ondo | Nigeria | NG | | Osun | Nigeria | NG | | Oyo | Nigeria | NG | | Plateau | Nigeria | NG | | Rivers | Nigeria | NG | | Sokoto | Nigeria | NG | | Taraba | Nigeria | NG | | Yobe | Nigeria | NG | | Zamfara | Nigeria | NG | | Bocas del Toro | Panama | PA | | Chiriquí | Panama | PA | | Coclé | Panama | PA | | Colón | Panama | PA | | Darién | Panama | PA | | Emberá | Panama | PA | | Herrera | Panama | PA | | Kuna Yala | Panama | PA | | Los Santos | Panama | PA | | Ngöbe-Buglé | Panama | PA | | Panamá | Panama | PA | | Panamá Oeste | Panama | PA | | Veraguas | Panama | PA | | Amazonas | Peru | PE | | Áncash | Peru | PE | | Apurímac | Peru | PE | | Arequipa | Peru | PE | | Ayacucho | Peru | PE | | Cajamarca | Peru | PE | | Callao | Peru | PE | | Cuzco | Peru | PE | | Huancavelica | Peru | PE | | Huánuco | Peru | PE | | Ica | Peru | PE | | Junín | Peru | PE | | La Libertad | Peru | PE | | Lambayeque | Peru | PE | | Lima (departamento) | Peru | PE | | Lima (provincia) | Peru | PE | | Loreto | Peru | PE | | Madre de Dios | Peru | PE | | Moquegua | Peru | PE | | Pasco | Peru | PE | | Piura | Peru | PE | | Puno | Peru | PE | | San Martín | Peru | PE | | Tacna | Peru | PE | | Tumbes | Peru | PE | | Ucayali | Peru | PE | | Abra | Philippines | PH | | Agusan del Norte | Philippines | PH | | Agusan del Sur | Philippines | PH | | Aklan | Philippines | PH | | Albay | Philippines | PH | | Antique | Philippines | PH | | Apayao | Philippines | PH | | Aurora | Philippines | PH | | Basilan | Philippines | PH | | Bataan | Philippines | PH | | Batanes | Philippines | PH | | Batangas | Philippines | PH | | Benguet | Philippines | PH | | Biliran | Philippines | PH | | Bohol | Philippines | PH | | Bukidnon | Philippines | PH | | Bulacan | Philippines | PH | | Cagayan | Philippines | PH | | Camarines Norte | Philippines | PH | | Camarines Sur | Philippines | PH | | Camiguin | Philippines | PH | | Capiz | Philippines | PH | | Catanduanes | Philippines | PH | | Cavite | Philippines | PH | | Cebu | Philippines | PH | | Cotabato | Philippines | PH | | Davao de Oro | Philippines | PH | | Davao del Norte | Philippines | PH | | Davao del Sur | Philippines | PH | | Davao Occidental | Philippines | PH | | Davao Oriental | Philippines | PH | | Dinagat Islands | Philippines | PH | | Eastern Samar | Philippines | PH | | Guimaras | Philippines | PH | | Ifugao | Philippines | PH | | Ilocos Norte | Philippines | PH | | Ilocos Sur | Philippines | PH | | Iloilo | Philippines | PH | | Isabela | Philippines | PH | | Kalinga | Philippines | PH | | La Union | Philippines | PH | | Laguna | Philippines | PH | | Lanao del Norte | Philippines | PH | | Lanao del Sur | Philippines | PH | | Leyte | Philippines | PH | | Maguindanao | Philippines | PH | | Marinduque | Philippines | PH | | Masbate | Philippines | PH | | Metro Manila | Philippines | PH | | Misamis Occidental | Philippines | PH | | Misamis Oriental | Philippines | PH | | Mountain Province | Philippines | PH | | Negros Occidental | Philippines | PH | | Negros Oriental | Philippines | PH | | Northern Samar | Philippines | PH | | Nueva Ecija | Philippines | PH | | Nueva Vizcaya | Philippines | PH | | Occidental Mindoro | Philippines | PH | | Oriental Mindoro | Philippines | PH | | Palawan | Philippines | PH | | Pampanga | Philippines | PH | | Pangasinan | Philippines | PH | | Quezon | Philippines | PH | | Quirino | Philippines | PH | | Rizal | Philippines | PH | | Romblon | Philippines | PH | | Samar | Philippines | PH | | Sarangani | Philippines | PH | | Siquijor | Philippines | PH | | Sorsogon | Philippines | PH | | South Cotabato | Philippines | PH | | Southern Leyte | Philippines | PH | | Sultan Kudarat | Philippines | PH | | Sulu | Philippines | PH | | Surigao del Norte | Philippines | PH | | Surigao del Sur | Philippines | PH | | Tarlac | Philippines | PH | | Tawi-Tawi | Philippines | PH | | Zambales | Philippines | PH | | Zamboanga del Norte | Philippines | PH | | Zamboanga del Sur | Philippines | PH | | Zamboanga Sibugay | Philippines | PH | | Açores | Portugal | PT | | Aveiro | Portugal | PT | | Beja | Portugal | PT | | Braga | Portugal | PT | | Bragança | Portugal | PT | | Castelo Branco | Portugal | PT | | Coimbra | Portugal | PT | | Évora | Portugal | PT | | Faro | Portugal | PT | | Guarda | Portugal | PT | | Leiria | Portugal | PT | | Lisboa | Portugal | PT | | Madeira | Portugal | PT | | Portalegre | Portugal | PT | | Porto | Portugal | PT | | Santarém | Portugal | PT | | Setúbal | Portugal | PT | | Viana do Castelo | Portugal | PT | | Vila Real | Portugal | PT | | Viseu | Portugal | PT | | Alba | Romania | RO | | Arad | Romania | RO | | Argeș | Romania | RO | | Bacău | Romania | RO | | Bihor | Romania | RO | | Bistrița-Năsăud | Romania | RO | | Botoșani | Romania | RO | | Brăila | Romania | RO | | Brașov | Romania | RO | | București | Romania | RO | | Buzău | Romania | RO | | Călărași | Romania | RO | | Caraș-Severin | Romania | RO | | Cluj | Romania | RO | | Constanța | Romania | RO | | Covasna | Romania | RO | | Dâmbovița | Romania | RO | | Dolj | Romania | RO | | Galați | Romania | RO | | Giurgiu | Romania | RO | | Gorj | Romania | RO | | Harghita | Romania | RO | | Hunedoara | Romania | RO | | Ialomița | Romania | RO | | Iași | Romania | RO | | Ilfov | Romania | RO | | Maramureș | Romania | RO | | Mehedinți | Romania | RO | | Mureș | Romania | RO | | Neamț | Romania | RO | | Olt | Romania | RO | | Prahova | Romania | RO | | Sălaj | Romania | RO | | Satu Mare | Romania | RO | | Sibiu | Romania | RO | | Suceava | Romania | RO | | Teleorman | Romania | RO | | Timiș | Romania | RO | | Tulcea | Romania | RO | | Vâlcea | Romania | RO | | Vaslui | Romania | RO | | Vrancea | Romania | RO | | Altai Krai | Russia | RU | | Altai Republic | Russia | RU | | Amur Oblast | Russia | RU | | Arkhangelsk Oblast | Russia | RU | | Astrakhan Oblast | Russia | RU | | Belgorod Oblast | Russia | RU | | Bryansk Oblast | Russia | RU | | Chechen Republic | Russia | RU | | Chelyabinsk Oblast | Russia | RU | | Chukotka Autonomous Okrug | Russia | RU | | Chuvash Republic | Russia | RU | | Irkutsk Oblast | Russia | RU | | Ivanovo Oblast | Russia | RU | | Jewish Autonomous Oblast | Russia | RU | | Kabardino-Balkarian Republic | Russia | RU | | Kaliningrad Oblast | Russia | RU | | Kaluga Oblast | Russia | RU | | Kamchatka Krai | Russia | RU | | Karachay–Cherkess Republic | Russia | RU | | Kemerovo Oblast | Russia | RU | | Khabarovsk Krai | Russia | RU | | Khanty-Mansi Autonomous Okrug | Russia | RU | | Kirov Oblast | Russia | RU | | Komi Republic | Russia | RU | | Kostroma Oblast | Russia | RU | | Krasnodar Krai | Russia | RU | | Krasnoyarsk Krai | Russia | RU | | Kurgan Oblast | Russia | RU | | Kursk Oblast | Russia | RU | | Leningrad Oblast | Russia | RU | | Lipetsk Oblast | Russia | RU | | Magadan Oblast | Russia | RU | | Mari El Republic | Russia | RU | | Moscow | Russia | RU | | Moscow Oblast | Russia | RU | | Murmansk Oblast | Russia | RU | | Nizhny Novgorod Oblast | Russia | RU | | Novgorod Oblast | Russia | RU | | Novosibirsk Oblast | Russia | RU | | Omsk Oblast | Russia | RU | | Orenburg Oblast | Russia | RU | | Oryol Oblast | Russia | RU | | Penza Oblast | Russia | RU | | Perm Krai | Russia | RU | | Primorsky Krai | Russia | RU | | Pskov Oblast | Russia | RU | | Republic of Adygeya | Russia | RU | | Republic of Bashkortostan | Russia | RU | | Republic of Buryatia | Russia | RU | | Republic of Dagestan | Russia | RU | | Republic of Ingushetia | Russia | RU | | Republic of Kalmykia | Russia | RU | | Republic of Karelia | Russia | RU | | Republic of Khakassia | Russia | RU | | Republic of Mordovia | Russia | RU | | Republic of North Ossetia–Alania | Russia | RU | | Republic of Tatarstan | Russia | RU | | Rostov Oblast | Russia | RU | | Ryazan Oblast | Russia | RU | | Saint Petersburg | Russia | RU | | Sakha Republic (Yakutia) | Russia | RU | | Sakhalin Oblast | Russia | RU | | Samara Oblast | Russia | RU | | Saratov Oblast | Russia | RU | | Smolensk Oblast | Russia | RU | | Stavropol Krai | Russia | RU | | Sverdlovsk Oblast | Russia | RU | | Tambov Oblast | Russia | RU | | Tomsk Oblast | Russia | RU | | Tula Oblast | Russia | RU | | Tver Oblast | Russia | RU | | Tyumen Oblast | Russia | RU | | Tyva Republic | Russia | RU | | Udmurtia | Russia | RU | | Ulyanovsk Oblast | Russia | RU | | Vladimir Oblast | Russia | RU | | Volgograd Oblast | Russia | RU | | Vologda Oblast | Russia | RU | | Voronezh Oblast | Russia | RU | | Yamalo-Nenets Autonomous Okrug | Russia | RU | | Yaroslavl Oblast | Russia | RU | | Zabaykalsky Krai | Russia | RU | | Eastern Cape | South Africa | ZA | | Free State | South Africa | ZA | | Gauteng | South Africa | ZA | | KwaZulu-Natal | South Africa | ZA | | Limpopo | South Africa | ZA | | Mpumalanga | South Africa | ZA | | North West | South Africa | ZA | | Northern Cape | South Africa | ZA | | Western Cape | South Africa | ZA | | Busan | South Korea | KR | | Chungbuk | South Korea | KR | | Chungnam | South Korea | KR | | Daegu | South Korea | KR | | Daejeon | South Korea | KR | | Gangwon | South Korea | KR | | Gwangju | South Korea | KR | | Gyeongbuk | South Korea | KR | | Gyeonggi | South Korea | KR | | Gyeongnam | South Korea | KR | | Incheon | South Korea | KR | | Jeju | South Korea | KR | | Jeonbuk | South Korea | KR | | Jeonnam | South Korea | KR | | Sejong | South Korea | KR | | Seoul | South Korea | KR | | Ulsan | South Korea | KR | | A Coruña | Spain | ES | | Álava | Spain | ES | | Albacete | Spain | ES | | Alicante | Spain | ES | | Almería | Spain | ES | | Asturias | Spain | ES | | Ávila | Spain | ES | | Badajoz | Spain | ES | | Balears | Spain | ES | | Barcelona | Spain | ES | | Burgos | Spain | ES | | Cáceres | Spain | ES | | Cádiz | Spain | ES | | Cantabria | Spain | ES | | Castellón | Spain | ES | | Ceuta | Spain | ES | | Ciudad Real | Spain | ES | | Córdoba | Spain | ES | | Cuenca | Spain | ES | | Girona | Spain | ES | | Granada | Spain | ES | | Guadalajara | Spain | ES | | Guipúzcoa | Spain | ES | | Huelva | Spain | ES | | Huesca | Spain | ES | | Jaén | Spain | ES | | La Rioja | Spain | ES | | Las Palmas | Spain | ES | | León | Spain | ES | | Lleida | Spain | ES | | Lugo | Spain | ES | | Madrid | Spain | ES | | Málaga | Spain | ES | | Melilla | Spain | ES | | Murcia | Spain | ES | | Navarra | Spain | ES | | Ourense | Spain | ES | | Palencia | Spain | ES | | Pontevedra | Spain | ES | | Salamanca | Spain | ES | | Santa Cruz de Tenerife | Spain | ES | | Segovia | Spain | ES | | Sevilla | Spain | ES | | Soria | Spain | ES | | Tarragona | Spain | ES | | Teruel | Spain | ES | | Toledo | Spain | ES | | Valencia | Spain | ES | | Valladolid | Spain | ES | | Vizcaya | Spain | ES | | Zamora | Spain | ES | | Zaragoza | Spain | ES | | Amnat Charoen | Thailand | TH | | Ang Thong | Thailand | TH | | Bangkok | Thailand | TH | | Bueng Kan | Thailand | TH | | Buriram | Thailand | TH | | Chachoengsao | Thailand | TH | | Chai Nat | Thailand | TH | | Chaiyaphum | Thailand | TH | | Chanthaburi | Thailand | TH | | Chiang Mai | Thailand | TH | | Chiang Rai | Thailand | TH | | Chon Buri | Thailand | TH | | Chumphon | Thailand | TH | | Kalasin | Thailand | TH | | Kamphaeng Phet | Thailand | TH | | Kanchanaburi | Thailand | TH | | Khon Kaen | Thailand | TH | | Krabi | Thailand | TH | | Lampang | Thailand | TH | | Lamphun | Thailand | TH | | Loei | Thailand | TH | | Lopburi | Thailand | TH | | Mae Hong Son | Thailand | TH | | Maha Sarakham | Thailand | TH | | Mukdahan | Thailand | TH | | Nakhon Nayok | Thailand | TH | | Nakhon Pathom | Thailand | TH | | Nakhon Phanom | Thailand | TH | | Nakhon Ratchasima | Thailand | TH | | Nakhon Sawan | Thailand | TH | | Nakhon Si Thammarat | Thailand | TH | | Nan | Thailand | TH | | Narathiwat | Thailand | TH | | Nong Bua Lam Phu | Thailand | TH | | Nong Khai | Thailand | TH | | Nonthaburi | Thailand | TH | | Pathum Thani | Thailand | TH | | Pattani | Thailand | TH | | Pattaya | Thailand | TH | | Phangnga | Thailand | TH | | Phatthalung | Thailand | TH | | Phayao | Thailand | TH | | Phetchabun | Thailand | TH | | Phetchaburi | Thailand | TH | | Phichit | Thailand | TH | | Phitsanulok | Thailand | TH | | Phra Nakhon Si Ayutthaya | Thailand | TH | | Phrae | Thailand | TH | | Phuket | Thailand | TH | | Prachin Buri | Thailand | TH | | Prachuap Khiri Khan | Thailand | TH | | Ranong | Thailand | TH | | Ratchaburi | Thailand | TH | | Rayong | Thailand | TH | | Roi Et | Thailand | TH | | Sa Kaeo | Thailand | TH | | Sakon Nakhon | Thailand | TH | | Samut Prakan | Thailand | TH | | Samut Sakhon | Thailand | TH | | Samut Songkhram | Thailand | TH | | Saraburi | Thailand | TH | | Satun | Thailand | TH | | Sing Buri | Thailand | TH | | Sisaket | Thailand | TH | | Songkhla | Thailand | TH | | Sukhothai | Thailand | TH | | Suphan Buri | Thailand | TH | | Surat Thani | Thailand | TH | | Surin | Thailand | TH | | Tak | Thailand | TH | | Trang | Thailand | TH | | Trat | Thailand | TH | | Ubon Ratchathani | Thailand | TH | | Udon Thani | Thailand | TH | | Uthai Thani | Thailand | TH | | Uttaradit | Thailand | TH | | Yala | Thailand | TH | | Yasothon | Thailand | TH | | Abu Dhabi | United Arab Emirates | AE | | Ajman | United Arab Emirates | AE | | Dubai | United Arab Emirates | AE | | Fujairah | United Arab Emirates | AE | | Ras al-Khaimah | United Arab Emirates | AE | | Sharjah | United Arab Emirates | AE | | Umm al-Quwain | United Arab Emirates | AE | | British Forces | United Kingdom | GB | | England | United Kingdom | GB | | Northern Ireland | United Kingdom | GB | | Scotland | United Kingdom | GB | | Wales | United Kingdom | GB | | Alabama | United States | US | | Alaska | United States | US | | American Samoa | United States | US | | Arizona | United States | US | | Arkansas | United States | US | | Armed Forces Americas | United States | US | | Armed Forces Europe | United States | US | | Armed Forces Pacific | United States | US | | California | United States | US | | Colorado | United States | US | | Connecticut | United States | US | | Delaware | United States | US | | District of Columbia | United States | US | | Federated States of Micronesia | United States | US | | Florida | United States | US | | Georgia | United States | US | | Guam | United States | US | | Hawaii | United States | US | | Idaho | United States | US | | Illinois | United States | US | | Indiana | United States | US | | Iowa | United States | US | | Kansas | United States | US | | Kentucky | United States | US | | Louisiana | United States | US | | Maine | United States | US | | Marshall Islands | United States | US | | Maryland | United States | US | | Massachusetts | United States | US | | Michigan | United States | US | | Minnesota | United States | US | | Mississippi | United States | US | | Missouri | United States | US | | Montana | United States | US | | Nebraska | United States | US | | Nevada | United States | US | | New Hampshire | United States | US | | New Jersey | United States | US | | New Mexico | United States | US | | New York | United States | US | | North Carolina | United States | US | | North Dakota | United States | US | | Northern Mariana Islands | United States | US | | Ohio | United States | US | | Oklahoma | United States | US | | Oregon | United States | US | | Palau | United States | US | | Pennsylvania | United States | US | | Puerto Rico | United States | US | | Rhode Island | United States | US | | South Carolina | United States | US | | South Dakota | United States | US | | Tennessee | United States | US | | Texas | United States | US | | Utah | United States | US | | Vermont | United States | US | | Virgin Islands | United States | US | | Virginia | United States | US | | Washington | United States | US | | West Virginia | United States | US | | Wisconsin | United States | US | | Wyoming | United States | US | | Artigas | Uruguay | UY | | Canelones | Uruguay | UY | | Cerro Largo | Uruguay | UY | | Colonia | Uruguay | UY | | Durazno | Uruguay | UY | | Flores | Uruguay | UY | | Florida | Uruguay | UY | | Lavalleja | Uruguay | UY | | Maldonado | Uruguay | UY | | Montevideo | Uruguay | UY | | Paysandú | Uruguay | UY | | Río Negro | Uruguay | UY | | Rivera | Uruguay | UY | | Rocha | Uruguay | UY | | Salto | Uruguay | UY | | San José | Uruguay | UY | | Soriano | Uruguay | UY | | Tacuarembó | Uruguay | UY | | Treinta y Tres | Uruguay | UY | | Amazonas | Venezuela | VE | | Anzoátegui | Venezuela | VE | | Apure | Venezuela | VE | | Aragua | Venezuela | VE | | Barinas | Venezuela | VE | | Bolívar | Venezuela | VE | | Carabobo | Venezuela | VE | | Cojedes | Venezuela | VE | | Delta Amacuro | Venezuela | VE | | Dependencias Federales | Venezuela | VE | | Distrito Capital | Venezuela | VE | | Falcón | Venezuela | VE | | Guárico | Venezuela | VE | | La Guaira | Venezuela | VE | | Lara | Venezuela | VE | | Mérida | Venezuela | VE | | Miranda | Venezuela | VE | | Monagas | Venezuela | VE | | Nueva Esparta | Venezuela | VE | | Portuguesa | Venezuela | VE | | Sucre | Venezuela | VE | | Táchira | Venezuela | VE | | Trujillo | Venezuela | VE | | Yaracuy | Venezuela | VE | | Zulia | Venezuela | VE | ### 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](#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](#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". | Column | What `*` means | | ------------ | -------------------------------------------------------- | | Country Code | All countries — the rate always applies | | Province | All provinces — the rate always applies | | Postcode | Fallback — shown only when no more specific rate matches | | City | Fallback — shown only when no more specific rate matches | #### 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: | Zone | Country Code | City | Name | Price | | -------- | ------------ | ------------------------ | ----------------- | --------- | | Domestic | IL | Jerusalem, Safed, Dimona | Remote Delivery | 69.00 ILS | | Domestic | IL | \* | Standard Delivery | 35.00 ILS | 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](/new-shipping-options/enable) 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](/new-shipping-options/enable) 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](/new-shipping-options/grouped-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: | Zone | Country Code | Country Name | Province | Name | Price | Order Subtotal >= | Order Subtotal \<= | Weight >= | Weight \<= | Transit Time Min Days | Transit Time Max Days | Free Min Order Amount | | :---------- | :----------- | :------------- | :------- | :---------------- | :---- | :---------------- | :----------------- | :-------- | :--------- | :-------------------- | :-------------------- | :-------------------- | | US Standard | US | United States | | Standard Shipping | 9.99 | 0 | 49.99 | | | 3 | 7 | 75.00 USD | | US Standard | US | United States | | Standard Shipping | 14.99 | 50.00 | | | | 3 | 7 | 75.00 USD | | US Express | US | United States | | Express Shipping | 19.99 | | | | | 1 | 2 | | | UK Standard | GB | United Kingdom | | UK Delivery | 7.99 | | | | 2.00 kg | 2 | 5 | 75.00 GBP | ```csv Copy raw CSV theme={null} Zone,Country Code,Country Name,Province,Postcode,City,Name,Description,Price,"Order Subtotal >=","Order Subtotal <=","Weight >=","Weight <=","Transit Time Min Days","Transit Time Max Days","Free Min Order Amount" US Standard,US,United States,,,,"Standard Shipping",,9.99,0,49.99,,,3,7,75.00 USD US Standard,US,United States,,,,"Standard Shipping",,14.99,50.00,,,,3,7,75.00 USD US Express,US,United States,,,,"Express Shipping",,19.99,,,,,1,2, UK Standard,GB,United Kingdom,,,,"UK Delivery",,7.99,,,,2.00 kg,2,5,75.00 GBP ``` 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 A standard set of rates that works for all stores and plans. 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: | Weight >= | Weight \<= | | --------- | ---------- | | 0 | 500g | | 500g | 1kg | | 1kg | 2kg | **Grouped (tiered) rates with the same name** — when using [New Shipping Options](/new-shipping-options/grouped-rates), 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`: | Weight >= | Weight \<= | | ---------- | ---------- | | 0 | 5.00 kg | | 5.0001 kg | 10.00 kg | | 10.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: | Order Subtotal >= | Order Subtotal \<= | | ----------------- | ------------------ | | 0 | 50.00 | | 50.00 | 100.00 | | 100.00 | | **Grouped (tiered) rates with the same name** — when using [New Shipping Options](/new-shipping-options/grouped-rates), the next tier must start at `prev.max + 0.01`. If tier 1 ends at `49.99`, tier 2 must start at `50.00`: | Order Subtotal >= | Order Subtotal \<= | | ----------------- | ------------------ | | 0 | 49.99 | | 50.00 | 99.99 | | 100.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](#fallback-rates). ## Next steps * Learn how to [import your rates](/import-guide) into MatrixRates * Export your [current rates](/export-guide) to see what you already have * Check the [troubleshooting guide](/troubleshooting) if you run into problems # Troubleshooting Source: https://docs.dojoapps.co.uk/troubleshooting Fix common import errors and get back to shipping. If you're having trouble importing your shipping rates, you've come to the right place. Most import issues are caused by small formatting mistakes in your spreadsheet that are easy to fix. ## Common Pre-Import Mistakes Before you try importing again, check if your file has any of these common issues: ### Wrong file format MatrixRates only accepts **CSV (Comma Separated Values)** files. * **The problem:** If you save your spreadsheet as an Excel file (.xlsx or .xls), the app won't be able to read it. * **The fix:** In Excel or Google Sheets, go to **File > Save As** (or **Download**) and choose **CSV (Comma Separated Values)**. If you're in a European version of Excel, your CSV may use semicolons (`;`) to separate columns instead of commas. These files import automatically — no conversion needed. ### Missing required columns The app looks for specific column names in the first row of your file. * **The problem:** If you rename a required column or delete it, the import will fail. * **The fix:** Make sure your file includes all the required columns: `Zone`, `Country Code`, `Name`, and `Price`. Check the [Spreadsheet Reference](/spreadsheet-reference) for the full list. ### Invalid values Some columns only accept specific types of information. * **The problem:** Entering text (like "Free") in the `Price` column or a negative number in the `Weight` column will cause an error. * **The fix:** Ensure all price and weight columns contain only numbers (e.g., `9.99`, `1500`) or valid units/currency codes as described in the [Spreadsheet Reference](/spreadsheet-reference). ## Error Message Reference If you see a specific error message during import, find it below for a step-by-step fix. **Cause:** The app doesn't recognize a column name in your file. This is usually due to a spelling mistake, an extra space at the beginning or end of the name, or a missing column from our template. **Fix:** 1. Open your CSV file. 2. Check the first row (the headers). 3. Make sure the column name matches exactly what's in our [Spreadsheet Reference](/spreadsheet-reference). 4. Remove any extra spaces before or after the header text. **Cause:** Your file is missing a column that the app needs to process your rates. `Zone`, `Country Code`, `Name`, and `Price` must always be present. **Fix:** 1. Open your CSV file. 2. Add a new column with the missing header name (e.g., `Price`) in the first row. 3. Fill in the required data for every row in that column. 4. Save and try importing again. **Cause:** You've entered a value in the `rate_type` column that the app doesn't understand. **Fix:** 1. Go to the row number mentioned in the error. 2. Check the `rate_type` cell. 3. Make sure it contains either `flat` or `per_kg`. These are the only two valid options. **Cause:** A cell in your `Price` column contains text, symbols, or is formatted incorrectly. **Fix:** 1. Go to the row number mentioned in the error. 2. Remove any currency symbols (like \$ or £) or text (like "Free"). 3. Ensure the cell contains only a number (e.g., `10.00`). **Cause:** A weight value in your file is less than zero. **Fix:** 1. Go to the row number mentioned in the error. 2. Check the `Weight \>=` and `Weight \<=` columns. 3. Change any negative numbers to `0` or higher. ## Still stuck? If you've checked your file and are still seeing errors, we're here to help. Email us at **[support@dojoapps.co.uk](mailto:support@dojoapps.co.uk)** with a description of the problem. **Privacy Note:** When contacting support, please do not include passwords or sensitive personal information in your message or CSV attachments.