diff --git a/docs/docs.user.stock.accounting_for_stock.md b/docs/docs.user.stock.accounting_for_stock.md
index 22fa7bd..bf91fe5 100644
--- a/docs/docs.user.stock.accounting_for_stock.md
+++ b/docs/docs.user.stock.accounting_for_stock.md
@@ -10,33 +10,33 @@
 
 ### **Auto / Perpetual Inventory**
 
-In this process, for each stock transactions system posts relevant accounting entries to sync stock balance and accounting balance. This is the default settings in ERPNext for new accounts.
+In this process, for each stock transactions, the system posts relevant accounting entries to sync stock balance and accounting balance. This is the default setting in ERPNext for new accounts.
 
-When you buy and receive items, those items are booked as the company’s assets (stock-in-hand / fixed-assets). When you sell and deliver those items, an expense (cost-of-goods-sold) equal to the buying cost of the items is booked. General Ledger entries are made after every stock transaction. This improves accuracy of Balance Sheet and Profit and Loss statement. And the value as per Stock Ledger always remains same with the relevant account balance.
+When you buy and receive items, those items are booked as the company’s assets (stock-in-hand / fixed-assets). When you sell and deliver those items, an expense (cost-of-goods-sold) equal to the buying cost of the items is booked. General Ledger entries are made after every stock transaction.  As a result, the value as per Stock Ledger always remains same with the relevant account balance. This improves accuracy of Balance Sheet and Profit and Loss statement.
 
 To check accounting entries for a particular stock transaction, please check [**examples**](docs.user.stock.perpetual_inventory.html)
 
 #### **Advantages**
 
-It will make it easier for you to maintain accuracy of company's stock-in-hand, fixed-assets and cost-of-goods-sold. Stock balances will always be synced with relevant account balances, so no more periodic manual entry to balance them.
+Perpetual Inventory system will make it easier for you to maintain accuracy of company's asset and expense values. Stock balances will always be synced with relevant account balances, so no more periodic manual entry has to be done to balance them.
 
-In case of new back-dated stock transactions or cancellation/amendment of an existing one, all the future Stock Ledger entries and GL Entries will recalculated for all related items.
-The same is applicable if any cost is added to submitted Purchase Receipt later through Landed Cost Wizard.
+In case of new back-dated stock transactions or cancellation/amendment of an existing transaction, all the future Stock Ledger entries and GL Entries will be recalculated for all items of that transaction.
+The same is applicable if any cost is added to the submitted Purchase Receipt, later through the Landed Cost Wizard.
 
->Note: Perpetual Inventory totally depends upon the item valuation rate. Hence, you have to be more careful entering valuation rate while making any incoming stock transaction like Purchase Receipt, Material Receipt or Manufacturing / Repack
+>Note: Perpetual Inventory totally depends upon the item valuation rate. Hence, you have to be more careful entering valuation rate while making any incoming stock transactions like Purchase Receipt, Material Receipt, or Manufacturing / Repack.
 
 -
 
 ### **Periodic Inventory**
 
-In this method, accounting entries are manually created periodically to sync stock balance and relevant account balance. The system does not create accounting entries automatically for assets, at the time of material purchases or sales.
+In this method, accounting entries are manually created periodically, to sync stock balance and relevant account balance. The system does not create accounting entries automatically for assets, at the time of material purchases or sales.
 
-In an accounting period, when you buy and receive items, an expense is booked in your accounting books. You sell and deliver some of these items.
+In an accounting period, when you buy and receive items, an expense is booked in your accounting system. You sell and deliver some of these items.
 
-At the end of an accounting period, the total value of items, that remain to be sold, need to be booked as the company’s assets, often known as stock-in-hand. 
+At the end of an accounting period, the total value of items to be sold, need to be booked as the company’s assets, often known as stock-in-hand. 
 
-The difference between the value of the items remaining to be sold and the previous period’s stock-in-hand can be positive or negative. If positive, this value is removed from expenses (cost-of-goods-sold) and is added to assets (stock-in-hand / fixed-assets). If negative, a reverse entry is passed. 
+The difference between the value of the items remaining to be sold and the previous period’s stock-in-hand value can be positive or negative. If positive, this value is removed from expenses (cost-of-goods-sold) and is added to assets (stock-in-hand / fixed-assets). If negative, a reverse entry is passed. 
 
 This complete process is called Periodic Inventory.
 
-If you are an existing user using Periodic Inventory and want to use Perpetual Inventory, check [**Migration From Periodic Inventory**](docs.user.stock.perpetual_inventory.html)
+If you are an existing user using Periodic Inventory and want to use Perpetual Inventory, you have to follow some steps to migrate. For details, check [**Migration From Periodic Inventory**](docs.user.stock.perpetual_inventory.html)
diff --git a/docs/docs.user.stock.perpetual_inventory.md b/docs/docs.user.stock.perpetual_inventory.md
index 2b6adc4..eb10326 100644
--- a/docs/docs.user.stock.perpetual_inventory.md
+++ b/docs/docs.user.stock.perpetual_inventory.md
@@ -4,7 +4,10 @@
 }
 ---
 
-In perpetual accounting, system creates accounting entries for each stock transactions. Hence, stock balance will always remains same as relevant account balance.
+In perpetual inventory, system creates accounting entries for each stock transactions, so that stock and account balance will always remain same. The account balance will be posted against their respective account heads for each Warehouse. On saving of a Warehouse, the system will automatically create an account head with the same name as warehouse. As account balance is maintained for each Warehouse, you should create Warehouses, based on the type of items (Current / Fixed Assets) it stores.
+
+At the time of items received in a particular warehouse, the balance of asset account (linked to that warehouse) will be increased. Similarly when you deliver some items from that warehouse, an expense will be booked and the asset account will be reduced, based on the valuation amount of those items.
+
 
 ## **Activation**
 
@@ -14,25 +17,12 @@
 	- Expenses Included In Valuation
 	- Cost Center
 	
-2. The system will create an account head for each warehouse. Enter "Create Account Under" (account group under which account will be created) in warehouse master, based on type of items it stores (Stores, Fixed Asset Warehouse, etc).
+2. In perpetual inventory, the system will maintain seperate account balance for each warehouse under separate account head. To create that account head, enter "Create Account Under" in Warehouse master.
 
-3. Go to Setup > Accounts Settings > check "Make Accounting Entry For Every Stock Movement"
-![Activation](img/accounting-for-stock-1.png)
+3. Activate Perpetual Inventory
+> Setup > Accounts Settings > Make Accounting Entry For Every Stock Movement
 
 
-## **Migration from Periodic Inventory**
-
-Migration from Periodic Inventory is not a one click settings, it involves some special steps. As Perpetual Inventory always maintain a sync between stock and account balance, it is not possible to enable it with existing Warehouse setup. You have to create a whole new set of Warehouses, each linked to relevant account. 
-
-Steps to be followed:
-
-- Nullify current stock-in-hand / fixed-asset account balance through Journal Voucher.
-- Create new warehouse for each existing warehouse
-- Follow Activation Step 1, 2 & 3
-- Create Stock Entry (Material Transfer) to transfer available stock from existing warehouse to new warehouse
-
->Note: System will not  post any accounting entries for existing stock transactions submitted prior to the activation of Perpetual Inventory as those old warehouses will not be linked to account.
-
 -
 
 ## **Example**
@@ -41,82 +31,82 @@
 
 #### Chart of Accounts
 
->- Assets (Dr)
->  - Current Assets
->    - Accounts Receivable
->      - Jane Doe
->    - Stock Assets
->      - Stores
->      - Finished Goods
->      - Work In Progress
->    - Tax Assets
->      - VAT
->  - Fixed Assets
->    - Fixed Asset Warehouse
->- Liabilities (Cr)
->  - Current Liabilities
->    - Accounts Payable
->      - East Wind Inc.
->    - Stock Liabilities
->      - Stock Received But Not Billed
->    - Tax Liabilities
->      - Service Tax
->- Income (Cr)
->  - Direct Income
->    - Sales Account
->- Expenses (Dr)
->  - Direct Expenses
->    - Stock Expenses
->      - Cost of Goods Sold
->      - Expenses Included In Valuation
->      - Stock Adjustment
->      - Shipping Charges
->      - Customs Duty
+- Assets (Dr)
+  - Current Assets
+    - Accounts Receivable
+      - Jane Doe
+    - Stock Assets
+      - Stores
+      - Finished Goods
+      - Work In Progress
+    - Tax Assets
+      - VAT
+  - Fixed Assets
+    - Fixed Asset Warehouse
+- Liabilities (Cr)
+  - Current Liabilities
+    - Accounts Payable
+      - East Wind Inc.
+    - Stock Liabilities
+      - Stock Received But Not Billed
+    - Tax Liabilities
+      - Service Tax
+- Income (Cr)
+  - Direct Income
+    - Sales Account
+- Expenses (Dr)
+  - Direct Expenses
+    - Stock Expenses
+      - Cost of Goods Sold
+      - Expenses Included In Valuation
+      - Stock Adjustment
+      - Shipping Charges
+      - Customs Duty
   
 #### Warehouse - Account Configuration
 
->- Stores
->- Work In Progress
->- Finished Goods
->- Fixed Asset Warehouse
+- Stores
+- Work In Progress
+- Finished Goods
+- Fixed Asset Warehouse
 
 ### **Purchase Receipt**
 
->Suppose you have purchased *10 quantity* of item "RM0001" at *$200* and *5 quantity* of item "Desktop" at **$100** from supplier "East Wind Inc". Following are the details of Purchase Receipt:
+Suppose you have purchased *10 nos* of item "RM0001" at *$200* and *5 nos* of item "Desktop" at **$100** from supplier "East Wind Inc". Following are the details of Purchase Receipt:
 
-><b>Supplier:</b> East Wind Inc.
+<b>Supplier:</b> East Wind Inc.
 
-><b>Items:</b>
-><table class="table table-bordered">
->	<thead>
->		<tr>
->			<th>Item</th><th>Warehouse</th><th>Qty</th>
->			<th>Rate</th><th>Amount</th><th>Valuation Amount</th>
->		</tr>
->	</thead>
->	<tbody>
->		<tr>
->			<td>RM0001</td><td>Stores</td><td>10</td><td>200</td><td>2000</td><td>2200</td>
->		</tr>
->		<tr>
->			<td>Desktop</td><td>Fixed Asset Warehouse</td>
->			<td>5</td><td>100</td><td>500</td><td>550</td>
->		</tr>
->	</tbody>
-></table>
+<b>Items:</b>
+<table class="table table-bordered">
+	<thead>
+		<tr>
+			<th>Item</th><th>Warehouse</th><th>Qty</th>
+			<th>Rate</th><th>Amount</th><th>Valuation Amount</th>
+		</tr>
+	</thead>
+	<tbody>
+		<tr>
+			<td>RM0001</td><td>Stores</td><td>10</td><td>200</td><td>2000</td><td>2200</td>
+		</tr>
+		<tr>
+			<td>Desktop</td><td>Fixed Asset Warehouse</td>
+			<td>5</td><td>100</td><td>500</td><td>550</td>
+		</tr>
+	</tbody>
+</table>
 	
->**Taxes:**
+**Taxes:**
 
-><table class="table table-bordered">
->	<thead>
->		<tr><th>Account</th><th>Amount</th><th>Category</th></tr>
->	</thead>
->	<tbody>
->		<tr><td>Shipping Charges</td><td>100</td><td>Total and Valuation</td></tr>
->		<tr><td>VAT</td><td>120</td><td>Total</td></tr>
->		<tr><td>Customs Duty</td><td>150</td><td>Valuation</td></tr>
->	</tbody>
-></table>
+<table class="table table-bordered">
+	<thead>
+		<tr><th>Account</th><th>Amount</th><th>Category</th></tr>
+	</thead>
+	<tbody>
+		<tr><td>Shipping Charges</td><td>100</td><td>Total and Valuation</td></tr>
+		<tr><td>VAT</td><td>120</td><td>Total</td></tr>
+		<tr><td>Customs Duty</td><td>150</td><td>Valuation</td></tr>
+	</tbody>
+</table>
 
 **Stock Ledger**
 
@@ -126,51 +116,51 @@
 
 ![pr_general_ledger](img/accounting-for-stock-3.png)
 
-As stock balance increases through Purchase Receipt, "Store" and "Fixed Asset Warehouse" accounts have been debited and a temporary account "Stock Receipt But Not Billed" account has been credited, to maintain double entry accounting system.
+As stock balance increases through Purchase Receipt, "Store" and "Fixed Asset Warehouse" accounts are debited and a temporary account "Stock Receipt But Not Billed" account is credited, to maintain double entry accounting system.
 
 
 --
 
 ### **Purchase Invoice**
 
->On receiving Bill from supplier, for the above Purchase Receipt, you will make Purchase Invoice for the same. The general ledger entries are as follows:
+On receiving Bill from supplier, for the above Purchase Receipt, you will make Purchase Invoice for the same. The general ledger entries are as follows:
 
 **General Ledger**
 
 ![pi_general_ledger](img/accounting-for-stock-4.png)
 
 
-Here "Stock Received But Not Billed" account has been debited and nullified the effect of Purchase Receipt. "Expenses Included In Valuation" account has been credited which ensures the valuation expense accounts are not booked (debited) twice (in Purchase Invoice and Delivery Note).
+Here "Stock Received But Not Billed" account is debited and nullified the effect of Purchase Receipt. "Expenses Included In Valuation" account has been credited which ensures the valuation expense accounts are not booked (debited) twice (in Purchase Invoice and Delivery Note).
 
 --
 
 ### **Delivery Note**
 
->Lets say, you have an order from "Jane Doe" to deliver 5 qty of item "RM0001" at $300. Following is the details of Delivery Note:
+Lets say, you have an order from "Jane Doe" to deliver 5 nos of item "RM0001" at $300. Following are the details of Delivery Note:
 
->**Customer:** Jane Doe
+**Customer:** Jane Doe
 
->**Items:**
-><table class="table table-bordered">
->	<thead>
->		<tr><th>Item</th><th>Warehouse</th><th>Qty</th><th>Rate</th><th>Amount</th></tr>
->	</thead>
->	<tbody>
->		<tr><td>RM0001</td><td>Stores</td><td>5</td><td>300</td><td>1500</td></tr>
->	</tbody>
-></table>
+**Items:**
+<table class="table table-bordered">
+	<thead>
+		<tr><th>Item</th><th>Warehouse</th><th>Qty</th><th>Rate</th><th>Amount</th></tr>
+	</thead>
+	<tbody>
+		<tr><td>RM0001</td><td>Stores</td><td>5</td><td>300</td><td>1500</td></tr>
+	</tbody>
+</table>
 	
->**Taxes:**
+**Taxes:**
 
-><table class="table table-bordered">
->	<thead>
->		<tr><th>Account</th><th>Amount</th></tr>
->	</thead>
->	<tbody>
->		<tr><td>Service Tax</td><td>150</td></tr>
->		<tr><td>VAT</td><td>100</td></tr>
->	</tbody>
-></table>
+<table class="table table-bordered">
+	<thead>
+		<tr><th>Account</th><th>Amount</th></tr>
+	</thead>
+	<tbody>
+		<tr><td>Service Tax</td><td>150</td></tr>
+		<tr><td>VAT</td><td>100</td></tr>
+	</tbody>
+</table>
 
 
 **Stock Ledger**
@@ -181,15 +171,23 @@
 
 ![dn_general_ledger](img/accounting-for-stock-6.png)
 
-As item has delivered from "Stores" warehouse, "Stores" account has been credited and equal amount will be debited to the expense account "Cost of Goods Sold". The debit/credit amount is equal to the total buying cost of the selling items. And buying cost is calculated based on valuation method (FIFO / Moving Average) or serial no cost for serialized items.
-
-In this eample, Buying cost of RM0001 = (2200/10)*5 = 1100
+As item is delivered from "Stores" warehouse, "Stores" account is credited and equal amount is debited to the expense account "Cost of Goods Sold". The debit/credit amount is equal to the total valuation amount (buying cost) of the selling items. And valuation amount is calculated based on your prefferred valuation method (FIFO / Moving Average) or actual cost of serialized items.
+<pre>
+	<code>
+In this example, we have considered valuation method as FIFO. 
+Valuation Rate 	= Purchase Rate + Charges Included in Valuation 
+				= 200 + (250 * (2000 / 2500) / 10) 
+				= 220
+Total Valuation Amount 	= 220 * 5 
+						= 1100
+	</code>
+</pre>
 
 --
 
 ### **Sales Invoice with Update Stock**
 
-> Suppose you do not want to make Delivery Note against the above order, you can make Sales Invoice directly with "Update Stock" options. The details of the Sales Invoice are same as above Delivery Note.
+Lets say, you did not make Delivery Note against the above order and instead you have made Sales Invoice directly, with "Update Stock" options.  The details of the Sales Invoice are same as the above Delivery Note.
 
 **Stock Ledger**
 
@@ -199,21 +197,21 @@
 
 ![si_general_ledger](img/accounting-for-stock-8.png)
 
-Here apart from normal account entries for invoice, "Stores" and "Cost of Goods Sold" accounts are also affected based on buying cost.
+Here, apart from normal account entries for invoice, "Stores" and "Cost of Goods Sold" accounts are also affected based on the valuation amount.
 
 --
 
 ### **Stock Entry (Material Receipt)**
 
->**Items:**
-><table class="table table-bordered">
->	<thead>
->		<tr><th>Item</th><th>Target Warehouse</th><th>Qty</th><th>Rate</th><th>Amount</th></tr>
->	</thead>
->	<tbody>
->		<tr><td>RM0001</td><td>Stores</td><td>50</td><td>220</td><td>11000</td></tr>
->	</tbody>
-></table>
+**Items:**
+<table class="table table-bordered">
+	<thead>
+		<tr><th>Item</th><th>Target Warehouse</th><th>Qty</th><th>Rate</th><th>Amount</th></tr>
+	</thead>
+	<tbody>
+		<tr><td>RM0001</td><td>Stores</td><td>50</td><td>220</td><td>11000</td></tr>
+	</tbody>
+</table>
 
 **Stock Ledger**
 
@@ -227,15 +225,15 @@
 
 ### **Stock Entry (Material Issue)**
 
->**Items:**
-><table class="table table-bordered">
->	<thead>
->		<tr><th>Item</th><th>Source Warehouse</th><th>Qty</th><th>Rate</th><th>Amount</th></tr>
->	</thead>
->	<tbody>
->		<tr><td>RM0001</td><td>Stores</td><td>10</td><td>220</td><td>2200</td></tr>
->	</tbody>
-></table>
+**Items:**
+<table class="table table-bordered">
+	<thead>
+		<tr><th>Item</th><th>Source Warehouse</th><th>Qty</th><th>Rate</th><th>Amount</th></tr>
+	</thead>
+	<tbody>
+		<tr><td>RM0001</td><td>Stores</td><td>10</td><td>220</td><td>2200</td></tr>
+	</tbody>
+</table>
 
 **Stock Ledger**
 
@@ -249,17 +247,17 @@
 
 ### **Stock Entry (Material Transfer)**
 
->**Items:**
-><table class="table table-bordered">
->	<thead>
->		<tr><th>Item</th><th>Source Warehouse</th><th>Target Warehouse</th>
->		<th>Qty</th><th>Rate</th><th>Amount</th></tr>
->	</thead>
->	<tbody>
->		<tr><td>RM0001</td><td>Stores</td><td>Work In Progress</td>
->		<td>10</td><td>220</td><td>2200</td></tr>
->	</tbody>
-></table>
+**Items:**
+<table class="table table-bordered">
+	<thead>
+		<tr><th>Item</th><th>Source Warehouse</th><th>Target Warehouse</th>
+		<th>Qty</th><th>Rate</th><th>Amount</th></tr>
+	</thead>
+	<tbody>
+		<tr><td>RM0001</td><td>Stores</td><td>Work In Progress</td>
+		<td>10</td><td>220</td><td>2200</td></tr>
+	</tbody>
+</table>
 
 **Stock Ledger**
 
@@ -267,49 +265,49 @@
 
 **General Ledger**
 
-No General Ledger Entry
+![mtn_general_ledger](img/accounting-for-stock-14.png)
 
 --
 
 ### **Stock Entry (Sales Return - Sales Invoice booked)**
 
->**Items:**
-><table class="table table-bordered">
->	<thead>
->		<tr><th>Item</th><th>Target Warehouse</th><th>Qty</th><th>Rate</th><th>Amount</th></tr>
->	</thead>
->	<tbody>
->		<tr><td>RM0001</td><td>Stores</td><td>2</td><td>200</td><td>400</td></tr>
->	</tbody>
-></table>
+**Items:**
+<table class="table table-bordered">
+	<thead>
+		<tr><th>Item</th><th>Target Warehouse</th><th>Qty</th><th>Rate</th><th>Amount</th></tr>
+	</thead>
+	<tbody>
+		<tr><td>RM0001</td><td>Stores</td><td>2</td><td>200</td><td>400</td></tr>
+	</tbody>
+</table>
 
 **Stock Ledger**
 
-![sret_stock_ledger](img/accounting-for-stock-14.png)
+![sret_stock_ledger](img/accounting-for-stock-15.png)
 
 **General Ledger**
 
-![sret_general_ledger](img/accounting-for-stock-15.png)
+![sret_general_ledger](img/accounting-for-stock-16.png)
 
 
 --
 
 ### **Stock Entry (Purchase Return)**
 
->**Items:**
-><table class="table table-bordered">
->	<thead>
->		<tr><th>Item</th><th>Source Warehouse</th><th>Qty</th><th>Rate</th><th>Amount</th></tr>
->	</thead>
->	<tbody>
->		<tr><td>RM0001</td><td>Stores</td><td>4</td><td>220</td><td>880</td></tr>
->	</tbody>
-></table>
+**Items:**
+<table class="table table-bordered">
+	<thead>
+		<tr><th>Item</th><th>Source Warehouse</th><th>Qty</th><th>Rate</th><th>Amount</th></tr>
+	</thead>
+	<tbody>
+		<tr><td>RM0001</td><td>Stores</td><td>4</td><td>220</td><td>880</td></tr>
+	</tbody>
+</table>
 
 **Stock Ledger**
 
-![pret_stock_ledger](img/accounting-for-stock-16.png)
+![pret_stock_ledger](img/accounting-for-stock-17.png)
 
 **General Ledger**
 
-![pret_general_ledger](img/accounting-for-stock-17.png)
+![pret_general_ledger](img/accounting-for-stock-18.png)
diff --git a/docs/user/stock/docs.user.stock.periodic_to_perpetual.md b/docs/user/stock/docs.user.stock.periodic_to_perpetual.md
new file mode 100644
index 0000000..258b4db
--- /dev/null
+++ b/docs/user/stock/docs.user.stock.periodic_to_perpetual.md
@@ -0,0 +1,31 @@
+---
+{
+	"_label": "Migration from Periodic Inventory"
+}
+---
+
+Migration from Periodic Inventory is not a one click setting, it involves some special steps. As Perpetual Inventory always maintains a sync between stock and account balance, it is not possible to enable it with existing Warehouse setup. You have to create a whole new set of Warehouses, each linked to relevant account. 
+
+Steps:
+
+- Nullify the balance of account heads (stock-in-hand / fixed-asset) which you are using to maintain available stock value, through a Journal Voucher.
+
+- As existing warehouses are linked to stock transactions which does not have corresponding accounting entries, those warehouses can not be used for perpetual inventory. You have to create new warehouses for the future stock transactions which will be linked to their respective accounts. While creating new warehouses, select an account group under which the child account for the warehouse will be created.
+
+- Setup the following default accounts for each Company 
+	- Stock Received But Not Billed
+	- Stock Adjustment Account
+	- Expenses Included In Valuation
+	- Cost Center
+
+- Activate Perpetual Inventory
+> Setup > Accounts Settings > Make Accounting Entry For Every Stock Movement
+
+![Activation](img/accounting-for-stock-1.png)
+<br><br>
+
+- Create Stock Entry (Material Transfer) to transfer available stock from existing warehouse to new warehouse. As stock will be available in the new warehouse, you should select the new warehouse for all the future transactions.
+
+System will not  post any accounting entries for existing stock transactions submitted prior to the activation of Perpetual Inventory as those old warehouses will not be linked to any account. If you create any new transaction or modify/amend existing transactions, with old warehouse, there will be no corresponding accounting entries.  You have to manually sync stock and account balance through Journal Voucher.
+
+> Note: If you are already using old Perpetual Inventory system, it will be deactivated automatically. You need to follow the above steps to reactivate it.
\ No newline at end of file
diff --git a/docs/user/stock/docs.user.stock.warehouse.md b/docs/user/stock/docs.user.stock.warehouse.md
index dd8273a..38a559e 100644
--- a/docs/user/stock/docs.user.stock.warehouse.md
+++ b/docs/user/stock/docs.user.stock.warehouse.md
@@ -18,13 +18,12 @@
 
 
 
-In ERPNext, every different company can have a separate Warehouse. Every Warehouse will belong to a specific company. User can get company wise accurate stock balance. The Warehouses are saved with their respective company’s abbreviations. This facilitates in identifying which Warehouse belongs to which company, at a glance.
+In ERPNext, every Warehouse must belong to a specific company, to maintain company wise stock balance. The Warehouses are saved with their respective company’s abbreviations. This facilitates in identifying which Warehouse belongs to which company, at a glance.
 
 You can include user restrictions for these Warehouses. In case you do not wish a particular user to operate on a particular Warehouse, you can refrain the user from accessing that Warehouse.
 
 ### Merge Warehouse
 
-In day to day transactions, if duplicate entries are done by mistake resulting in duplicate Warehouse, these mistakes can be rectified. Duplicate records can be merged into a single Warehouse. Enter the place where you want to keep all the warehouse records. Click on the Merge button. Once this transaction is done, delete the empty Warehouse.
+In day to day transactions, duplicate entries are done by mistake, resulting in duplicate Warehouses. Duplicate records can be merged into a single Warehouse. Enter the correct Warehouse and click on the Merge button. The system will replace all the links of wrong Warehouse with the correct Warehouse, in all transactions. Also, the available quantity (actual qty, reserved qty, ordered qty etc) of all items in the duplicate warehouse will be transferred to the correct warehouse. Once merging is done, delete the duplicate Warehouse.
 
-ERPNext system maintains stock balance for every distinct combination of Item and Warehouse. Thus you can get stock balance for any specific Item in a particular Warehouse on any particular date.
-
+> Note: ERPNext system maintains stock balance for every distinct combination of Item and Warehouse. Thus you can get stock balance for any specific Item in a particular Warehouse on any particular date.
\ No newline at end of file
