Skip to main content

ERPNext how-to & fixes

ERPNext Stock Reconciliation: The Complete How-To (2026)

Set opening stock, adjust after a physical count or clear a wrong quantity: which Purpose to use, the CSV rules, valuation rate and common submit errors.

Updated 29 Oct 202610 min readBy ManojFirst published 27 Jul 2026

ERPNext Stock Reconciliation is how you tell the system what is actually on the shelf: to set opening stock at go-live, to correct the system after a physical count, or to clear a quantity that has gone wrong. It's a simple DocType that people get wrong in small, expensive ways: entering 0 where they meant blank, repeating an item-warehouse row, or leaving out the valuation rate. This guide covers the right path for each goal, the CSV rules that matter, and how to clear the errors it throws. It is one step of our complete guide to setting up ERPNext.

A clean stock reconciliation is the difference between an inventory you can trust and one you argue with every month-end. I lead ERPNext and Frappe programmes at MithTech, a team of Frappe specialists in Bengaluru. Setting opening stock correctly is one of the first things we do on every go-live.

What is Stock Reconciliation for?

Stock Reconciliation sets an absolute quantity (and optionally a valuation rate) for an Item in a Warehouse at a point in time. Unlike a Stock Entry, which records a movement of goods, a reconciliation states a fact: "as of this date, there are exactly this many units, worth this much." ERPNext then works out the difference from what the system thought it had and posts the adjustment. Per the official documentation, it's the tool for opening balances and for correcting system stock to a physical count.

Because it states an absolute number, two rules follow that catch people out: each Item-Warehouse combination may appear only once, and a blank field means "leave unchanged", not zero.

Which goal are you reconciling for?

The right Purpose and method depend on what you're doing. Pick your goal:

InteractivePurpose Picker

Select what you're trying to achieve to get the correct Purpose value and the method to use.

What are you trying to do with the reconciliation?

Opening stock at go-live

At go-live you need every item's starting quantity and value in the system. Do it with a single Stock Reconciliation, Purpose = Opening Stock, dated at your cut-off. This is far cleaner than dozens of backdated Stock Entries: one document, one posting, and no chain of Repost Item Valuation jobs the way backdated movements cause. The value difference goes to the Temporary Opening account, which you clear against your opening balances. If a repost does get stuck afterwards, our Repost Item Valuation guide covers clearing it.

Adjusting after a physical count

When a stock-take finds the shelf doesn't match the system, reconcile to the counted number, Purpose = Stock Reconciliation. ERPNext posts the difference to your Stock Adjustment account. Leave the valuation rate blank to keep the current rate; set it only if you intend to revalue.

What if it won't submit?

The errors are few and predictable. Pick the one you hit:

InteractiveSubmit-Error Decider

Select the error ERPNext throws on submit to get its cause and the fix.

Pick the error you hit on submit.

How do you do it: UI, CSV and tracked items?

Code recipeUI · CSV · Batch Recipes

The manual UI steps, the CSV template rules, and the extra care batch and serial items need.

The manual path for a handful of items.

text
1. Stock > Stock Reconciliation > New
2. Purpose:
     • "Opening Stock"          — first-time / go-live balances
     • "Stock Reconciliation"   — adjust to a physical count
3. Set Posting Date + Time (the cut-off the count is true as of)
4. Add rows: Item Code, Warehouse, Qty, Valuation Rate
5. Save > Submit
ERPNext posts the difference to the Stock Adjustment account
(Perpetual Inventory) and rewrites the affected Stock Ledger.
1

Open a new Stock Reconciliation and pick the Purpose

Stock > Stock Reconciliation > New. Choose Opening Stock for first-time balances or Stock Reconciliation for count adjustments.

2

Set the posting date and time

Enter the cut-off the counted quantities are true as of. It matters for valuation sequencing and for the backdating guard.

3

Enter items — once each, blank to keep

Add each Item Code and Warehouse a single time. Enter the actual quantity. Provide a valuation rate for anything introduced from zero; leave fields blank (never 0) to keep existing values.

4

Submit and verify

Submit. Under perpetual inventory the difference posts to the Difference Account (Stock Adjustment for a count). Re-open the item's Stock Balance to confirm the new quantity and value are what you counted.

Should you reconcile, or use another tool?

Use Stock ReconciliationUse something else
Setting opening stock at go-liveRecording a real receipt of goods → Purchase Receipt / Stock Entry
Correcting system stock to a physical countFixing a posting-sequence negative → re-date the inward entry
Clearing a wrong or negative batch quantityMoving stock between warehouses → Material Transfer Stock Entry
A one-off absolute correctionOngoing scrap / consumption → the relevant Stock Entry type

At a glance

Purpose
Starting balances at go-liveOpening StockTemporary Opening
Match the system to a physical countStock ReconciliationStock Adjustment
Rule for every rowOne row per Item + Warehouse; blank keeps the value, 0 sets zero
Item new from zeroEnter a valuation rate
Backdating (v15.80+)Blocked behind a later reconciliation

FAQ

+How do I set opening stock in ERPNext?

Create a single Stock Reconciliation with Purpose set to "Opening Stock", dated at your go-live cut-off, and enter each item's quantity and valuation rate once. This is cleaner than backdated Stock Entries and avoids triggering a chain of valuation reposts.

+What's the difference between Opening Stock and Stock Reconciliation purpose?

"Opening Stock" is for first-time balances, usually at go-live. "Stock Reconciliation" is for adjusting existing system stock to a physical count later on. Both set an absolute quantity. The practical difference is the Difference Account: opening stock goes to Temporary Opening (a balance-sheet account), a count adjustment to Stock Adjustment (an expense account).

+Why do I get a valuation rate mandatory error in Stock Reconciliation?

Because you're introducing a positive quantity for an item that had no existing stock, so ERPNext has no prior rate to reuse. Enter a valuation rate for that row. For rows you don't want to change, leave both quantity and rate blank rather than entering zero.

+Can I upload stock reconciliation in bulk via CSV?

Yes. Download the CSV template from a new Stock Reconciliation, enter Item Code and Warehouse exactly as they exist, and fill quantity and valuation rate. Leave a field blank to keep the current value; enter 0 only when you mean zero. No repeated Item + Warehouse rows.

+Why can't I submit a backdated Stock Reconciliation?

From v15.80, ERPNext blocks backdated stock entries when a later Stock Reconciliation already exists for the item, to protect the valuation sequence (PR #49549). Users have asked for it to be optional (#49861). Post the correction in the current period, or cancel and redo the later reconciliation if the order really must change.

+Does a Stock Reconciliation affect my accounts?

Under perpetual inventory, yes. ERPNext posts the value difference between the counted and system quantity to the Difference Account (Stock Adjustment, or Temporary Opening for opening stock), so your stock ledger and General Ledger move together. Under non-perpetual setups it adjusts stock quantities without the automatic GL posting.

+Does this work the same in ERPNext v14, v15 and v16?

The core Stock Reconciliation workflow is the same across v14, v15 and v16. The differences are in guards and batch and serial handling, for example the v15.80 backdating block and the Serial and Batch Bundle valuation fixes (#40168), so confirm the behaviour on your release for tracked items. The current releases are v16.53.0 and v15.124.2 (both 28 October 2026, per the frappe/erpnext releases page).

What is the bottom line?

Stock Reconciliation is one of the simplest DocTypes in ERPNext and one of the easiest to misuse. Remember the two rules (one row per Item-Warehouse, blank means unchanged), pick the right Purpose for the job, and reconcile in the current period where you can. Then your opening balances and count adjustments land cleanly, with the stock ledger and the books in step. Moving from another system? Opening stock is part of every data migration we run.

Your next step

Go-live opening stock or a messy count you don't trust?

See it live

Low stock reorders itself

Stock dips below minimum, suppliers quote in their portal, and the chosen one gets the order.

You end with a purchase order sent · 4 screens · about 6 min

No sign-up, no card, no account.

Next step · ERPNext how-to & fixes

Now see what an audit finds in yours

When the same problems keep coming back, tick what you see and get an audit of the ERPNext you have, then fixes in order of what costs you most.

Comments & ratings

No comments yet. Start a new discussion.

0

Manoj · Published on 27 July 2026

Worked with us? Leave a Google review

Questions about this? Talk to the team.

Book a 30-minute Google Meet, WhatsApp us, or send a message. The engineer who works on this replies.

Send us a message
Your details go to our team's CRM and are used only to reply.