Pragmatic – Leading provider of open source business applications OpenERP, Ruby on Rails, Node.js, Talend, jaspersoft  – Pragmatic
Beyonce Adams

How to handle inventory valuation in Odoo 19 : Periodic at closing vs Perpetual at invoicing (and why it matters for your business)

Why inventory valuation suddenly matters in Odoo 19

If you buy, stock and sell physical products, there are two numbers you care about daily :

  • How much stock do I actually have?
  • How much is it worth in accounting terms?

That second one – “what is my inventory worth on the books” – is inventory valuation.

Odoo 19 has made a big change in how this is done. 

Instead of just tracking stock movements in the Inventory app and then letting accounting “figure it out,” Odoo 19 lets you choose how and when the value of inventory hits your financial statements. 

Why does this matter? Because this changes :

  • When your cost of goods sold (COGS) is recognized
  • What appears as an asset on your balance sheet
  • What lands in your P&L this month vs next month
  • How “clean” your books look for auditors, banks, and investors

In short : this is not just a system setting. It affects reported profitability.

And Odoo 19 gives you two clear approaches.

What changed from older Odoo versions

In older versions (like Odoo 17 / 18), inventory valuation logic was tied to “Continental vs Anglo-Saxon” accounting.

  • Continental : Purchases are booked as expenses first and then adjusted later.
  • Anglo-Saxon : Purchases first sit on the balance sheet as inventory and COGS is only recognized when you sell.

This is common in the US, UK, India, etc.

In Odoo 19, you see two clearer options in Accounting → Settings → Inventory Valuation:

  • Periodic (at Closing)
  • Perpetual (at Invoicing)

The goal is to make it easier for SMEs and mid-size companies to stay compliant with their local practice.

So if you’re upgrading from an older Odoo or you’re coming from Tally / Busy / spreadsheets, this is important : the logic you’re used to is now mapped to these new options.

The two new valuation methods in Odoo 19

Option 1 : Periodic (at Closing)

Think of Periodic as “we adjust inventory value at period end (month-end / year-end).”

How it works :

  • When you receive products into your warehouse, Odoo 19 tracks the quantity in Inventory, but accounting still treats that purchase as an expense for now.
  • At the end of the period (for example, month-end), accounting does one clean journal entry to “true up” inventory. Odoo shows you an Inventory Valuation report under Accounting → Review → Inventory Valuation, and you can generate a single journal entry from there.
  • That entry moves the right value to the balance sheet as “Stock / Inventory,” and also adjusts your expense/variation accounts.

What this means in practice :

You don’t flood your accounting with entries for every stock move. You just fix it once per period. This is normal in many European accounting practices and in smaller companies where the accountant closes books monthly, not in real time. 

Let’s take an example :

  1. You create a Purchase Order for, say, 20 units of “Butter Cheese” at ₹20/unit.
  2. You receive the goods in Inventory, so On Hand goes up (e.g. 10 received so far).
  3. At this moment, accounting knows “we’ve received stock but haven’t billed some of it yet.” This sits in a variation/clearing logic but it does NOT yet hit P&L as COGS.
  4. When you later upload/confirm the vendor bill, liabilities update (Accounts Payable), and the system tracks that you owe the vendor.
  5. No COGS is recognized on the sale yet because you haven’t done your closing entry. P&L is still clean.
  6. At period closing, you generate the stock valuation entry. That entry moves the correct value into Inventory on the balance sheet and adjusts purchase expense.

That last step is key : Periodic makes you do that manual close.

This is great if :

  • You prefer fewer automatic accounting entries during the month
  • You close books monthly or annually with an accountant
  • You operate in a market where purchases are traditionally booked straight to expense, then corrected

It’s basically “I’ll clean it up at month-end.”

Option 2 : Perpetual (at Invoicing)

Now think of Perpetual as “real-time inventory value, tied to invoices/bills.”

How it works :

  • When you receive stock and later validate the vendor bill, Odoo 19 posts that value to Inventory on your balance sheet immediately. Inventory becomes an asset now, not an expense.
  • When you sell and then invoice the customer, Odoo 19 automatically moves the cost of those goods from Inventory to Cost of Goods Sold (COGS). That’s when it hits your P&L.
  • So revenue and COGS get recognized together at invoicing, which means your gross margin is always visible.

Let’s take another scenario –

  1. You buy 5 PCs at ₹1000 each.
  2. You receive them in the warehouse → On Hand becomes 5.
  3. After you confirm the vendor bill, inventory valuation in Accounting updates and shows these items sitting on your balance sheet as Inventory (an asset). P&L is still zero because you haven’t sold yet.
  4. You then sell the PCs. You deliver them, so physically stock goes to 0.
  5. The real accounting impact (COGS and revenue) hits when you create and confirm the sales invoice. At that point :
    • Balance sheet Inventory for those PCs goes down
    • Receivables go up (customer owes you)
    • P&L shows Sales (revenue)
    • P&L also shows Cost of Goods Sold

This matches standard “perpetual inventory accounting,” widely used in Anglo-Saxon style accounting, where COGS is recognized at sale and stock sits as an asset until then. 

In Odoo 19, the name “Perpetual (at Invoicing)” reflects the trigger: invoicing is what finalizes the accounting move.

So compared to Periodic, Perpetual :

  • Gives you live gross margin
  • Keeps inventory on the balance sheet properly, all month long
  • Reduces manual month-end adjustments

How this impacts your Balance Sheet and P&L

With Periodic :

  • Balance sheet inventory is corrected in bulk at closing using the generated adjustment entry.
  • P&L can look a little noisy mid-month (because purchases might appear as expenses before you do the closing entry).
  • But after you post the closing entry, expenses are adjusted and the final month-end P&L becomes accurate.

With Perpetual :

  • Balance sheet always knows how much inventory you own, in near real time, after bills.
  • P&L only shows COGS when revenue for that item is invoiced, so margin tracking is clean and aligned with sales.
  • Great for companies that report every week or talk to banks/investors often.

In short :

  • Periodic is batch.
  • Perpetual is live.

Which method should my company use?

Here’s a practical way to think about it :

Choose Periodic (at Closing) if :

  • You’re a small / mid-size distributor or manufacturer where an external accountant finalizes books monthly or yearly.
  • You don’t want automatic accounting entries for every stock move.
  • You mainly care about compliance at period end, not daily margin monitoring.
  • You’re used to classifying purchases directly to expense and then doing a “stock adjustment” entry to move closing stock to the balance sheet.

Choose Perpetual (at Invoicing) if :

  • You want live gross margin reporting and accurate COGS per invoice.
  • You have internal finance staff / CFO who want clean dashboards every week.
  • You need to show banks, investors, or auditors a continuously correct balance sheet.
  • You operate in jurisdictions (like US and India) where perpetual/Anglo-Saxon style is the norm: inventory sits as an asset until it’s sold.

If you’re not sure :
Perpetual tends to be the better long-term play once you have scale, because it supports better decision making : pricing, reorder strategy, dead stock analysis, etc. 

Odoo 19’s stock valuation dashboard also lets you drill into product-level value, remaining quantity and unit cost evolution (especially under AVCO and FIFO), so you can see which SKUs are tying up working capital.

Key benefits of upgrading to Odoo 19 for finance and inventory control

a) Cleaner month-end close
Odoo 19 literally gives you an “Inventory Valuation” review screen in Accounting where you can see the gap between what Inventory thinks you have and what Accounting has posted. From there you can generate and post the adjusting entry. That means fewer manual spreadsheets, fewer errors. 

b) Real-time profitability (if you pick Perpetual)
Because COGS hits when you invoice the sale, your gross margin per product / per order becomes visible without waiting for an accountant to “do closing.” This is huge for pricing decisions and discount control.

c) Better audit trail
The stock valuation dashboard in Inventory → Reporting → Valuation shows, line by line, how quantity moved, what unit cost was used and what value was posted. You can sort by product, date, etc. This helps justify numbers to auditors, lenders or even insurance companies who ask “what’s the value of what’s in this warehouse right now?” 

d) Alignment between Warehouse and Finance
In older setups, Warehouse says : “We received it.” Finance says : “It’s not on the books yet.”
Now Odoo 19 lets both sides see the same flow. Whether you choose Periodic or Perpetual, the process is defined and visible instead of living in someone’s head.

e) Easier migration / opening balance
When you bring in opening stock (for example during go-live), Odoo 19 supports bringing that into Inventory and then letting Accounting generate the correct journal entry depending on your chosen valuation method. You’re not stuck doing dozens of manual journal entries per SKU like before. 

That is a big reduction in migration pain.

How Pragmatic Techsoft can help

Odoo 19 quietly did something huge for inventory-heavy businesses : it stopped treating valuation as a black box for accountants and turned it into a choice that directly matches how you want to run the company.

But here’s what usually goes wrong when implementing Odoo/ migrating/upgrading to a newer verison :

  • Mapping the wrong accounts (Stock Valuation, Stock Variation, COGS, Expense) to product categories
  • Leaving “variation” accounts populated when they shouldn’t be in Perpetual mode, or not populating them when needed in Periodic mode
  • Migrating opening inventory in a way that destroys your first month’s P&L

We’ve implemented Odoo for trading, distribution, manufacturing and multi-warehouse businesses.
Our team sets up :

  • The right valuation method for your country and audit style
  • The correct chart of accounts mapping for Inventory, COGS, Purchase Expense, Payables, Receivables
  • Clean opening balances so that day 1 of Odoo already matches your last signed balance sheet
  • Training for your accounting team so they actually understand what’s happening (and don’t panic at month-end)

We don’t just “install Odoo.” We get you to a place where your CFO, auditor and warehouse manager are all looking at the same truth.

If you’re planning an upgrade to Odoo 19 or moving off spreadsheets / Tally and you want this to be clean from day one, talk to Pragmatic Techsoft. 

We’ll sit with you, understand your flow and design the right valuation approach (Periodic or Perpetual) so you stay compliant and in control.

FAQs

Q1. What costing methods can I still use in Odoo 19?
Odoo 19 still supports Standard Cost, AVCO (Average Cost), and FIFO. The costing method defines how the per-unit value is calculated. For example, AVCO keeps a weighted average of all received costs and FIFO assumes you sell the oldest stock first. 

Q2. Is “Periodic at Closing” only for Europe?
Not only Europe, but yes, Periodic is traditionally more common in European/continental style accounting where purchases hit expense first, and then you post a stock variation entry at period end.
If your accountant prefers to “book purchases to expense and fix it later,” Periodic will feel very natural.

Q3. Is “Perpetual at Invoicing” the same as Anglo-Saxon accounting?
Functionally yes. In Perpetual, stock sits on the balance sheet as an asset, and COGS is only recognized when you invoice the sale. That’s aligned with Anglo-Saxon practice in places like the US and India.

Q4. Do I still have to do a massive manual stock journal every month?
With Perpetual : mostly no, because Odoo posts cost movements automatically when you bill vendors and invoice customers.
With Periodic : you still do a period-end entry, but Odoo 19 prepares it for you inside Accounting → Review → Inventory Valuation. You press Generate Entry instead of building that journal by hand.

Q5. What happens if I migrate from my old system with opening stock?
Odoo 19 supports bringing in opening quantities and then generating the proper accounting entry depending on your chosen valuation method. The system posts to Inventory Valuation / Inventory Variation / Clearing so your opening balance sheet lines up. This reduces painful manual work during go-live.  
This is one of the places Pragmatic Techsoft helps a lot, because if you mess this up, your first month in Odoo will look “wrong” to your auditors and it’s hard to fix later.

Q6. I only do physical stock counts once a year. Which method is better?
Periodic will feel more natural. You count stock, you close books, you post one adjustment.
But if you’re scaling and you want real-time gross margin, or you want inventory to appear correctly on the balance sheet during the year (for lenders, for investors, for internal dashboards), then Perpetual is the smarter long-term play.

Q7. Can I change methods later?
Yes, but you shouldn’t do it casually. Changing from Periodic to Perpetual (or vice versa) changes how entries hit P&L and balance sheet. You’ll want someone to map accounts, close out old balances, and make sure valuation layers and stock quantities are aligned. This is typically something we plan and execute at a period boundary, not mid-month.

SHARE | FOLLOW | SUBSCRIBE

Leave a Reply

Subscribe to Blog via Email.

Enter your email address to subscribe to this blog and receive notifications of new posts by email.
Loading

Recent Comments

Related Posts