Shipping & Delivery

Tell Joomni where you deliver and what it costs, and checkout shows customers the right options and charges. On Business you can also book Pathao and Upaya pickups straight from an order.

In the dashboard:Settings › Shipping & DeliveryPlan:Zones and rates: all plans · Courier integrations: Business and above

How it fits together

LevelWhat it is
ProfileA group of products that ship the same way. Most stores need only the Default profile. Example: “Default”, “Heavy Items”, “Fragile”.
ZoneAn area you deliver to: one or more of Nepal's seven provinces, optionally narrowed to certain cities. Example: “Kathmandu Valley”, “Lalitpur only”, “All Nepal”.
RateA delivery price within a zone. Example: “Standard” at Rs 100, or free over Rs 3,000.

Every new store starts with a Default profile containing an All Nepal zone at Rs 100, so checkout works from day one. Change that rate or add more specific zones next to it.

Set up delivery

  1. Pick a shipping profile

    Use the Default profile, or click Create Profile for products that ship differently (heavy or fragile items).
  2. Add a zone

    Click Add Shipping Zone, name it, and tick the provinces covered. To charge a different price in particular cities, add them under Only these cities. For example, tick Bagmati Province and add “Lalitpur”. Leave the cities empty to cover the whole province.
  3. Add rates to the zone

    Click Add Rate and choose a type:
    • Flat Rate: the same price for every order, for example Standard at Rs 100.
    • Price Based: applies only when the order reaches a minimum order price. Use it for “Free delivery over Rs 3,000” (price 0, minimum 3000).
    If more than one rate applies, checkout charges the cheapest. A flat Rs 100 rate plus a free-over-Rs-3,000 rate gives free delivery once the order passes Rs 3,000.
  4. Assign products to other profiles (optional)

    Products use the Default profile unless you choose another one. Open the product and pick a profile in the Shipping card. See Products.

How checkout picks a zone

As the customer fills in their address, checkout picks the most specific zone in the product's profile that covers it:

OrderZone that wins
1. City zoneIts province and one of its cities match the address. Example: Bagmati Province + Lalitpur.
2. Province zoneLists the customer's province. If several do, the one with the fewest provinces wins, so a Bagmati-only zone beats All Nepal.
3. All NepalA zone named exactly All Nepal covers any address no other zone matched.
4. Country zoneA zone with no provinces ticked, matched by country. For stores that deliver abroad.
  • City zones only cover their cities. A Bagmati + Lalitpur zone doesn't apply to Kathmandu; Kathmandu falls through to your next zone, such as All Nepal.
  • Cities are matched loosely. Capital letters, extra spaces and endings such as “Metropolitan City” or “Sub-Metropolitan City” are ignored, so “lalitpur” and “Lalitpur Metropolitan City” both match Lalitpur. Other names for a city, such as Patan, have to be added as extra cities.
  • No price before a province. Checkout shows “Calculated at next step” until the customer chooses a province, then updates the delivery price as they type the city.
  • The order charges what checkout showed. Joomni works out the delivery price again when the order is placed, using the same rules. The price can't be changed from the customer's browser.

No zone, no checkout

If no zone covers an address, checkout shows Not available and the customer can't place the order. To deliver everywhere, keep an All Nepal zone as the fallback. The same applies when a cart mixes products from two profiles and either profile has no zone for the address.

Example setup for a Kathmandu store

ZoneRates
Kathmandu Valley (Bagmati · cities: Kathmandu, Lalitpur, Bhaktapur)Standard, flat Rs 100 · Free, price-based Rs 0 over Rs 3,000
All Nepal (default zone)Standard, flat Rs 200

A customer in Lalitpur pays Rs 100, or nothing over Rs 3,000. A customer in Chitwan (also Bagmati) or Pokhara pays Rs 200.

Cash on delivery fee is separate

If you charge a fee for cash on delivery (Payments), it appears as its own line under Delivery in the checkout summary. It isn't part of your shipping rates.

Works with every checkout design

Delivery prices appear in the same way on the default Liquid checkout page and in custom checkout designs. The checkout form always asks for province and city. If you set its Province field to free text, customers' spellings still match (“Bagmati” and “bagmati province” both count as Bagmati Province). If you hide the province field, only All Nepal and country zones can apply.

Show delivery rates to customers

Turn on Show delivery rates to customers at the top of Shipping & Delivery and checkout lists your zones and prices under the address. Once the customer picks a province, their zone is marked Your area and the line above the table shows the delivery price for their cart. It's off until you turn it on.

OptionWhat it does
Which rates to showProfiles of the items in the cart (recommended), the Default profile only, or Every profile. With several profiles, each gets its own heading.
Delivery timeShows the delivery days you set on each rate (Delivery from / up to in the rate form), such as “1–2 days”.
Order-total conditionsShows the order total a price-based rate needs, such as “Orders Rs 3,000+”.
Also show it onCart (“From Rs 100” plus the table in the cart drawer and cart page), Product page (“Delivery from Rs 100” under the buy buttons, for that product's profile) and a Delivery rates page at /shipping-rates you can link from your footer. A page of your own at /shipping-rates always wins.
Note under the tablePlain text, up to 300 characters. Example: “Orders before 2 pm ship the same day inside the Valley.”
  • The table only shows prices checkout charges. It uses the same zone rules as the delivery price, so it can never disagree with the order total. Weight-based rates aren't charged yet and are left out.
  • All Nepal reads as “Rest of Nepal” when you have other zones, and lists only the provinces those zones don't cover.
  • Hide a zone with its Hide button to keep it out of the table, for example a staff pickup zone. A hidden zone still prices orders.
  • Reorder zones with the arrows. Order is only how the table reads; checkout still uses the most specific zone.
  • Check before turning it on. The card warns you about provinces no zone covers and zones with no rates, and Preview what customers see shows the exact table.

In your checkout design and Liquid themes

The checkout form's Delivery zones & rates setting shows the table collapsed, expanded, or not at all. Liquid themes can place it with data-joomni-checkout-slot="shipping-rates" on the checkout page, or build their own from the shipping_rates drop on any page ({% if shipping_rates.enabled %}).

Courier integrations: Pathao and Upaya

Connect your courier account once, then book pickups from each order instead of copying details into the courier's app.

  1. Get API credentials from the courier

    Pathao: API Client ID and API Secret. Upaya: Merchant Key and API Token. Ask your courier account manager if you can't find them.
  2. Enter them under Courier Integrations

    Choose the Pathao or Upaya tab and save.
  3. Book from an order

    Open an order, choose the carrier and book the shipment. The tracking number and link are added to the order automatically. See Orders.

Delivering yourself or using another courier? Choose Self Delivery / Custom on the order.

Need help?