Skip to content

Inventory valuation

Quick summary: Check quantities and costs in the stock reports first. Use the accounting closing report to reconcile that inventory value with the stock accounts. Correct a receipt’s price through its linked vendor bill or an appropriate credit and replacement; use a stock return only when goods actually move back.


The stock report answers how much inventory you hold and what it is worth. The accounting report compares that valuation with the posted balances of the stock accounts. Opening the report does not post an entry.

Keep three settings separate:

  • The costing method, Standard Price, Average Cost (AVCO) or First In First Out (FIFO), determines how inventory is valued. With standard cost, a bill can change a receipt’s value without changing the configured cost of stock on hand.
  • Periodic (at closing) and Perpetual (at invoicing) determine the accounting treatment. In both modes, a posted vendor bill linked to the purchase order can update incoming movement values. In Odoo 19, perpetual valuation does not mean every ordinary receipt creates its own journal entry.
  • The Manual, Daily or Monthly inventory period controls the closing schedule.

For accounts, category overrides and manufacturing, see stock accounting setup.

Open the stock report in Odoo

Your Odoo address

Enter the base address of your Odoo instance. It will be stored only in this browser.

The documentation does not receive your address, username, or password.

  1. Open Inventory > Reporting > Stock.
  2. Check the active company and any warehouse or product filters. For a past cut-off, use Inventory at Date and select the agreed date and time.
  3. Review On Hand, Unit Cost and Total Value. Do not add quantities of unrelated products or different units of measure to verify a financial total.
  4. Click a product’s Total Value to inspect the incoming movements that still contribute to its stock. The view initially filters to Incoming and Remaining; it is not the product’s complete movement history.
  5. Use History for quantity movements. Where available, click Unit Cost to inspect how the current cost was calculated; this link is not available for FIFO.

Under FIFO, remaining units retain their incoming movement’s individual cost. Under average or standard cost, the remaining value uses the applicable product cost; it need not equal the original receipt amount.

Inspect the value of one receipt or delivery

Section titled “Inspect the value of one receipt or delivery”
Open movement analysis in Odoo

Your Odoo address

Enter the base address of your Odoo instance. It will be stored only in this browser.

The documentation does not receive your address, username, or password.

  1. Open Inventory > Reporting > Moves Analysis and switch to the list view.
  2. Filter to Done and search Reference for the exact transfer reference. Check that the results contain only that receipt or delivery.
  3. Inspect the existing Quantity, From and To columns, and enable Value in the column selector. The values belong to the individual product movements; export the filtered rows if you need to total them.
  4. For a receipt, select one movement and choose Actions > Adjust Valuation. Read Current Value and its explanation, then discard the form without saving. Opening it for inspection does not require entering a new value.

The receipt’s explanation identifies where its value comes from:

  • A purchase-order reference with (not billed) means that quantity still uses the order price.
  • A vendor-bill reference means a posted, linked bill contributes to the value.
  • Both references mean the value combines billed and unbilled quantities.
  • Adjusted on … by … identifies a manual override. The calculated explanation may also show what the value would be without it.

For FIFO, the valuation list opened from Total Value also offers the optional Value Description column. Remove Remaining to find fully consumed receipts; remove Incoming as well if you need outgoing movements. Reapply the required reference and date filters.

Internal transfers within company-valued stock do not change the company’s total stock value. The receipt value, the value still in stock, and the value of a later delivery are different figures.

Open stock valuation closing in Odoo

Your Odoo address

Enter the base address of your Odoo instance. It will be stored only in this browser.

The documentation does not receive your address, username, or password.

Open Accounting > Review > Inventory Valuation and select the cut-off date. The clickable section headings open supporting records; account rows and amounts do not provide a product breakdown of the adjustment.

Section Meaning and available detail
Initial Balance The posted accounting balance of the stock accounts through the selected date. The heading opens journal items. It is not a stock snapshot at the start of a selected period.
Inventory Loss / Cost of Production, when shown Separate location-based adjustments. Their headings open the related stock movements. Add Done, the company and the relevant date range; do not assume the opened list contains only movements since the previous close.
Stock Variation The remaining adjustment between inventory valuation and accounting, after separate adjustments. There is no direct product or movement drill-down for this section.
Ending Stock The calculated inventory value at the selected date. The heading opens the stock report. Check the date and filters there before comparing totals.

For example, an accounting balance of €12,000.00, a production reduction of €200.00 and a further stock reduction of €3,800.00 reconcile to €8,000.00 of ending stock. Read the debit and credit columns to establish the direction of an adjustment; the section total alone is not a signed movement list.

To investigate the period’s activity, filter Moves Analysis to Done and the agreed interval since the previous close, then group by product and inspect incoming and outgoing flows separately. Exclude internal transfers from the company’s net change. These movements help explain quantities, but their values need not sum to Stock Variation: accounting postings, bill-price corrections and manual valuation changes also affect the reconciliation. An exact product-by-product explanation requires a separate reconciliation.

  1. Finish the quantity, price and account checks and refresh the closing report.
  2. Click Generate Entry to create a draft journal entry. This step does not itself post the manual closing.
  3. Review the company, date, journal, accounts, debits and credits. The entry is grouped by account; it is not an itemized receipt report.
  4. Have the authorized accountant click Post, then reopen the closing report and verify the resulting balances.

Correct a vendor bill and recheck the receipt

Section titled “Correct a vendor bill and recheck the receipt”
Open vendor bills in Odoo

Your Odoo address

Enter the base address of your Odoo instance. It will be stored only in this browser.

The documentation does not receive your address, username, or password.

A draft bill does not supply the receipt’s billed value. Posting a bill linked to the original purchase-order line recalculates related incoming movements. Selecting the same product on an unrelated bill is not enough. Multiple bills and receipts against one order line share its net billed price; do not assume each bill maps exclusively to one picking.

  1. Find the original purchase-order-linked bill and check the product, billed quantity, unit price, discount, taxes, currency and date.
  2. If an edit is permitted, click Reset to Draft, correct the bill and click Confirm to post it again. Resetting alone does not recalculate the receipt’s stored value; reposting does.
  3. If the posted bill must remain unchanged, create the appropriate linked credit and replacement bill as described below.
  4. Refresh the receipt movement’s Value and read its explanation again. Check the product’s Total Value separately, especially if some goods have already left stock or standard cost is used.
  5. Recheck the accounting closing. A corrected bill does not rewrite an already posted closing entry; accounting must decide whether another adjustment is needed.

For example, 10 units received at €10.00 initially have a receipt value of €100.00. A posted linked bill for 10 units at €12.00 changes the receipt value to €120.00. Correcting and reposting that bill at €11.00 changes it to €110.00, unless a manual override applies.

A credit note changes the payable and can recalculate linked receipts, but does not move physical stock. Do not validate a return for a price correction when the goods remain with you. For goods actually sent back, follow supplier returns.

Full credit and corrected replacement bill

Section titled “Full credit and corrected replacement bill”

Assume 10 units were received and billed at €12.00, but the agreed price is €10.00. The required net credit is €20.00 excluding tax, and 10 units must remain billed.

  1. On the original bill, click Credit Note and enter the reason and the accountant-approved correction date. For an immediate correction, use today or an allowed past date; a future date schedules the reversal instead.
  2. Where a full reversal and replacement are appropriate, choose Reverse and Create Invoice. With a nonfuture date, this posts and reconciles the reversal and opens a draft replacement bill. Verify that the credit is posted before continuing; a scheduled draft credit does not yet correct the receipt valuation.
  3. Keep 10 units on the replacement bill and change the unit price to €10.00. Preserve the original purchase-order line links and verify taxes and currency.
  4. Click Confirm to post the replacement. Check the resulting net payable and the purchase order’s billed quantity, then inspect the receipt value again.

The net result is 10 units billed for €100.00, a €20.00 reduction in the untaxed payable, and no physical stock return. A full reversal temporarily removes the billed pricing; review the final result after the replacement is posted.

A single credit for only the price difference

Section titled “A single credit for only the price difference”

Odoo’s receipt valuation subtracts both the credited amount and the credited invoice quantity. A simple credit for 10 units × €2.00 can reduce the net billed quantity to zero, causing valuation to fall back to the purchase-order price instead of the intended €100.00. A separate discount or service product does not automatically update the original product’s receipt either. A zero-quantity line with an ordinary unit price has a zero subtotal.

A single price-only credit can represent the correction with two lines on the same original product and purchase-order line:

Credit-note line Quantity Unit price Untaxed credit
Reverse the old price 10 €12.00 €120.00
Offset at the corrected price −10 €10.00 −€100.00
Net correction 0 €20.00

Both lines must retain the same original purchase-order line link, not only the same product. The net billed quantity then remains 10 and the net billed value becomes €100.00. Have accounting verify the links, taxes, currency and supplier document before posting. If your screen cannot retain or verify both links, use an approved full credit and replacement or ask for a supported price-correction workflow; do not post an unlinked approximation.

Use a manual valuation adjustment only when appropriate

Section titled “Use a manual valuation adjustment only when appropriate”

Correct the source bill first when its price is wrong. A manual receipt adjustment takes priority over calculated bill pricing, including later reposts, and therefore can prevent a bill correction from changing the receipt value.

For an approved valuation-only exception, select the incoming movement, open Actions > Adjust Valuation, enter New Value and a clear Description, and save only after review. New Value is the total value of the original incoming movement, not a per-unit price, a difference to add, or only the value of its remaining units. The stock still on hand is valued according to its costing method.

This adjustment changes stock valuation; it does not create a vendor credit, reduce the payable or correct the original bill. Recheck the stock report and accounting closing afterwards. For approved freight, customs and handling charges, follow landed-cost allocation instead.

See also Odoo 19 inventory valuation and credit notes and refunds.