WooCommerce shipping zones for India
A WooCommerce shipping zone for India is the region a customer's address matches, and only that zone's methods appear at checkout. Add zones under WooCommerce › Settings › Shipping for PIN codes, a state or all of India, place the narrowest zone first, then add flat rate, free shipping or local pickup to each.
For Indian WooCommerce sellers setting shipping charges by PIN code or state, with COD and free-shipping rules that behave correctly at checkout.
knowledge
- Read time
- 7 min
- Sections
- 8
- Updated
- 14 Nov 2026
- Written by
- WebJi® team
Last editorial update: 14 November 2026. Prices follow the dated sources on this page; checkout confirms current charges.
How does WooCommerce choose a shipping zone at checkout?
WooCommerce reads the customer's shipping address, walks the zone list from the top, and stops at the first zone that covers it; only that zone's methods appear at checkout. A buyer in Bengaluru and a buyer in Assam pay different rates only if they match different zones.
- Zone: the place — a PIN list, a state, India, or everywhere else.
- Method: what the zone offers — flat rate, free shipping or local pickup.
- Shipping class: a product label such as "heavy" that can change a flat rate; it is not a zone.
The store address under WooCommerce › Settings › General is used for tax and for carts with no address yet. It does not choose the customer's zone; the zone list does.
Which India zones should you add, and in what order?
Add as few zones as your courier bill needs, and always place the narrowest zone (PIN codes) above wider ones (a state, then India). If India sits above a state zone, the state zone never runs because India already matched. Drag the handle on the left of each row, then save.
| Zone | Region selected | Checkout should show |
|---|---|---|
| Local PINs | Postcodes such as 560* | Local pickup, plus a short-distance flat rate if offered |
| Home state | One Indian state | That state's flat rate; free shipping above a minimum if set |
| Rest of India | India, below the narrower zones | The nationwide rate |
| Rest of the world | The default catch-all | No method, if you do not export |
If you do not ship abroad, leave "Rest of the world" with no method, so foreign addresses see that shipping is unavailable. Add remote states or island PINs as their own zone above India only once a real courier invoice shows the higher cost.
How do you add a state or PIN-code shipping zone?
Under WooCommerce › Settings › Shipping › Shipping zones, click Add zone, choose a state or limit it to specific PIN codes, add a method with your price, and drag the zone above any wider zone. Test with one physical, in-stock product.
- In WooCommerce › Settings › General, set the store country to India and make sure Shipping location(s) includes India. Save.
- Open WooCommerce › Settings › Shipping › Shipping zones and click Add zone.
- Name it (for example "Bengaluru PINs" or "Maharashtra"). Select a state under India, or tick Limit to specific zip/postcodes.
- Enter one PIN per line.
560*matches PINs starting with 560;400001...400100matches that numeric range. A star inside a range is not accepted. - Click Add shipping method, choose Flat rate, Free shipping or Local pickup, enter your price and save.
- Drag the zone above any zone already covering that state or all of India, and save again.
- On the cart, calculate shipping for a PIN inside and outside the zone; it works when the method and amount change accordingly.
How do flat rate, free shipping and local pickup work?
Flat rate charges a price you type, free shipping is a separate method with a condition such as a minimum order, and local pickup is offered on the zone where customers can collect.
- Flat rate: no courier quote; you enter the cost in the store currency (INR). This is your charge to the customer, not a hosting fee.
- Free shipping: require a minimum order amount, a free-shipping coupon, or either. Keep a flat rate on the same zone so smaller carts still have a method.
- Local pickup: on classic checkout, add the Local pickup method to the zone. With the Checkout block, also add pickup locations under WooCommerce › Settings › Shipping › Local pickup.
Test one cart just under the free-shipping minimum and one just over it.
Can shipping rates follow parcel weight?
Not with core flat rate alone: it ignores weight unless shipping classes change the price, and true weight bands need a table-rate or courier plugin inside the same zone.
Create classes under WooCommerce › Settings › Shipping › Classes and assign one on each product. Inside the flat rate method, give each class a cost. "Per order" charges the most expensive class in the cart, which suits one parcel; "Per class" adds every class together, which can overcharge a mixed cart shipped in one box. For rules like "₹X up to 500 g, ₹Y above", use a table-rate or courier method — the zone list stays the same.
How do you set up cash on delivery with shipping zones?
Cash on delivery is a payment method, not a shipping zone: enable it under WooCommerce › Settings › Payments › Cash on delivery and use "Enable for shipping methods" to offer it only on the methods you accept.
For example, allow COD on the nationwide flat rate but not on local pickup. The core COD screen has no surcharge field; if you charge a COD fee, add it with a payment-fee extension and show it before the order is placed. Prepaid UPI and cards run through a gateway such as Razorpay for WooCommerce.
When do you need a courier plugin such as Shiprocket?
Zones already decide what the customer pays; a courier plugin such as Shiprocket or Delhivery adds labels, tracking and, optionally, live courier rates. You do not need one to save a zone.
If you enable live rates, decide whether they replace the flat rate; showing both on one zone makes customers choose between your price and the courier's quote. Place one test order per zone and confirm it appears in the courier account at the price checkout charged. Courier API calls run while checkout loads, so the store needs dependable hosting; see WooCommerce hosting.
Why does checkout show no shipping method?
"No shipping options" means the address matched a zone with no enabled method, a wider zone is sitting above the right one, or the product does not need shipping.
- The product is physical, not virtual or downloadable.
- Shipping location(s) in General settings includes India.
- The first zone matching that PIN has at least one enabled method.
- No wider zone sits above the PIN or state zone.
- The test PIN has six digits and no space (560001, not 560 001).
If the right method appears in a private window but not your normal one, a cached cart is holding an old calculation; exclude cart and checkout from page cache, as explained in WooCommerce checkout not working. If checkout returns a server error, email support@webji.services with the zone name, PIN, time and any log line from WooCommerce › Status › Logs.
Frequently asked questions
How do I charge a different rate for each state?
Add one zone per state, or per group of states sharing a rate, each with its own flat rate, and keep all of them above the India zone. Checkout uses only the first zone the address matches, so order matters more than the number of zones.
Can I block delivery to certain PIN codes?
Yes. Create a zone limited to those PINs, place it at the top of the list, and add no shipping method. Customers at those addresses will see that shipping is unavailable instead of being charged the nationwide rate.
Should shipping charges include GST?
Shipping charged to the customer is generally treated as part of the taxable supply, so set the flat-rate method's tax status to Taxable if your products are taxable. Confirm the treatment with your accountant; GST invoice setup is covered in GST invoices in WooCommerce.
How many shipping zones should a new store start with?
Usually one or two: India, plus a local or home-state zone if your courier genuinely charges less there. Add more only when invoices show a real price difference, because every extra zone is another one to test.
Checked against WooCommerce documentation, 15 November 2026 · Reviewed by the WebJi® team, Jaipur.
Ready to get started with WebJi®?
Join 12,000+ businesses across India and overseas. INR pricing, 18% GST shown before payment and 24/7 email support in Hindi and English — average first reply under 60 minutes.