Inventory Postings and Valuation

Note: this article is primarily about so-called “Anglo-Saxon accounting“. If you use Continental (Rhine) accounting some of the postings are different.

As standard, Odoo is configured to use Standard Cost and Manual Inventory Valuation. This means that you enter the standard cost for each product and no accounting entries are posted for any inventory transactions.

To take full advantage of having an integrated ERP system you may want to use:

  • Average Cost or FIFO (based on purchase prices)
  • Automated Inventory Valuation (with accounting entries)

–> There are changes in Odoo 17, so you may want to read this page first.

Fortunately it’s easy to change the configuration. This is defined on the Product Category, so it’s best to decide what you want before you create multiple Product Categories.

Product Categories

The fields are described below.

Costing Method

  • Standard Cost (uses the cost entered on the product)
  • Average Cost (based on purchase prices)
  • FIFO (First In First Out, uses purchase price for each receipt)

Inventory Valuation

  • Manual (or Periodic)
    • No accounting entries are created for inventory movements or adjustments.
  • Automated Inventory Valuation
    • Accounting entries are automatically created, using the accounts specified (see below). These can be entered in the following places:
      1. On the Product Category
      2. On the product (Income and Expense accounts, Price Difference account)
      3. For the location (Input and Output accounts)

Note also that if you make any changes to the above two fields, Odoo will display a warning message.

Account properties

Price Difference Account – used if the price on Vendor Bill (Supplier Invoice) is different from the PO price at the time the goods were received.

Income Account

Used when a product is sold to a customer (generates income so will show on the Profit & Loss).

Expense Account

Used when buying a product. This is an expense that will show on the Profit & Loss.

Note: these three accounts can be overridden for a product on the Accounting tab:

Account stock properties

Accounts

  1. Stock Input account – for all incoming receipts of stockable items (e.g. goods received from vendors)
    • This is an interim account to record the future liability to pay the vendor. When a Vendor Bill is created this is converted to Accounts Payable.
  2. Stock Output account – for all outgoing stock moves (e.g. goods delivered to customers)
    • This is an interim account to record that the customer should pay you for the goods you have shipped. When a Sales Invoice is created this is converted to Accounts Receivable.
  3. Stock Valuation Account – updated for all stock moves

Note that for “Anglo-Saxon accounting” these three stock accounts are all asset accounts (on the Balance Sheet).

If you invoice the customer immediately after delivery, you can simplify postings by using this free add-on

Stock Journal

Select the Stock Journal to be used. This should be automatically created

Inventory adjustment postings

Inventory adjustments are used to correct inventory balances. Normally this would be done as part of periodic (e.g. quarterly or annual) stocktaking, or cycle counting.

If you are using Automated Inventory Valuation (and the Invoicing or Accounting apps are installed), inventory adjustments will post journals.

As standard, these will post to the same accounts that are defined for receipts and deliveries for the product category (see above).

  • This seems reasonable (because increasing the inventory balance is similar to a receipt, whereas reducing the balance is similar to a delivery to a customer).
  • However, in Anglo-Saxon Accounting these are “interim” accounts that are designed to be used temporarily and then cleared by follow-up transactions (Vendor Bill or Customer Invoice, as explained above). That won’t happen with an Inventory Adjustment, so it’s better to use other accounts.

This is set up in Inventory Configuration for the Inventory Adjustment “virtual” location.

Start by navigating to Inventory / Configuration / Locations

Remove the filter (“Internal”) and all locations will be displayed:

As shown above, the Accounting Information is left blank as standard, which means that the stock input and output accounts in the Product Category are used.

Instead, you can:

  1. Create another “current asset” account, specifically for stock adjustments.
    • You then need to manually clear this account by posting a journal that will transfer the gain or loss to Profit & Loss (P&L).
  2. OR select an Expense account so P&L is updated immediately (which is easier)

In both cases only one account is required and Odoo will post Credits or Debits depending upon whether the inventory balance is increased or reduced.

Let’s create an account (6000200) for Inventory Write-Off. This is an Expense account in the P&L (option #2 above).

Now we will enter an inventory adjustment to reduce the inventory balance

This is the posting

Stock Valuation is reduced, Expenses are increased.

Note: If you install Manufacturing, you should do the same for Work in Progress

  • This is only needed in versions 16 and earlier – it is setup on the company and product category in v17, so setting it on the Production Location overrides that for all products

Multicompany

When you create a Product Category, it will exist in all companies but the initial setup will only be for the current company, so you will need to remember to switch to all the other companies and setup the costing and posting information described above.

  • Odoo stores this company-specific information in the Company Properties, but it is visible in the Product Category (for the current company) 

Price Differences

If the price on Vendor Bill (Supplier Invoice) is different from the PO price (at the time the goods were received) and you have specified a Price Difference Account (on the Product or Product Category, as described above) a posting will be made to that account.

This only applies to Anglo-Saxon accounting (and, of course, you must have the Invoicing or Accounting app installed).

Here’s an example of the postings if you use the Price Difference account:

If you don’t specify a Price Difference Account, the posting to the Stock Interim account will not match what was posted on the Goods Receipt, and you will have a balance that you will have to manually adjust later.

It is therefore recommended to select an Expense P&L account as the Price Difference Account for each Product Category.

Links to Odoo documentation

16 thoughts on “Inventory Postings and Valuation

  1. I have configured all the accounts and locations as per the above suggested guidelines. However, when a vendor bill is posted, the following journal entry is getting created :

    Accounts Receivable A/c. Credit
    Taxes A/c. Debit
    Expense A/c. Dr. (as set from product category)

    With this, Expense Account in P&L is getting debited and Taxes and Receivables accounts are getting posted in BS. However, Stock Interim Account credited at the time of goods receipt is not getting nullified. As a result, this temporary entry is getting reflected in BS.

    It may be mentioned that Inventory Write-Off Account (Expense) for Inventory adjustment, created as per guidelines) is not getting affected by vendor bill posting, which would have nullified Stock Interim Acccount.

    May I know which setting could have gone wrong?

    Like

      1. I don’t understand Continental Accounting in Odoo – some of what happens seems strange to me, so I can’t help you.

        Like

  2. But what about the case for multi company? There will be different charts of account for respective companies. In that case, how can I customize inventory adjustment action to select another virtual location and expense account?

    Like

    1. There will be different virtual locations for each company, so you just need to setup all of them. If using the admin account take care to select an account from the same company!

      Like

  3. How to clear the stock interim (received) account in the below scenario:
    * Company has an opening balance for Inventory Valuation from last year that require to be recorded manually in the opening balances Journal entry.
    If we activate the automatic inventory valuation method, A journal entry will created per each product as below:
    Inventory Valuation Debit
    stock interim (received) Credit
    Of Course, Anglo-Saxon method.

    Like

    1. We reversed the automatic entries, because as you said, you already have the opening balance brought forward.

      Like

  4. Stock Interim Account (Received) and Stock Interim Account (Delivered)
    showing some balances , how I can find the missing documents or transactions easily
    is there any reports will help me to find the reason for the balances .

    Like

    1. Enable Developer Mode, go to Journal Items and enter the account number then you can see the postings. But I don’t think it’s easy to see what has happened!

      Like

  5. In the community edition, I created a product category but I was not able to see the Account Stock properties. Is it removed from the Cummunity Edition ?

    Like

      1. Hi Chris, Yes Odoo 17 Community edition. How to enable it to see the automatic accounting option in odoo 17 Community edition ?

        Like

  6. I followed your guide “Inventory postings and valuation odoo17” to set up automatic inventory valuation on Odoo 17 Community, but as soon as I switch to the Settings module and click “Save” (even without making any changes to settings) inventory valuation is reset to Manual for all Product Categories. Do you have any suggestions as to why this might be happening?

    Like

Leave a comment