Warehouse & Logistics · Case Study

Scaling Multi-Client Fulfillment: Odoo-Based Warehouse Operations for a Growing 3PL

A third-party logistics provider running three fulfillment warehouses for fifteen brand clients replaced spreadsheet stock tracking and paper pick lists with Odoo Inventory and Barcode — client-segregated storage, directed picking, and a custom activity-based billing engine.
Inventory
Barcode
Multi-Warehouse
Website/Portal
Purchase

Industry

Warehouse & Logistics / Third-Party Fulfillment

Business Type

3PL operating 3 fulfillment warehouses for around 15 brand clients

ERP

Odoo — Inventory, Barcode, Sales, Accounting + custom billing/returns modules

Scope

Receiving + Storage + Picking/Packing + Dispatch + Client Billing

Implementation

Configuration + Custom Development + Integration

Executive Summary

One shared system across three warehouses and fifteen brands

1The Situation

Each of roughly fifteen client accounts ran on its own spreadsheet, receiving was done against paper goods-received notes, pick lists were matched to orders by hand, carriers were chosen by judgment across four or five separate portals, and month-end client billing was compiled manually.

2The Objective

Give a fast-growing 3PL a shared, client-segregated warehouse system across three facilities — without disrupting live operations — ahead of its next growth phase.

3The Approach

Configure multi-warehouse, ownership-based multi-client inventory and barcode-driven receiving and picking, then extend it with a custom billing engine and returns QC workflow, rolled out warehouse by warehouse.

Business Challenges

Six problems a shared warehouse system needed to solve

Multi-Client Inventory Segregation

Stock belonging to fifteen different brands sat across three warehouses without a system-level mechanism to keep it apart, creating real risk of misallocating one client's inventory against another's order.

Inbound Receiving Accuracy

Manual GRNs with no barcode validation meant quantity and SKU discrepancies were often only discovered later, during picking, when they were far more disruptive to resolve.

Carrier Selection & Label Generation

Paper pick lists with no batching or directed picking sequence led to inefficient walking patterns and a recurring rate of wrong-item shipments.

Quality Checkpoints Not Enforced in the Workflow

Choosing among four or five courier accounts manually, and generating labels through separate portals, slowed dispatch during peak periods.

Client Billing Tied to Actual Activity

Storage and handling invoices were built from incomplete manual records rather than system-logged activity, making disputes common.

Inconsistent Returns Quality Control

Without a structured inspection step, some returned items were restocked without any condition check, occasionally resulting in damaged goods reaching a new customer.

Before Odoo

Three warehouses, fifteen client accounts, no single system tying it together

01

Per-Client Spreadsheets

01
02

Paper Goods-Received Notes

02
03

Printed Pick Lists

03
04

Manual Courier Portals (×4–5)

04
05

Manual Month-End Billing

05
06

Inconsistent Returns QC

06

Fifteen client accounts, fifteen spreadsheets, and no single system tying any of it together.

Odoo Solution

A client-segregated Odoo environment built around barcode-directed operations

Inventory

Multi-warehouse, ownership-based segregation

Barcode

Directed receiving & picking

Sales

Client order & channel tagging

Purchase

Operational supplies

Converging into a custom Activity-Based Billing Engine and a Barcode-Driven Returns QC workflow
Multi-Warehouse, Multi-Client Architecture

Multi-level Bills of Materials were configured with the spice-blend recipe modeled as a sub-component BoM feeding into the finished snack product. Work centers were set up for both production lines with defined operations — mixing, roasting or frying, seasoning, and packing — and raw material consumption is now backflushed automatically against the correct lots when a manufacturing order is completed.

Staff scan the inbound advice or ASN barcode on arrival, then scan each carton or pallet as it’s received; the system checks the scanned SKU and quantity against what was expected and flags any discrepancy immediately. Putaway location is suggested by the system and confirmed with a scan.
Orders are batched by carrier cutoff time and warehouse zone, and the barcode app generates a directed pick sequence. At the pack station, contents are scanned and verified against the order before a shipping label is generated.
Packaging materials and consumables used by the warehouse itself — not client-owned stock — are managed through standard Odoo reordering rules.
Modules Implemented

Where standard Odoo did the heavy lifting

01
WAREHOUSE

Inventory

Multi-warehouse, ownership-based client segregation.

Odoo Implementation
Customization

Where standard Odoo stopped and custom development took over

Vayasoft doesn’t simply install Odoo — it extends it exactly where the business needs something standard Odoo doesn’t offer.

01 Activity-Based Client Billing Engine

Storage and handling invoices would need to be compiled manually from stock and transaction records each month.

A module calculates each client's monthly storage fee from actual average pallet or bin occupancy — computed from historical stock quant data — combined with a per-transaction handling fee based on inbound lines received and orders picked, generating a draft invoice in Accounting for review.

Storage and handling billing disputes with clients dropped noticeably once invoices began reflecting system-recorded activity rather than manual estimates.

02Barcode-Driven Returns QC

The standard returns flow restocks items without a mandated condition check.

Each returned item is scanned and checked against a condition checklist — sellable, damaged, or needs cleaning. Only sellable items are routed back to the pick face; damaged items go to a quarantine location and are automatically linked to a claim record for the brand.

Damaged returns reaching new customers, previously an occasional but persistent problem, have become rare.

Workflow

From dock door to dispatch, in one connected pipeline

Receiving
Putaway
Storage
CENTRAL Odoo Connected ERP
Picking
Packing
Dispatch
Integrations

Connecting Odoo to the systems already in daily use

Courier APIs
Client Portal
Marketplace / Shopify
WhatsApp / Email Alerts
Label & AWB generated at the pack station, tracking pushed to the client portal automatically

Carrier API Integration

Four major courier partners were integrated via API so the system automatically selects the appropriate service based on each client's shipping rules and destination, generating the label and airway bill directly from the pack station and pushing the tracking number back to the order and client portal.

Client Portal

A custom extension of the standard Odoo portal gives each brand client real-time visibility into stock levels, inbound status, and outbound shipments, plus downloadable monthly storage and handling invoices.

Marketplace Order Sync

Orders from clients' own Shopify and marketplace stores are pulled automatically into Odoo as fulfillment orders tagged by client and sales channel.

Low-Stock Alerts

WhatsApp and email alerts notify client contacts automatically when a critical SKU drops below their defined stock threshold.

Implementation Journey

A phased rollout across three warehouses

Operational Shadowing

Time spent observing operations across all three warehouses.

Client SLA & Segregation Workshops

Defined client-specific segregation rules and service-level expectations with account managers.

Warehouse & Route Architecture Design

Zones, routes and ownership-based segregation designed and configured in staging.

Custom Development

Billing engine, returns QC workflow and ops dashboard built.

Data Migration

Opening stock by client established through a full physical count.

Carrier & Portal Integration

Completed in parallel with the custom development phase.

Pilot Rollout

One client account in a single warehouse before extending client by client.

Phased Go-Live & Hypercare

Warehouse by warehouse, with shift-based training and support through the first full month-end billing cycle.

Business Outcomes

What changed after go-live

3% → <0.5%

Mis-pick rate, order lines

~3%

Fewer distributor complaints about product consistency

Same-Day+ → <2 Hours

Average dock-to-stock time from truck arrival to putaway completion.
THE OPERATIONAL DIFFERENCE

Fewer Disputes

Storage & handling billing disputes dropped once invoices reflected system-recorded activity.

Rare, Not Recurring

Damaged returns reaching new customers have become rare since barcode-driven QC was introduced.

Fewer Status Calls

Client calls and emails asking for basic stock or shipment status dropped substantially with portal visibility.

Before vs After

Side by side

01 Old Process
02 New Process

Per-client spreadsheets with no shared system

01

Ownership-based multi-client inventory in one Odoo instance

Paper GRNs with no barcode validation

02

Barcode-driven receiving with instant discrepancy flags

Printed pick lists matched by hand

03

Directed wave/batch picking via barcode app

Manual carrier choice across 4–5 portals

04

Automated carrier selection with one-click label/AWB generation

Manual month-end billing from incomplete records

05

Draft invoices generated from system-logged storage & handling activity

Technology / Odoo Stack

Everything that went into this build

Inventory
Barcode
Sales
Purchase
Accounting & Invoicing
Website/Portal
Documents
Spreadsheet Dashboards
Carrier APIs
Client Portal
Marketplace Order Sync
WhatsApp/Email Alerts

Looking to implement Odoo for your warehouse or logistics operation?

Whether you run one warehouse or ten client accounts across three, we’ll map how stock actually moves — then configure and customize Odoo around it.