How Odoo Inventory Connects to Accounting, Manufacturing, Sales, and Purchase

Odoo Inventory: Accounting, Manufacturing, Sales Guide

This guide explains how Odoo Inventory connects with the Accounting, Manufacturing, Sales, and Purchase modules in Odoo 19. You will learn what each integration does, which automatic triggers fire behind the scenes, and which configuration choices determine whether your stock data flows correctly into the general ledger. The article is for finance teams, operations leads, and Odoo administrators who want a clear reference for setting up cross module integration the right way.

📋 Key Takeaways

  • Odoo 19 replaced the old Anglo Saxon and Continental terminology with Perpetual and Periodic valuation. The underlying logic changed significantly.
  • Perpetual valuation in Odoo Inventory now posts accounting entries at the invoice level, not at every stock move. The result is fewer journal items and a cleaner ledger.
  • Periodic valuation posts vendor bills as expenses. Stock valuation is updated through a cumulative closing entry generated from the Inventory Valuation screen.
  • Interim accounts such as Stock Interim Received and Stock Interim Delivered no longer exist in Odoo 19. Valuation layers have been eliminated.
  • Most inventory to accounting mismatches are caused by missing valuation accounts on product categories or inconsistent costing methods, not by software bugs.

How Odoo Inventory Connects to Accounting in Odoo 19

Odoo 19 fundamentally changed how Odoo Inventory valuation creates accounting entries. Valuation layers are gone. Interim accounts are gone. The system is simpler, but the configuration decisions are more critical.

What Changed in Odoo 19

  • The Anglo Saxon and Continental terminology has been replaced with Perpetual and Periodic valuation
  • Valuation layers have been eliminated. Valuation is now stored directly on stock moves.
  • Stock Interim Received and Stock Interim Delivered accounts no longer exist
  • Perpetual valuation posts entries at the invoice level, not at every stock move
  • The result is significantly fewer journal items, a cleaner general ledger, and better auditability

In perpetual mode, four actions trigger accounting entries.

1 Vendor Bill Posted (Purchase)

  • Debit: Stock Valuation, since the asset increases
  • Credit: Accounts Payable
  • The receipt itself updates inventory quantities but does not post an accounting entry
  • The bill is what triggers the valuation entry. No interim accounts are involved.

2 Customer Invoice Posted (Sale)

  • Debit: Cost of Goods Sold, which is an expense
  • Credit: Stock Valuation, since the asset decreases
  • The delivery updates stock quantities. The invoice triggers the accounting entry.
  • Sales revenue and COGS are both posted at invoice confirmation

3 Inventory Adjustment

  • A stock count reveals a discrepancy and an adjustment is posted
  • Debit or Credit: Inventory Loss or Gain account against Stock Valuation
  • The entry directly affects the profit and loss statement and the balance sheet
  • In perpetual mode, adjustment entries post automatically. In periodic mode, they are included in the closing entry.

4 Manufacturing Order Completion

  • Raw material value is removed from Stock Valuation
  • Finished goods value is added to Stock Valuation
  • Any variance posts to the Cost of Production account
  • The Bill of Materials must be priced correctly and the costing method must be consistent across categories
💡In periodic mode, none of these triggers create automatic accounting entries. Instead, all stock value changes accumulate in the Stock Variation account. A cumulative closing entry is generated from Accounting, then Review, then Inventory Valuation. The frequency can be manual, daily, or monthly.

Perpetual vs Periodic Valuation in Odoo 19

This is the most important configuration decision for Odoo Inventory integration. The setting is found in Accounting, then Settings, then Inventory Valuation.

Perpetual (At Invoicing)
  • Accounting entries are created when invoices and bills are posted
  • Stock Valuation reflects live inventory value
  • COGS is posted at customer invoice confirmation
  • Adjustments and manufacturing post entries automatically
  • Best for businesses needing live margin reporting, investor facing financials, or audit ready books
Periodic (At Closing)
  • Vendor bills are posted as expenses by nature using purchase expense accounts
  • Stock changes accumulate in the Stock Variation account
  • A cumulative closing entry is generated from the Inventory Valuation review screen
  • The frequency can be manual, daily, or monthly
  • Best for businesses where finance operates on monthly close cycles and does not need daily inventory to ledger matching
🚨Switching from periodic to perpetual after live transactions requires clearing stock, switching the setting, and returning stock at the original value. This creates significant accounting complexity. Make this decision before going live.

What Perpetual Valuation Requires

  • The Accounting module is installed and configured
  • A costing method is selected per product category, either Standard Price, AVCO, or FIFO
  • A Stock Valuation account is assigned on each product category
  • A COGS expense account is assigned on each product category
  • A Stock Variation account is assigned to capture differences between invoiced and received or delivered quantities

What Periodic Valuation Requires

  • A Stock Valuation account is assigned on product categories
  • A Stock Variation account is assigned to accumulate all uninvoiced value changes
  • The closing entry frequency is decided as manual, daily, or monthly
  • The finance team is trained to generate the closing entry from the Inventory Valuation review screen. The Odoo accounting configuration checklist covers every account that must be in place before the first close.

How Odoo Inventory Connects to Manufacturing

Manufacturing depends on Odoo Inventory for component availability, stock reservation, and cost tracking.

When a Manufacturing Order Is Confirmed

  • Odoo checks component stock against the Bill of Materials
  • If components are in a location not covered by the manufacturing route, Odoo issues a warning even when physical stock exists elsewhere
  • Components are reserved against the manufacturing order

When a Manufacturing Order Is Completed

  • Raw material value is removed from Stock Valuation
  • Finished goods value is added to Stock Valuation
  • Any variance posts to the Cost of Production account configured on the production location
  • The WIP account must be assigned on the product category. A missing WIP account causes entries to fail silently.
⚠️ MRP Scheduler Dependencies
  • The scheduler runs daily and evaluates confirmed manufacturing orders against stock and lead times
  • It auto generates purchase orders for missing components when reordering rules and vendor pricelists exist
  • Without reordering rules and vendors, the scheduler runs but produces no output
  • The Make To Order route connects sales directly to manufacturing, so a confirmed sales order auto creates a manufacturing order

How Odoo Inventory Connects to Sales

When a customer orders a product, Odoo Inventory works alongside the Sales and Accounting modules to reserve stock, ship goods, and post the financial entries in sequence.

Order to Delivery to Invoice Flow

  • When a sales order is confirmed, a delivery order is created based on the outgoing route
  • Stock is reserved at confirmation. Insufficient stock creates a Waiting state.
  • When the delivery is validated, stock quantities decrease
  • When the invoice is posted in perpetual mode, the COGS entry is created and revenue is recognised
  • In periodic mode, the cost impact is captured in the period end closing entry
⚠️ Returns
  • A customer return triggers a reverse stock move
  • In perpetual mode, the COGS and Stock Valuation entries reverse when the credit note is posted
  • A credit note must be issued separately. The stock return and the credit note are linked but not automatic.
⚠️The invoicing policy matters. The "Invoice on order" setting recognises revenue before delivery. For physical goods businesses, the "Invoice on delivery" policy is safer. This setting must be consistent across all products.

How Odoo Inventory Connects to Purchase

The Purchase module triggers stock receipts that flow into Odoo Inventory and post valuation entries in accounting once the vendor bill is processed.

RFQ to Receipt to Bill Flow

  • The receipt triggers a stock move and quantities update in Odoo Inventory
  • When the vendor bill is posted in perpetual mode, Stock Valuation is debited and Accounts Payable is credited. Odoo 19 has no interim accounts.
  • Three way matching reconciles the purchase order, receipt, and bill. The bill quantity is populated from received quantity, not ordered quantity. Overbilling is flagged automatically.

Landed Costs

  • Freight, customs, and insurance are allocated to received inventory
  • Costs are distributed by quantity, weight, or volume
  • The system updates stock valuation and creates additional accounting entries
  • Landed costs must be configured before the first import shipment
💡The Odoo 19 Inventory Valuation review screen shows the difference between accounting stock value and current inventory value. The path is Accounting, then Review, then Inventory Valuation. Use it to identify and resolve discrepancies before closing entries are generated.

Setup Decisions That Enable or Break Cross Module Integration

A small number of configuration choices decide whether your Odoo Inventory data flows correctly into accounting and manufacturing. Each choice below should be reviewed before any live transaction is posted.

🚩 Decisions That Break Integration if Wrong
  • No valuation account on a product category. Automated entries cannot post. The receipt validates but no accounting entry is created. The issue often goes undetected until month end.
  • No Stock Variation account in periodic mode. Uninvoiced changes have nowhere to accumulate. Closing entry generation fails.
  • Costing method mismatch. Different methods on raw material and finished goods categories produce incorrect manufacturing cost entries.
  • Wrong invoicing policy. The "Invoice on order" policy applied to physical goods recognises revenue before delivery. The policy must align with revenue recognition rules.
  • Missing WIP account. Manufacturing journal entries fail silently. COGS does not reflect production costs.
  • Route mismatch. The product route does not match the warehouse outgoing route. Deliveries are created but stock is not reserved.
💡All of these decisions must be made during Odoo implementation before the first transaction is posted. Correcting them after live data exists requires clearing and re entering affected transactions.

What Breaks When Integration Is Misconfigured

When something goes wrong with Odoo Inventory integration, the symptoms usually appear in finance reports rather than in the inventory module itself. The table below maps the most common symptoms to their root causes.

← Scroll to see all columns →

SymptomRoot Cause
Inventory valuation does not match general ledgerProduct categories without valuation accounts, or mixing periodic and perpetual across categories
Manufacturing costs do not appear in COGSMissing WIP account or incorrect Cost of Production account on the production location
Delivery orders created but stock not reservedRoute mismatch between product route and warehouse outgoing route
Revenue posted before goods deliveredInvoicing policy set to "on order" instead of "on delivery"
Closing entry shows unexpected amountsStock Variation account not assigned, or bills not matched to purchase orders before closing
Landed costs not reflected in stock valuationLanded cost allocation not configured before first import receipt
💸Many businesses using ERP systems report that their inventory valuation does not match their general ledger. In almost every case, the cause is a configuration decision made during setup, not a software bug.
Cross Module Integration

Not Confident Your Inventory, Accounting, and Manufacturing Are Correctly Connected?

Tatvamasi Labs configures cross module integration as standard scope. Costing methods, valuation accounts, MRP routes, and accounting mode are all included.

Book a Free Implementation Review → Talk to an Odoo Consultant →

Frequently Asked Questions

Common questions about how Odoo Inventory connects with Accounting, Manufacturing, Sales, and Purchase modules.

In Odoo 19, perpetual valuation posts accounting entries at the invoice level. Vendor bill posting debits Stock Valuation. Customer invoice posting debits COGS and credits Stock Valuation. Adjustments and manufacturing post entries automatically. In periodic mode, a cumulative closing entry is generated from the Inventory Valuation review screen.
In Odoo 19 with perpetual valuation, the receipt updates inventory quantities, but the accounting entry is created when the vendor bill is posted. The bill debits Stock Valuation and credits Accounts Payable directly. Odoo 19 has no interim accounts. In periodic mode, the receipt updates quantities only. Accounting is handled through the period end closing entry.
When a manufacturing order is confirmed, Odoo Inventory checks component stock against the Bill of Materials. On completion, raw material value is removed from Stock Valuation and finished goods value is added. Variance posts to the Cost of Production account. The MRP scheduler auto generates purchase orders for missing components if reordering rules are configured.
Yes. A confirmed sales order creates a delivery order and reserves stock. When the delivery is validated, quantities decrease. In perpetual mode, the COGS entry is created when the customer invoice is posted. In periodic mode, the cost impact is captured in the period end closing entry generated from the Inventory Valuation screen.
Perpetual creates accounting entries at the invoice level for every purchase and sale. The balance sheet reflects live inventory value. Periodic posts vendor bills as expenses by nature. Stock valuation is updated through a cumulative closing entry generated from the Inventory Valuation review screen, either manually, daily, or monthly. This setting must be chosen before the first transaction.
Yes. Odoo Inventory can run on its own to track stock movements, manage warehouses, and update quantities. However, automated valuation entries and COGS posting require the Accounting module. Without it, the system tracks units but cannot create the financial entries needed for an accurate balance sheet and profit and loss report.
Odoo Inventory supports three costing methods assigned at the product category level. Standard Price uses a fixed cost set manually. Average Cost (AVCO) recalculates the average after every receipt. First In First Out (FIFO) uses the oldest cost layer when stock is consumed. The chosen method affects valuation accuracy and must remain consistent across raw materials and finished goods.