WooCommerce gives you the building blocks for shipping, but it does not book couriers in India out of the box. You set up zones and rates, take payment (prepaid or Cash on Delivery), and then get each order to a courier somehow. This guide walks through each step in the order you will meet it, with notes on what matters for Indian pincodes and couriers.

Screens and labels below follow WooCommerce’s own documentation at the time of writing (October 2026). Menu names can change between versions, so check against your store if something looks different.

1. Shipping zones and methods for India

A shipping zone is a geographical area you ship to. Each zone holds one or more shipping methods, and the zone a customer matches decides which options and rates they see at checkout. You find zones under WooCommerce > Settings > Shipping > Shipping zones.

Three rules from WooCommerce’s documentation shape everything else:

  • Each customer matches only one zone.
  • Zones are matched from the top of the list to the bottom. The first match wins.
  • The “Rest of the world” zone catches everyone who matches no other zone. You can edit its methods, but you cannot move or delete it.

Order zones from smallest to largest

WooCommerce recommends listing your most specific zones first. For an Indian store, a sensible order is:

  1. Local pincodes: your own city or nearby pincodes.
  2. Home state: for example, all of Maharashtra if you ship from Pune.
  3. India: everything else in the country.
  4. Rest of the world: leave it with no methods if you only ship within India. Customers there are told no shipping is available.
WooCommerce checks shipping zones from top to bottom and uses the first zone that matches the customer's address1. Local pincodes2. Your home state3. Rest of India4. Rest of the worldCheckedtop tobottomFirst match wins:its methods apply
WooCommerce matches a customer to the first zone that fits, so put the most specific zones at the top.

If you put “India” above “Local pincodes”, the local zone will never match. From WooCommerce 11.1, the zones table shows a warning when an earlier zone already covers the same region, which helps you spot this.

Limiting a zone to pincodes

Inside a zone, choose your regions (a country or a state), then use Limit to specific zip/postcodes. Enter one entry per line. WooCommerce accepts:

Entry typeExampleWhat it matches
Single pincode411001That pincode only
Numeric range411001...411062Every pincode in the range
Wildcard4110*Every pincode starting with 4110

Wildcards inside ranges (such as 411*...412*) are not supported. The pincodes above are examples only; build your list from the pincodes you actually deliver to cheaply and quickly.

Choosing methods: flat rate, free shipping, local pickup

WooCommerce’s core methods are Flat rate, Free shipping and Local pickup. All enabled methods in the matched zone are shown, and the first enabled one is selected by default, so put your preferred option at the top.

Flat rate lets you charge a fixed cost per order, and add more through shipping classes or simple formulas:

  • [qty] is the number of items in the cart. Example: 50 + ( 10 * [qty] ) charges ₹50 plus ₹10 per item.
  • [fee percent="5" min_fee="40"] charges a percentage of the cart total with a minimum. Example: [fee percent="5" min_fee="40"] charges 5% of the order value, at least ₹40.

These are hypothetical numbers to show the syntax. Set your own from your courier costs.

Shipping classes help when some products cost more to ship. Create a “Bulky” class, and the flat rate method shows an extra cost field for it. You can charge per class or only for the most expensive class in the order.

Free shipping must also be added to a zone. Its “Free shipping requires” setting offers:

  • no requirement;
  • a valid free-shipping coupon;
  • a minimum order amount;
  • a minimum order amount OR a coupon;
  • a minimum order amount AND a coupon.

There is also a checkbox to apply the minimum before or after coupon discounts. Example: with a ₹999 minimum and the rule applied after discounts, a ₹1,100 cart with a ₹200 coupon (₹900 after discount) would not qualify.

A common pattern is free shipping above a threshold in every zone, with a flat rate below it. Your courier still charges you for every parcel, so work out whether the threshold covers that cost on an average order.

2. Product weights and dimensions

Couriers bill on chargeable weight, which is usually the higher of the actual weight and the volumetric weight of the packed parcel. If your product weights are wrong, your shipping estimates will be wrong too, and you may face weight disputes later. See our guide to volumetric weight and shipping charges for how the calculation works.

In WooCommerce:

  1. Set your units under WooCommerce > Settings > Products. If your couriers work in kg and cm, use the same units to avoid conversion mistakes. Do this before you enter product data.
  2. Open each product and go to the Shipping tab.
  3. Enter weight, length, width and height.

Tips:

  • Enter the packed weight, not the bare product weight, if your store or shipping tool uses these figures for courier booking. Packaging adds weight.
  • Use the box size, not the product size, for dimensions. Volumetric weight depends on the outer box.
  • Check variable products. If sizes or pack quantities differ, make sure each variation has the right weight.
  • Spot-check with a scale. Weigh a few packed orders and compare them with what WooCommerce holds.

Example: a cushion weighs 0.6 kg but ships in a 40 × 40 × 15 cm box. At a divisor of 5000, its volumetric weight is 40 × 40 × 15 ÷ 5000 = 4.8 kg, so you would be billed on 4.8 kg, not 0.6 kg. Divisors vary by courier and service, so check your courier’s terms.

3. Enabling Cash on Delivery

Cash on Delivery (COD) is a core WooCommerce payment gateway. To turn it on:

  1. Go to WooCommerce > Settings > Payments, then Take offline payments.
  2. Click Enable next to Cash on Delivery, then Manage.
  3. Set the Title and Description customers see at checkout, and the Instructions text.
  4. Under Enable for shipping methods, choose which methods offer COD. Leave it out of local pickup if you do not want to collect cash in person, for example.
  5. Leave Accept for virtual orders off unless you have a reason to take COD for non-physical products.
  6. Click Save changes.

WooCommerce sets COD orders to Processing until payment is collected. WooCommerce advises you to confirm the cash has been collected before you mark an order Completed. In practice, that means waiting until your courier or shipping platform has remitted the COD amount to you.

COD considerations

  • Fees: the core COD gateway has no fee setting. A fee needs a separate extension. Couriers and shipping platforms may charge a COD fee on their side, so check their current terms before deciding whether to pass it on.
  • Remittance timing: COD money reaches you after delivery, on your courier’s or platform’s remittance cycle. Plan your cash flow around it.
  • Returns: COD orders are more exposed to refusals at the door. Our guide to NDR and RTO covers how to handle failed deliveries.
  • Limits: some sellers restrict COD by order value or to certain zones. Core WooCommerce limits COD by shipping method only, so stricter rules need an extension or custom code.

4. Getting orders to couriers

WooCommerce records the order; it does not hand it to an Indian courier on its own. You have three broad options.

Manual entry

You copy each order’s address, phone number, weight and payment type into the courier’s portal, book the shipment, print the label and paste the AWB back into WooCommerce. This works for a handful of orders a day, but it is slow and easy to get wrong (a mistyped pincode or phone number causes failed deliveries).

CSV export and bulk upload

You export orders to a CSV file and upload it to a courier or shipping platform that accepts bulk files. WooCommerce core does not include a general order CSV export, so you would use an export extension or tool. Match the columns to the platform’s template, and check pincodes and phone numbers before you upload.

Plugin or REST API connection

A shipping plugin or a shipping platform connects to your store and pulls orders automatically, usually through the WooCommerce REST API. Many also write the AWB and tracking details back to the order. Before you connect any service, check:

  • which order statuses it imports, and how often;
  • where it reads weights from;
  • what it writes back to your orders;
  • what happens when you cancel or edit an order in WooCommerce;
  • what API permissions it asks for (see the next section).

If you are comparing options, our guide on how to choose a courier aggregator lists more questions to ask.

5. REST API keys: what they are and how to keep them safe

A REST API key lets another application read or change data in your store without your WordPress password. It comes as a pair: a Consumer Key and a Consumer Secret.

Creating a key

  1. Make sure your permalinks are not set to Plain (Settings > Permalinks in WordPress).
  2. Go to WooCommerce > Settings > Advanced > REST API and click Add key.
  3. Enter a clear Description, such as the service’s name and the date.
  4. Choose the WordPress User the key belongs to.
  5. Choose Permissions: Read, Write or Read/Write.
  6. Click Generate API key, then copy the Consumer Key and Consumer Secret into the other application.

The Consumer Secret is shown only once. If you lose it, you will need a new key.

Safe practice

  • Least privilege. A key’s access follows the WordPress user it belongs to, as well as the permission level you set. Pick the lowest permission the service needs. Read is enough to import orders; writing tracking back needs Write.
  • One key per service. If you stop using one service, you can revoke its key without breaking others.
  • Keep the secret secret. Do not paste it into chats, emails or support tickets. Only enter it in the service you are connecting.
  • Use HTTPS. WooCommerce’s developer documentation allows simple key-based authentication over HTTPS. Your store should run on HTTPS anyway.
  • Revoke unused keys. Review the REST API list from time to time and revoke keys for services you no longer use. WooCommerce also notes that a key stops working if its WordPress user is deleted, so do not tie keys to a staff account that may be removed.

6. Sharing tracking with customers

Customers want the courier name, the AWB number and a link. You have a few ways to give it to them in WooCommerce.

Order notes. On the order screen, add a note and set its visibility to Note to customer. WooCommerce emails it to the customer straight away and shows it in their My account order details. A private note stays internal. Deleting a customer note later does not recall the email, so check the AWB before you send.

Shipment Tracking extension. WooCommerce’s official Shipment Tracking extension adds a tracking panel to each order. You choose a provider (or Custom Provider, entering the courier’s name and tracking URL), add the tracking number and shipped date, and save. Saving does not email the customer. The details appear in order emails sent afterwards, such as the Completed order email, and on the customer’s My account order page. This is a paid extension; check its current price and compatibility on WooCommerce.com.

Automatic write-back. Many shipping platforms write the AWB and a tracking link to the order for you, often as an order note.

However you share it, a tracking page that customers can open without logging in to the courier’s site cuts down “where is my order” messages. You can also point customers to a general tracking page.

7. Cancellations and order edits

WooCommerce only lets you edit order items while the status is Pending payment or On hold. Once an order is Processing (which is where paid and COD orders sit), you cannot change its items, apart from refunds.

What this means in practice:

  • Customer wants to change an item after ordering: cancel the order and create a new one, or ask them to reorder.
  • Address change: check whether your WooCommerce version lets you edit the shipping address at this stage. If the order has already reached a courier or shipping platform, update it there too, or cancel and rebook. Check whether your platform picks up edits made after import.
  • Cancelling: set the order to Cancelled in WooCommerce. If a shipment is already booked, cancel it with the courier or platform before pickup, or the parcel may still go out.
  • After pickup: a cancelled order in WooCommerce does not stop a parcel in transit. You will usually need to ask the courier or platform for a return to origin, which may be charged. Check their terms.

Agree a cut-off time for changes with your team, and tell customers about it on your shipping policy page.

8. Checklist

Before you go live, check:

  • Zones ordered from smallest to largest, with no zone hidden by a broader one above it
  • Pincode lists tested with a few real addresses at checkout
  • “Rest of the world” left without methods if you ship only within India
  • Flat rates and free-shipping threshold set against your actual courier costs
  • Units set to kg/g and cm; every product (and variation) has packed weight and box dimensions
  • COD enabled only for the shipping methods you want; COD orders marked Completed only after cash is remitted
  • Order route to couriers chosen (manual, CSV or API) and tested with a test order
  • API keys created per service, with the lowest permission needed and a clear description
  • Customers receive the courier name, AWB and tracking link
  • A clear process for edits and cancellations, including cancelling booked shipments

Using Courier Tales with WooCommerce

Courier Tales is a shipping platform for Indian online sellers, shipping within India only. You connect your WooCommerce store with a REST API key. Orders come in when you fetch them manually or through an automatic import that runs about every 15 minutes, and weights are taken from your product weights.

For each order you can compare the serviceable couriers with estimated charges, then book singly or in bulk. Integrated couriers today are Delhivery, Xpressbees, Ekart, Shadowfax and Amazon Shipping (surface), subject to pincode and account settings. Chargeable weight is the higher of actual and volumetric weight (L × B × H in cm ÷ 5000), rounded up to the courier’s slab.

After booking, Courier Tales writes the AWB, courier, Shipping ID, a tracking entry and a customer note back to the WooCommerce order. Orders cancelled in your store before booking are cancelled when Courier Tales re-checks them. Other edits you make in the store after import are not synced, so make those changes in Courier Tales as well. See WooCommerce shipping with Courier Tales for details.

To check costs before you set your WooCommerce rates, try the shipping rate calculator for indicative charges, or create an account to connect your store.

Frequently asked questions

Can I set WooCommerce shipping rates by Indian pincode?

Yes. A shipping zone can be limited to specific postcodes, numeric ranges or wildcards such as 110*. Zones are matched from the top of the list, so put your narrowest pincode zones first.

Does WooCommerce charge a fee for Cash on Delivery?

The core Cash on Delivery gateway has no fee setting. If you want to add a COD fee, you need a separate extension, and you should check your courier's own COD charges too.

What permission should a WooCommerce API key have for a shipping platform?

Give it only what the integration needs. If the platform only reads orders, Read is enough; if it writes tracking back to orders, it needs Write as well. Revoke the key when you stop using the service.

Can I edit a WooCommerce order after it is Processing?

Not the items. WooCommerce allows item edits only while an order is Pending payment or On hold. Once it is Processing, cancel and recreate it, or handle the change outside the order.

Sources

  1. Setting up Shipping Zones, WooCommerce (accessed 19 October 2026)
  2. Flat Rate Shipping, WooCommerce (accessed 19 October 2026)
  3. Free Shipping, WooCommerce (accessed 19 October 2026)
  4. Adding Shipping Dimensions to Products, WooCommerce (accessed 19 October 2026)
  5. Cash on Delivery, WooCommerce (accessed 19 October 2026)
  6. WooCommerce REST API, WooCommerce (accessed 19 October 2026)
  7. REST API authentication, WooCommerce Developer Docs (accessed 19 October 2026)
  8. Shipment Tracking, WooCommerce (accessed 19 October 2026)
  9. Order Statuses, WooCommerce (accessed 19 October 2026)
  10. View, edit or add an order, WooCommerce (accessed 19 October 2026)

Courier, marketplace and tax rules change. Check the current terms with your courier, marketplace or adviser before relying on them.

Ship with integrated couriers from one dashboard

Create your account