> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flexype.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Shipping

> Set where you ship, what you charge, and which orders can pay cash on delivery.

Shipping controls what your customers see at checkout: which addresses you deliver to, the rates and delivery estimates offered, and whether cash on delivery is available for a given order value.

It is built in three layers:

<CardGroup cols={3}>
  <Card title="Profiles" icon="layer-group">
    Which products a set of shipping rules applies to
  </Card>

  <Card title="Zones" icon="earth-asia">
    Where you ship — by state and country, or by PIN code
  </Card>

  <Card title="Rates" icon="tag">
    What you charge, and whether COD is accepted
  </Card>
</CardGroup>

## Shipping profiles

Open **Shipping** from the left navigation. Profiles come from your store, each covering a group of products.

<Frame caption="Settings → Shipping. Each profile shows how many products and zones it covers.">
  <img className="rounded-lg" src="https://mintcdn.com/flexype/bFr-dWxa-QGiY3oF/images/features/shipping/profiles.png?fit=max&auto=format&n=bFr-dWxa-QGiY3oF&q=85&s=994677163af5bbb2c01b1507b4d8b3d9" alt="Shipping and Delivery page listing a General Profile with product and zone counts, a last synced timestamp, and a Sync button" width="1523" height="806" data-path="images/features/shipping/profiles.png" />
</Frame>

Each row shows the profile name and how many **products** and **zones** it covers. Click a profile to manage its zones.

### Keeping profiles in sync

Profiles and their products mirror your store, so the list can fall behind if you have just reorganised products there.

* **Last synced** shows when FlexyPe last pulled from your store
* **Sync** pulls the latest profiles and product counts

<Tip>
  Sync after you create a new shipping profile in your store, or after moving products between profiles. Until you do, checkout keeps using the rules FlexyPe already has.
</Tip>

## Shipping zones

A zone is a set of places you deliver to. Inside a profile you'll see each zone with the rates attached to it.

<Frame caption="Zones inside a profile, each with its own rates, COD status, and active toggle.">
  <img className="rounded-lg" src="https://mintcdn.com/flexype/bFr-dWxa-QGiY3oF/images/features/shipping/zones.png?fit=max&auto=format&n=bFr-dWxa-QGiY3oF&q=85&s=3d091a26b3d0df714f97edd8bcf61c99" alt="Shipping Zones page showing a Domestic India zone with a rates table listing rate name, estimated delivery time, range, COD status, active toggle, and edit and delete actions" width="1523" height="806" data-path="images/features/shipping/zones.png" />
</Frame>

| Column                      | What it shows                                                                            |
| --------------------------- | ---------------------------------------------------------------------------------------- |
| **Rate name**               | What the customer sees at checkout, for example `Standard`                               |
| **Estimated delivery time** | The delivery estimate shown beside the rate                                              |
| **Range**                   | The order values this rate applies to                                                    |
| **COD**                     | Whether cash on delivery is accepted — **Active**, **Partially active**, or **Inactive** |
| **Active**                  | Toggle the rate on or off without deleting it                                            |
| **Actions**                 | Edit or delete the rate                                                                  |

Use the **⋯** menu on a zone to **Edit zone** or **Delete zone**.

### Creating a zone

Click **Add Shipping zone**, give the zone a name, and choose how it is defined.

<Tabs>
  <Tab title="State & country based">
    <Frame caption="A state and country based zone — search and tick the countries or states it covers.">
      <img className="rounded-lg" src="https://mintcdn.com/flexype/bFr-dWxa-QGiY3oF/images/features/shipping/create-zone-state-country.png?fit=max&auto=format&n=bFr-dWxa-QGiY3oF&q=85&s=a480fe0a8f82c0ece4acb5d6dd253639" alt="Create shipping zone dialog with zone name field, type set to state and country based, and a searchable checkbox list of countries" width="1523" height="806" data-path="images/features/shipping/create-zone-state-country.png" />
    </Frame>

    Search for a country or state and tick everything the zone should cover. Use this for most setups — one zone for domestic delivery, another for international, or separate zones per state where your rates differ.
  </Tab>

  <Tab title="Pincode based">
    <Frame caption="A pincode based zone — upload the PIN codes you deliver to.">
      <img className="rounded-lg" src="https://mintcdn.com/flexype/bFr-dWxa-QGiY3oF/images/features/shipping/create-zone-pincode.png?fit=max&auto=format&n=bFr-dWxa-QGiY3oF&q=85&s=944eeabea706e0097089a7ae2e8d3f93" alt="Create shipping zone dialog with type set to pincode based, showing a serviceable PIN codes CSV upload area and a sample file link" width="1523" height="806" data-path="images/features/shipping/create-zone-pincode.png" />
    </Frame>

    Upload a CSV of **serviceable PIN codes** — the exact PIN codes this zone delivers to. Use **Download a sample file** to get the required format.

    <Warning>
      The upload must match the sample format, and the file must be under **10 MB**.
    </Warning>
  </Tab>
</Tabs>

<Note>
  The zone name is internal. As the dialog says, customers won't see it — they only see the rate name and delivery estimate.
</Note>

## Shipping rates

A rate is a delivery option shown at checkout. Add one with **Add rate** on a zone, or edit an existing one with the pencil icon.

<Frame caption="The rate editor: name, delivery estimate, pricing basis, price conditions, and COD settings.">
  <img className="rounded-lg" src="https://mintcdn.com/flexype/bFr-dWxa-QGiY3oF/images/features/shipping/edit-rate.png?fit=max&auto=format&n=bFr-dWxa-QGiY3oF&q=85&s=6866e65bb4c6794ce97e881970bdf44b" alt="Edit Shipping Rate drawer with name, estimated time, type radio buttons, pricing conditions showing min order price, max order price and shipping charges, an accept cash on delivery checkbox with COD charges, and a non-serviceable PIN codes upload" width="1523" height="806" data-path="images/features/shipping/edit-rate.png" />
</Frame>

<Steps>
  <Step title="Name the rate">
    **Name** is what the customer sees at checkout — `Standard`, `Express`, `Free Delivery`.

    **Estimated Time** is optional and appears next to it, for example `3-5 Business days`. Leave it blank if you'd rather not commit to a window.
  </Step>

  <Step title="Choose what the price depends on">
    * **Based on order price** — conditions are matched against the cart value
    * **Based on order weight** — conditions are matched against total weight

    <Note>
      Weight-based rates rely on product weights being set correctly in your store. If weights are missing, price-based rates are the safer choice.
    </Note>
  </Step>

  <Step title="Set the pricing conditions">
    Each condition is a band with a **Min Order Price**, an optional **Max Order Price**, and the **Shipping Charges** to apply:

    | Min  | Max       | Charge | Result                          |
    | ---- | --------- | ------ | ------------------------------- |
    | ₹0   | ₹499      | ₹49    | Orders under ₹499 pay ₹49       |
    | ₹500 | *(blank)* | ₹0     | Orders of ₹500 and up ship free |

    Leave **Max** blank on the last band so it covers everything above the minimum — that's what the zone list means by *"Orders from ₹0 and up"*.

    Click **Add Rate** to stack another band.
  </Step>

  <Step title="Decide on cash on delivery">
    Tick **Accept cash on delivery** on a band to allow COD for orders in that range, and set an extra **COD charge** if you want one. Leave it unticked and those orders are prepaid only.

    <Tip>
      COD per band is how you cap risk on high-value orders — accept COD below your threshold, and require prepayment above it. The zone list then shows **Partially active** for that rate.
    </Tip>
  </Step>

  <Step title="Exclude PIN codes you can't reach">
    **Non-serviceable PIN Codes** is optional. Upload a CSV of PIN codes where this rate should not be offered, even though they fall inside the zone. Same format and 10 MB limit as serviceable PIN codes.
  </Step>

  <Step title="Save">
    Click **Save**. The rate appears in the zone's table and goes live at checkout immediately.
  </Step>
</Steps>

## How customers see it

At checkout, once a customer enters a deliverable address, FlexyPe matches it to a zone, then shows every active rate in that zone whose conditions match the cart. Each option shows its name, delivery estimate, and charge. Whether COD appears as a payment option depends on the band the order value falls into.

If no zone covers the address, or no rate matches the cart, the customer cannot complete checkout for that address.

## Frequently asked questions

<AccordionGroup>
  <Accordion title="A customer says they can't check out with their address.">
    No zone covers it. For a state and country zone, confirm the state is ticked; for a pincode zone, confirm the PIN code is in the uploaded list and not in a non-serviceable list on the rate.
  </Accordion>

  <Accordion title="Why is COD showing as Partially active?">
    Cash on delivery is enabled on some price bands of that rate but not others — usually because COD is allowed below a value threshold and blocked above it.
  </Accordion>

  <Accordion title="How do I offer free shipping above a cart value?">
    Add a condition band starting at your threshold with the charge set to ₹0, and leave its maximum blank.
  </Accordion>

  <Accordion title="Can I turn a rate off temporarily?">
    Yes. Use the **Active** toggle in the zone's rate table. The rate stops appearing at checkout but keeps its configuration.
  </Accordion>

  <Accordion title="I created a shipping profile in my store but don't see it.">
    Click **Sync** on the Shipping page to pull the latest profiles and product counts.
  </Accordion>

  <Accordion title="What happens if two rates match the same cart?">
    Both appear at checkout and the customer chooses. Use distinct price bands if you want only one option shown for a given cart value.
  </Accordion>
</AccordionGroup>

## Need help?

<CardGroup cols={2}>
  <Card title="Contact Support" icon="headset" href="mailto:support@flexype.io">
    Questions about zones, rates, or COD availability
  </Card>

  <Card title="Orders" icon="receipt" href="/features/orders">
    See the shipping charge applied to each order
  </Card>
</CardGroup>
