
Most fulfilment migrations do not break on the day the stock moves. They break in the hours around it, when a product page is still promising two-hour delivery to a pincode whose inventory is sitting in a truck on the highway. Your customer never sees the migration plan. They see a promise you made and did not keep.
Most guides on switching 3PL providers assume one warehouse emptying into another. A quick commerce network is different: inventory sits across many small nodes, each promise is backed by a specific node, and customers experience the switch one pincode at a time. That changes what you protect, and in what order.
This runbook is for founders and operations leads who have already decided to move. If you are still evaluating partners, start with how to tell whether a fulfilment partner's SLA is actually good. Everything below assumes the contract is signed and the clock is running.
In short: to switch fulfilment partners without breaking your delivery promise, migrate the promise before the stock. Map every place you tell customers when an order will arrive, step those promises down on the pincodes you are about to move, seed inventory node by node, cut over one city at a time behind written go/no-go gates, and keep the outgoing partner live until its tail of COD remittances, returns and RTOs is closed.
Because in quick commerce the unit of risk is the pincode, not the warehouse. In a conventional 3PL migration, the worst case is a few days of slower dispatch while stock is in transit, and customers on a three-to-five-day promise barely notice. In a dark store network, each node backs a promise to a small catchment. If that node is empty while the promise is still live, the failure is immediate, visible and measured in hours.
| Dimension | Warehouse-to-warehouse 3PL switch | Dark store network switch |
| Where inventory sits | One or a few regional warehouses | Many small nodes, each serving a local catchment |
| Unit of cutover | The whole warehouse | A city, then a pincode cluster within it |
| What the customer sees mid-move | Slower dispatch for a few days | A missed same-day or sub-two-hour promise on specific pincodes |
| Rollback unit | All orders routed back at once | One cluster routed back while others stay live |
| Main failure mode | Inventory stuck in transit | A promise still live on a node that cannot fulfil it |
| Paperwork per stock movement | A few large consignments | Many smaller transfers, each needing the right GST documents |
The implication is that the standard sequence, move the stock and then switch routing, is backwards for quick commerce fulfilment. You fix the promise first, then move the stock, then switch routing, one catchment at a time.
Three things: a node-level performance baseline, the exit terms that govern how fast you can leave, and a reconciled inventory position. Each becomes harder to secure once the outgoing partner knows you are leaving.
Record, for each city and node, the numbers you will later use as go/no-go gates: on-time delivery against the promise actually shown to the customer, first-attempt delivery rate, order-to-dispatch time, stockout rate and RTO rate. The quick commerce fulfilment KPIs every D2C ops lead should track are a sensible starting set. Without a baseline, every post-migration dip becomes an argument between two partners instead of a decision you can make.
In practice, the notice period in your current contract often sets the migration timeline more than the operational work does. Before serving notice, confirm how and when stock will be released, what outbound handling will cost, who bears shortages or damage found at release, when the security deposit is refunded, and in what format order and tracking data will be handed over. Above all, check whether the contract allows a staggered, city-by-city exit. A pincode-level cutover depends on it.
Ask the outgoing partner for a stock report by node, SKU and batch, and reconcile it against your own records before anything moves. Shortages are far easier to settle while stock is still in their custody. For shelf-life categories such as nutraceuticals, food and beauty, check expiry by node as well. Paying freight to move stock you will write off at the new node is an avoidable loss.
Build a Promise Ledger before you move a single unit. It is one register of every place your brand tells a customer when an order will arrive, mapped to the node and partner that backs that promise, with a named owner for turning each promise down and back up.
Most brands have more promise surfaces than they realise, and different teams own them:
| Ledger field | What it captures | Example entry |
| Promise surface | Where the promise appears | Product page delivery badge |
| Promise shown | The exact wording customers see | "Delivered in 2 hours" |
| Coverage | The pincodes the promise applies to | The canary cluster in the first city |
| Backed by | The node and partner fulfilling it | Outgoing partner's node, moving to the incoming partner's node |
| Owner | The person accountable for changing it | Ecommerce lead |
| Cutover action | What changes, and when | Step down to "Delivered today" before any stock moves |
| Restore condition | What must be true to restore it | The cluster clears its go/no-go gate on the new partner |
The core rule is to step promises down, not switch them off. Moving affected pincodes from a two-hour promise to same-day keeps a speed promise on the page while buying the slack a move needs. Removing it gives that advantage away. Leaving it live while stock is in transit is the most expensive option, because a promise that slips quietly costs more trust than one adjusted openly. Customers tend to judge you on whether you keep the promise rather than how fast it is, so a slightly slower promise that holds is the better trade.
The ledger also makes restoration deliberate. Promises go back up only when the restore condition is met, which stops a team from restoring the delivery date on the product page simply because the new partner's first day looked fine.
Seed the new network in the order demand requires, document every movement correctly for GST, and reconcile at receipt rather than at month-end.
There are three ways to get stock into the new network. You can transfer existing stock, sell through what the old nodes hold while routing new purchase orders to the new partner, or combine the two. The hybrid is often the most practical in quick commerce: transfer fast movers so new nodes open with depth where it matters, and let the long tail sell down where it already sits. The right mix depends on stock turns, shelf life and how much runway your notice period gives you.
A new node stocked with the full catalogue but thin on top sellers will post a worse stockout rate on day one than the node it replaced. Seed using node-level demand, the problem covered in demand forecasting for quick commerce dark stores, and count at receipt, node by node, with any discrepancy raised inside an agreed window.
Moving stock between partners is usually not a sale, but it is still a movement of goods, and the documents depend on your GST registrations rather than on who owns the stock.
That ₹50,000 figure is not universal. Rule 138(14) exempts specified goods and situations, and each state notifies its own intra-state threshold and exemptions, so a transfer within one state can follow different rules from one between states. The procedure has also shifted this year: GSTN proposed new e-way bill requirements in 2026 and later withdrew them, leaving the existing rules in place. Before stock moves, confirm with your tax adviser that each new partner facility is registered as a place of business on the right GSTIN, and check the current rules for your specific route. Our guide to GST e-invoicing and e-way bill rules for quick commerce dispatch covers the outbound side. This section is operational guidance, not tax advice.
Pick one city, then one pincode cluster within it. Route that cluster's orders to the new partner under a stepped-down promise, and expand only when it clears gates you wrote down before the move started.
The idea comes from software releases: expose a small slice first, then widen or roll back based on what it shows. In fulfilment, the slice is a catchment. Choose a cluster with enough daily orders to be meaningful but not your highest-revenue catchment, with a representative SKU mix and no campaign running.
| Phase | Entry condition | What changes | Go/no-go gate | Rollback trigger |
| 0. Shadow | New nodes seeded and reconciled | Test orders flow end to end; no live orders | Every test order picked, dispatched and status-synced correctly | Any order status or inventory sync failure |
| 1. Canary cluster | Shadow passed; ledger step-downs live | The cluster's live orders route to the new partner | On-time and first-attempt rates at or above baseline for the agreed window | Performance below the baseline floor, stock mismatch or an unanswered escalation |
| 2. Full city | Canary passed | Remaining pincodes route over; old nodes sell down or transfer | Same gates city-wide, plus stockout rate | Same triggers; route back cluster by cluster |
| 3. Promise restore | City gate passed | Ledger promises restored for that city | Restored promise holds at baseline | Return to the stepped-down promise, not to the old partner |
| 4. Next city | Previous city stable | Repeat from phase 1 | As phase 1 | As phase 1 |
Two conditions make this work. First, the outgoing partner stays live in each city until that city clears its gate, because a rollback needs somewhere to roll back to. Running two partners in parallel costs money in split inventory and double storage; treat it as the price of a reversible migration. Second, routing must be controllable at pincode level in your storefront or order management system, with order status, tracking links and NDR events flowing back from whichever partner holds the order.
One more thing moves with the orders: your standards. Packaging specifications, inserts, quality checks, COD handling and doorstep conduct need to transfer as written SOPs, not as habits the old partner's team carried in their heads. They are easier to enforce where riders are full-time employees rather than gig workers rotating across platforms, because training reaches a stable team rather than a rotating pool.
More than most teams plan for. The outgoing partner's tail runs on after the last forward order: cash, returns, failed deliveries, disputes, stock and data. A tail-closure checklist gives each item an owner and a closing date, so nothing stays open by default.
| Tail item | Why it lingers | How to close it |
| COD remittances | Cash from final orders is remitted on the old partner's cycle | Reconcile collected against remitted at order level; agree a final settlement date in writing |
| NDRs and RTOs in flight | Orders shipped before cutover can still fail after it | Keep the old partner's NDR workflow live until every pre-cutover shipment reaches a final state |
| Customer returns | Returns raised after cutover can relate to orders the old partner delivered | Decide which partner collects them and update return addresses everywhere they appear |
| Stock found short or damaged | Discrepancies surface only when stock is picked for transfer | Joint count, signed record, claim under the agreed liability terms |
| Deposit and final invoice | Usually held until disputes are settled | Close disputes first, then fix a refund date |
| Customer and order data | The old partner still holds names, addresses and phone numbers | Export what you need, then get written confirmation of deletion as the contract allows |
| Access and integrations | API keys, webhooks and dashboard logins persist | Revoke keys, disable webhooks and remove user access |
The data line deserves particular care. A fulfilment partner holding your customers' names, addresses and phone numbers is processing personal data on your behalf. Under the Digital Personal Data Protection Act, a business may engage a data processor only under a valid contract, and the Act's substantive obligations come into force on 13 May 2027. Put data return and deletion terms into the exit plan now, with legal counsel confirming the specifics. Returns need the same deliberateness: deciding early who owns reverse pickups is part of building a returns process that protects margin.
Zippee is quick commerce fulfilment infrastructure for a brand's own channel: dark stores that pick and pack to the brand's SLAs and SOPs, with delivery by full-time employed riders rather than gig workers, and integrations with platforms brands already run, including Shopify, WooCommerce, Unicommerce and EasyEcom. Because orders are placed on the brand's own website, changing fulfilment partner moves the fulfilment, not the customer relationship.
For a migration, that model matters in the places this runbook stresses most: SOPs that become written standards for a trained team, and one operator accountable when a promise slips. Our view of Quick Commerce-as-a-Service for Indian D2C brands explains the model in more depth.
A well-run migration is invisible to the customer. That happens only when the promise moves first, each city earns its cutover against its own baseline, and the old partner's tail is closed rather than abandoned. Treat the switch as a sequence of decisions with owners and gates, not a moving date.
If you're ready to turn your fulfilment into a competitive advantage, join our waitlist.