← All articles

Blog

How to Set Up Multi-Warehouse Inventory in Odoo for an Indonesian Business

A step-by-step guide to configuring multi-warehouse inventory in Odoo — warehouse hierarchy, internal transfers, routes, and replenishment for Indonesian operations.

3 min read
  • mid
  • odoo

Running stock across a central warehouse and several stores — or warehouses in Jakarta, Bandung, and Surabaya — is exactly the situation Odoo Inventory is built for. But multi-warehouse setups are also where rushed configurations break. Get the hierarchy right at the start and Odoo handles transfers, availability, and replenishment cleanly. Get it wrong and every report misleads you. Here is the setup that works.

Map your physical reality first

Before touching Odoo, sketch your actual storage points. A typical Indonesian distributor or multi-store retailer has: one or two main warehouses, each retail outlet as its own stocking location, and goods that move between them. Decide which are full warehouses (with their own receiving and shipping) and which are locations inside a warehouse. This decision drives everything else, so do it on paper before configuring.

Create warehouses and their location structure

In Odoo, each warehouse comes with internal locations — stock, input, quality, output. For multi-store retail, the common pattern is:

  • A main warehouse (the gudang utama) where goods are received from suppliers.
  • Each store as its own warehouse or location, depending on whether it receives directly or only from the main warehouse.
  • Transit locations for stock in motion between sites, so in-transit goods are visible and not “missing.”

Configure each store carefully. The most common mistake is treating stores as loose locations with no transit logic, which makes inter-store movements invisible.

Set up internal transfers

Moving stock from the main warehouse to a store is an internal transfer. Odoo creates a delivery from the source and a receipt at the destination, with a transit location in between. This means at any moment you can see what is on the truck between Bandung and Surabaya — not just what is at either end. For Indonesian businesses where inter-island or inter-city shipping takes days, this visibility is genuinely valuable.

Configure routes and replenishment

Routes tell Odoo how goods should flow. Two common ones:

  • Replenish stores from the central warehouse. A store running low triggers a transfer request from the main gudang rather than a purchase order.
  • Buy to the central warehouse. Reordering rules on the main warehouse trigger purchase orders when central stock drops.

Combined, these let stores pull from central stock automatically, and central stock replenish from suppliers automatically. Set the minimum and maximum levels per location based on real sales velocity, not guesses.

Decide your valuation and costing method

For multi-warehouse setups, settle on a costing method (typically average cost for Indonesian trading businesses) and ensure inventory valuation posts correctly to Accounting. Stock value should be consistent regardless of which warehouse holds the goods.

Test transfers before going live

Run a few real transfers end to end — central to store, store to store, an adjustment after a count — and confirm the numbers and the accounting entries are right. This is where configuration errors surface while they are still cheap.

A note on stores that sell via POS

If your stores run Odoo POS, each register draws stock from that store’s location. Get the store-to-location mapping right so a sale in the Surabaya outlet reduces Surabaya stock, not central. This is a frequent source of confusion and a frequent source of wrong numbers.

Multi-warehouse is one of Odoo Inventory’s genuine strengths, but the hierarchy and route configuration reward experience. If you want a second pair of eyes on your warehouse structure before you build it, we are glad to walk through it with you in an hour, no charge.