Shipping Zones, Rules & Advanced Features
Free-shipping rules, shipping zones, auto-fulfillment, wallet history, activity log, WhatsApp updates, and multi-vendor shipping.
How shipping costs are calculated
When a customer enters their delivery address at checkout:
Zone lookup
The customer's pincode is matched against your configured shipping zones (e.g. "Metro Cities", "North India", "Remote"). No match falls into the Default Zone.
Base cost
Each zone has a base shipping cost — if no rule applies, the customer pays the base cost for their zone.
Rules evaluation
Any active shipping rules are checked against the order. If one matches (e.g. order value above the free-shipping threshold), the cost is adjusted.
Display
The customer sees the final calculated cost (or "Free") at checkout.
Creating and managing shipping zones
Go to Settings → General (Store group → General card in the Settings Hub) and scroll to the Shipping Zones section, then click Add Zone.
Finding this screen
There's no menu item literally labelled "Shipping Zones" in either admin sidebar. In the classic (v1) sidebar, click Settings, then the General card in the Store group. In the new (v2) sidebar there's no Settings-hub route to it either — the fastest way in is clicking the store-name card at the top of the sidebar, which opens the same screen directly.
| Field | What to enter |
|---|---|
| Zone name | A descriptive label — "Metro Cities", "North India", "Remote / Hill Stations" |
| Base cost (₹) | Flat shipping cost for this zone when no rule applies |
| Per-kg rate (₹) | Optional additional charge per kilogram above a threshold weight — leave blank for a flat rate |
| Pincodes | A range or list of pincodes in this zone — e.g. "400001–400099" for Mumbai |
One zone must be the Default — customers whose pincode matches no other zone fall into it. Set its base cost to cover your most expensive delivery scenario so you're never undercharging.
Set your base costs
If you never set a base cost for a zone, the platform uses ₹80 as the system default. Open each zone on the Settings → General shipping zones list and check the Base Cost field against your actual average shipping cost for that zone.
Editing and deleting a zone. Click the pencil icon on a zone row to edit its fields, or the trash icon to delete it — a confirmation step asks you to confirm before the zone is removed.
v1/v2 parity gap — delete only works on the classic screen
Zone delete is only available on the classic (v1) shipping-zones list described above. If your store is on the new (v2) admin skin, there is currently no way to delete a zone from the UI — edit it down to a harmless base cost instead, or ask support to remove it, until parity ships.
Shipping rules
Go to Shipment → Shipping Rules and click + New Rule to create one, or the pencil icon on an existing rule to edit it. Every rule has a type, one or more conditions, an action, and a priority (rules are evaluated in priority order; the first match wins).
Rule types
| Rule type | What it does |
|---|---|
| Free Shipping | Waives the shipping cost when the conditions match |
| COD Surcharge | Adds a surcharge amount to Cash on Delivery orders |
| Weight Tier Pricing | Charges shipping based on which weight band the cart falls into |
| Zone Restriction | Blocks or explicitly allows shipping to a zone, independent of cost |
| Provider Preference | Prefers a specific courier/provider when the conditions match |
Conditions
Rules are matched against these fields — this is the actual, current list; don't assume other fields (like "product category") are supported:
| Condition field | Compares against |
|---|---|
| Cart Total (₹) | The order's total value |
| Cart Weight (kg) | The order's total weight |
| Payment Method | Prepaid or COD |
| Pincode | The delivery pincode |
| Zone | The shipping zone the delivery pincode falls into |
Each condition uses an operator — equals, greater than, greater-or-equal, less than, less-or-equal, or "in" (matches a list) — and conditions on the same rule can combine.
Actions
| Action | What it does |
|---|---|
| Discount | A value of 100 makes shipping free; other values override the calculated rate |
| Surcharge | Adds the surcharge amount to the order (used for COD Surcharge rules) |
| Block | Prevents shipping to matching destinations (used for Zone Restriction rules) |
| Allow | Explicitly allows shipping without touching the calculated rate (used for Zone Restriction rules) |
How rules and zones work together
- Cart meets a free-shipping rule threshold → shipping = ₹0, regardless of zone.
- A discount rule applies (e.g. a Weight Tier rule for lighter parcels) → base cost is reduced.
- No rule matches → customer pays the zone's base cost.
- Multiple rules match → the most favourable rule wins (lowest price for the customer).
Example — Metro zone (base ₹60), Remote zone (base ₹120), free shipping above ₹499 cart total:
| Customer | Cart value | Zone | Shipping cost |
|---|---|---|---|
| Mumbai customer | ₹600 | Metro | ₹0 (free-shipping rule applies) |
| Remote customer | ₹400 | Remote | ₹120 (no rule applies) |
| Mumbai customer | ₹300 | Metro | ₹60 (base cost) |
| Remote customer | ₹600 | Remote | ₹0 (free-shipping rule applies) |
During checkout, if the cart is close to a free-shipping threshold but not there yet, the customer sees a progress nudge like "Add ₹150 more for free shipping!". Once qualified, cost drops to ₹0 and a "Free Shipping" badge appears immediately.
COD surcharge
Create a rule that adds a surcharge to COD orders (e.g. "Add ₹50 for Cash on Delivery") to help recover the COD handling fee Shiprocket charges you — Shipping Rules → + New Rule → rule type COD Surcharge → condition Payment Method = COD → action Surcharge → amount.
Editing and deleting a rule
Click the pencil icon on any rule row to reopen the same form pre-filled — change the type, conditions, action, or priority, then save. Click the trash icon to delete a rule; a confirmation dialog asks you to confirm before it's removed. There's no undo, so if you just need to pause a rule temporarily, edit it down to a condition that never matches instead of deleting it.
Auto-Fulfillment
If you don't want to book each shipment manually, enable Auto-Fulfillment on the Shiprocket plugin page (Extensions → Plugins → Shiprocket → Fulfillment tab).
What triggers it: a prepaid order is confirmed (payment captured), or a COD order status moves to Confirmed.
What it does: books the shipment with your configured courier strategy, generates the AWB and label, schedules a pickup for the next working day, and sends the customer a shipment confirmation.
When it does not fire
The order is On Hold, your Shiprocket wallet balance is below the minimum threshold, the delivery pincode isn't serviceable by any available courier, or the product has no warehouse assigned. In any of these cases the order stays in Processing and a notification appears in your Notification Centre — book manually.
Multi-provider failover
If both Shiprocket and Delhivery are connected and an auto-fulfillment booking fails on the primary provider (low wallet, API timeout, pincode not serviceable), the platform automatically tries the next provider. You see one successful booking — the failover is invisible.
Wallet pre-check
Before booking through Shiprocket, the platform checks your wallet balance. If it's below the minimum threshold, the booking is blocked with a clear warning rather than failing silently — this prevents surprise failures during auto-fulfillment. Top up at shiprocket.in.
Wallet History — your shipping spend ledger
Every Shiprocket charge — a booking, a return label, a refund, a top-up — is recorded in Wallet History (Extensions → Plugins → Shiprocket → Wallet History).
The Balance Card at the top shows:
| Field | What it tells you |
|---|---|
| Current Ledger Balance | What our records say you have, after every charge we've booked through your account |
| SR-Reported Balance | What Shiprocket's own dashboard last reported |
| Drift | The difference between the two — if non-zero, the table below shows which transactions are involved |
If a value shows "—", the first sync hasn't run yet (e.g. a freshly connected account) — it populates after the next reconciliation cycle.
The table below lists every wallet transaction chronologically — action type, signed amount (debits red, credits green), running balance, linked AWB or order, who triggered it, and notes. Filter by date range, action type, AWB, or triggered-by, and export the filtered set as CSV for accounting.
Automatic wallet reconciliation
Every 30 minutes, the platform compares your ledger balance against Shiprocket's reported balance. Any drift gets a reconciliation entry automatically added to your transaction history with the amount and a note. This means a complete audit trail with no silent corrections, and any unattributed refund or adjustment on Shiprocket's side is captured within 30 minutes.
Tip
If drift is consistently non-zero across multiple cycles, raise a ticket with Shiprocket — there may be an unattributed charge on their side. Your transaction history gives them the exact figures.
Activity Log — one timeline for every event
The Activity Log (Dashboard → Activity Log) is your single timeline of everything that happens in your store: orders, payments, shipments, returns, wallet movements, configuration changes, and authentication events.
Use it when
- A customer calls asking what happened to their order — filter by order number to see the full history.
- You want to verify whether an auto-fulfillment cron actually fired for a confirmed order.
- You need to audit who changed a shipping rule or initiated a manual refund.
- An anomaly appears in the dashboard and you want to see what preceded it.
Filter by category — order, shipment, return, payment, wallet, auth, or config events. Clicking a row opens the corresponding detail page (an order event takes you to that order, a shipment event to its tracking). Every entry is permanently stored, tenant-scoped, and timestamped to the second.
Pincode serviceability and city autofill
As a customer types their pincode in the checkout address form, the platform looks it up in real time, autofills city and state, and confirms serviceability. If the city field can't be resolved, it stays blank and the customer types it manually — no "Unknown" placeholder.
WhatsApp delivery updates (Engage 360)
When both the WhatsApp plugin and Shiprocket are connected, switch on Engage 360 from the Shiprocket plugin's WhatsApp tab to send automated messages at key milestones:
| Event | Default message |
|---|---|
| Shipment confirmed | "Your order #12345 has been shipped! AWB: XXXX" |
| Out for delivery | "Your order is out for delivery today" |
| Delivered | "Your order has been delivered. Thank you!" |
| Delivery failed (NDR) | "Delivery attempt for your order failed. We will try again soon." |
Each event is individually toggleable, and messages send from your connected WhatsApp Business number so they appear as coming from your store.
Branded tracking page
Every shipment has a tracking URL you can share with customers — a page branded with your store name and logo, not a generic Shiprocket page. Find it in the Shipment Detail Drawer for any shipment.
Marketplace stores (multi-vendor shipping)
If your store operates as a marketplace with multiple sellers, the shipping system adapts automatically.
Per-vendor warehouses. Each vendor adds their own warehouses from their Vendor Dashboard → Shipment → Warehouses — visible only to that vendor. If a vendor has no warehouses configured, the platform blocks adding products for them with a clear warning.
Each warehouse row shows a registration-status chip per connected provider (e.g. "Shiprocket: active", "Delhivery: pending" or "failed"), so a vendor can see at a glance which providers a warehouse is actually usable with. The Register control becomes a button group — one button per active provider — when more than one provider is connected, so the vendor picks which one to register the warehouse with. Vendors can mark one warehouse as their default for new shipments, and delete a warehouse they no longer use (a soft delete — it stops appearing in the active list but historical shipments still reference it).
Per-vendor shipping credentials. Each vendor connects their own Shiprocket account (Extensions → Shiprocket in their Vendor Dashboard) so shipments and wallet balances stay completely separate from the store owner's.
How multi-vendor orders ship. When a customer places a single order with products from multiple vendors, BillionBiz automatically splits it into separate sub-shipments — one per vendor, each from its own warehouse using its own credentials. The customer gets one order confirmation but may receive multiple parcels on different timelines.
Vendor shipping preferences — courier strategy, default packaging dimensions, and default shipping mode — are set per vendor and only affect that vendor's shipments.
