Case Study
PURISH: Purchasing, Inventory, and Product Costs Across 8 Sales Channels in One Platform

Project description
PURISH is a Berlin-based beauty company that brings international brands such as Geek & Gorgeous, Beauty of Joseon, Danessa Myricks Beauty, and RevitaLash to market through its own online shop, marketplaces, and retail.
PURISH combines e-commerce, distribution, internal and external fulfillment, and B2B sales.
As the number of sales channels, inventory locations, and teams involved grew, so did operational complexity. Inventory, purchasing, and cost data were spread across different systems and could not easily be consolidated into a consistent picture.
PURISH needed a reliable basis for monthly inventory valuation and for determining actual cost of goods sold. However, the existing Odoo instance only reflected part of the operational reality.
The company's own online shop and main warehouse were already connected. Inventory and goods movements at Hive, Amazon, and other marketplaces, however, were missing entirely.
Purchasing was also spread across separate sheets, emails, Asana boards, and team-specific processes.
As a result, PURISH could not reliably trace where goods were located, what they were worth, through which channel they had been sold, and which costs actually belonged to a given reporting period.
Cost of goods sold was derived from the vendor bills processed in a given month rather than from the goods actually sold in the same period.
For the annual financial statements, inventory data had to be consolidated from multiple sources. This process took several weeks.
PURISH manages several thousand SKUs and processes a four-digit order volume every day. On peak days, volume rises to several thousand orders.
In addition to its own warehouse, PURISH uses two separate Hive warehouses as well as Amazon FBA inventory in Europe and the US.
The existing Odoo instance was also technically outdated and had not been developed further at all after its initial implementation.
The central task was therefore to structure purchasing, goods receipts, inventory, goods movements, and vendor bills in a way that made reliable valuation possible.
"The biggest win for finance is the new transparency in cost of goods sold."
"We are a mid-sized beauty company operating in e-commerce and distribution, and last year we introduced Odoo as our ERP system, primarily to consolidate the data from what are now 8 different sales channels and to regain a clear picture of our inventory and the respective cost of goods sold.
bob supported us strongly from the very beginning, both technically and conceptually. I would especially like to highlight the collaboration with Jakob and Ferry, who immersed themselves deeply in our specific processes and brought in their extensive experience in a targeted way. This was anything but easy, as rapid growth had made the company very complex and some structures had to be completely rethought. Within a few months, we were able to map the entire order-to-cash process in Odoo and go live with it.
The collaboration was not only professionally excellent but also very pleasant on a personal level: uncomplicated, efficient, and always solution-oriented. We look forward to continuing the collaboration and can recommend the agency bob without reservation!"
Johannes Rohde
Head of Finance, PURISH

Process
bob worked backwards from the required finance outcome:
Which inventory and cost data need to be available at month-end? Which operational processes generate this data? Which systems need to be connected to make that happen?
Together with PURISH and the finance partner torq.partners, these requirements were translated into a step-by-step roadmap.
bob covered the process, ERP, and integration perspective, while torq.partners contributed the requirements for accounting, reporting, and month-end closing.
The scope was continuously reviewed and adjusted during implementation as new dependencies and operational requirements became visible.
Define the target picture and map the system landscape
During discovery, bob and PURISH jointly examined the existing warehouse locations, sales channels, purchasing processes, and finance requirements.
Four questions were at the center:
Where are the goods located?
How are they purchased and valued?
Through which channels do they leave the company?
Which reports are needed for month-end closing and business steering?
The result was a phased model that connected the short-term finance requirements with a sustainable long-term ERP structure.
Restructure purchasing and inventory valuation
Reliable product costs require that all relevant purchases are systematically recorded in Odoo.
bob restructured the purchasing process, completed vendor data, and trained the teams involved.
Purchase orders, goods receipts, delivery discrepancies, and vendor bills were connected in one end-to-end process.
Today, all goods-related purchasing runs through Odoo. This includes three-way matching between:
What was ordered?
What was actually delivered?
What was invoiced by the vendor?
Landed costs such as freight or customs duties can also be allocated to the relevant goods instead of remaining outside the actual flow of goods.
Integrate Hive and the sales channels
For the goods in the two external Hive inventory locations, bob developed a step-by-step integration.
Purchases with Hive as the delivery destination can be initiated in Odoo. The planned goods receipt is transmitted to Hive, the quantities actually received are sent back to Odoo, and inventory levels are synchronized.
Inventory adjustments for the external Hive locations are now reflected automatically via the integration.
In parallel, the relevant B2C, B2B, and marketplace setups were connected:
Shopify
Amazon FBA
Shop Apotheke
DocMorris
Allegro
Douglas
Shopify B2B
Amazon FBA is mapped separately for Europe and the US. This results in eight technically separate channel setups. Before the project, only one sales channel was systemically connected.
Migrate to Odoo 19 and make product costs usable
The existing Odoo instance was migrated to Odoo 19 and the Shopify connector was updated.
This made it possible to use newer replenishment features and to analyze product costs across channels.
Odoo's built-in features now cover PURISH's current requirements for replenishment planning. As a result, an additional demand planning platform could be avoided.
The average cost value calculated in Odoo is also transmitted to Shopify and can be used from there in downstream reporting and data systems such as Klar.
Product costs are thus available not only in the ERP but also for operational analyses and business intelligence.



Solution
Today, Odoo forms the central operational foundation for PURISH's goods-related processes.
Purchasing, goods receipts, inventory, external warehouses, vendor bills, and outgoing goods are no longer treated as separate, disconnected activities.
The system connects physical goods movements with their financial value.
PURISH can thus trace where goods are located, how they are valued, through which channel they are sold, and where the corresponding cost of goods sold arises.
Odoo does not replace every specialized system. It takes on the role of the connecting data and process layer between Shopify, Hive, Amazon, the other sales channels, and finance.
Functional Focus Areas
Procurement and supplier management
Central management of demand, purchase orders, delivery dates, delivery discrepancies, and vendor bills.
Inventory accounting
Inventory valuation based on average costs, including relevant landed costs.
Three-way matching
Matching of purchase order, goods actually received, and vendor bill.
3PL integration
Synchronization of purchases, goods receipts, inventory, and transfers with the two Hive inventory locations.
Multichannel inventory flows
Mapping of outgoing goods across B2C, B2B, and the relevant marketplace setups.
Finance integration
Linking of goods receipts, vendor bills, payments, and channel-specific cost of goods sold.
Product data and cost distribution
Transfer of current product costs to Shopify and downstream reporting systems.
Operational Capabilities
Track inventory across multiple locations
The company's own warehouse, two Hive locations, and Amazon FBA inventory in Europe and the US are mapped within one shared structure.
Calculate reliable product costs
Purchase prices, vendor bills, and landed costs feed into inventory valuation.
Analyze cost of goods sold by channel
Costs are recorded where goods are actually sold or removed from inventory – not already at the time of purchase.
Connect purchasing and goods receipt
Purchase orders, expected deliveries, quantities actually received, and vendor bills can be matched against each other.
Integrate external fulfillment processes
Goods movements and inventory adjustments at Hive are automatically reflected in Odoo.
Plan replenishment in the ERP
Historical demand and current inventory levels form the basis for replenishment suggestions in Odoo 19.
Use product costs in other systems
The product costs calculated in Odoo are transferred to Shopify and can be used in downstream reporting and analytics systems.
Odoo Apps Utilized
Purchase, Inventory, Accounting, Sales, Replenishment, Analytic Accounting, Shopify Integration, Amazon Integration
Results
The most important change is not a single automation but a shared, reliable data foundation.
PURISH can now consolidate inventory, product costs, and outgoing goods across the relevant e-commerce and sales channels.
Finance gains a stronger basis for inventory valuation and COGS reporting. At the same time, purchasing, operations, and the individual channel teams work with more closely connected processes.
Reliable inventory and cost data in minutes instead of weeks
Before the project, inventory data for the annual financial statements had to be consolidated from various sheets and systems. The process took several weeks.
During implementation, determining the 2025 year-end inventory still took PURISH about one week.
Today, the current inventory value can be determined within minutes.
From one connected channel to eight channel setups
At the start of the project, only one sales channel was systemically connected.
Today, Shopify, Amazon FBA, Shop Apotheke, DocMorris, Allegro, Douglas, and B2B are mapped in Odoo. Amazon FBA is managed separately for Europe and the US.
Inventory and outgoing goods can thus be traced across eight technically separate channel setups.
The company's own warehouse, two Hive inventory locations, and the Amazon FBA inventory in Europe and the US are mapped within one shared structure.
Inventory adjustments for Hive run automatically via the 3PL integration. For Amazon, some manual steps remain; further automation is already in development.
All goods-related purchasing runs through Odoo
Demand, purchase orders, goods receipts, delivery discrepancies, and vendor bills are now handled in one end-to-end process.
Several Google Sheets and Asana boards from purchasing and accounting could be replaced as a result.
The matching of purchase order, goods actually delivered, and vendor bill also takes place in the system today.
Since migrating to Odoo 19, PURISH can also use built-in replenishment features that cover its current requirements for reorder planning. An additional demand planning platform was not required for this scope.
Let’s evaluate your ERP setup
You’ll talk directly to the founders – no layers, no buzzwords. We know ERP pain from the inside and fix it with pragmatic, growth-focused solutions. Clear process, quick response, real impact.
Talk straight to the founders
Fast communication. Clear results.
Pragmatic. Always.

Founder, CEO of bob
Response within 24 hours
