diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.json b/erpnext/accounts/doctype/payment_entry/payment_entry.json
index 5f14c2f..4e99293 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.json
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.json
@@ -228,7 +228,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
-   "in_list_view": 0, 
+   "in_list_view": 1, 
    "label": "Mode of Payment", 
    "length": 0, 
    "no_copy": 0, 
@@ -1349,8 +1349,8 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-07-11 06:25:00.248907", 
- "modified_by": "Administrator", 
+ "modified": "2016-07-11 08:06:33.121527", 
+ "modified_by": "NuranVerkleij@example.com", 
  "module": "Accounts", 
  "name": "Payment Entry", 
  "name_case": "", 
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry_list.js b/erpnext/accounts/doctype/payment_entry/payment_entry_list.js
new file mode 100644
index 0000000..81230d0
--- /dev/null
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry_list.js
@@ -0,0 +1,6 @@
+frappe.listview_settings['Payment Entry'] = {
+	add_fields: ["payment_type"],
+	get_indicator: function(doc) {
+		return [__(doc.payment_type), (doc.docstatus==0 ? 'red' : 'blue'), 'status=' + doc.payment_type]
+	}
+}
diff --git a/erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json b/erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json
index 05ab751..082ab04 100644
--- a/erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json
+++ b/erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json
@@ -147,7 +147,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 1, 
-   "label": "Outstanding Amount", 
+   "label": "Outstanding", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -172,7 +172,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Allocated Amount", 
+   "label": "Allocated", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -222,7 +222,7 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-07-11 03:28:03.493863", 
+ "modified": "2016-07-11 07:55:04.131655", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Payment Entry Reference", 
diff --git a/erpnext/demo/demo.py b/erpnext/demo/demo.py
index 9aeea3a..ab361e9 100644
--- a/erpnext/demo/demo.py
+++ b/erpnext/demo/demo.py
@@ -6,6 +6,23 @@
 from erpnext.demo.setup_data import setup_data
 from erpnext.demo.user import hr, sales, purchase, manufacturing, stock
 
+"""
+Make a demo
+
+1. Start with a fresh account
+
+bench --site demo.erpnext.dev reinstall
+
+2. Install Demo
+
+bench --site demo.erpnext.dev execute erpnext.demo.demo.make
+
+3. If Demo breaks, to continue
+
+bench --site demo.erpnext.dev execute erpnext.demo.demo.simulate
+
+"""
+
 def make(domain='Manufacturing'):
 	frappe.flags.domain = domain
 	setup_data()
diff --git a/erpnext/demo/setup_data.py b/erpnext/demo/setup_data.py
index eb80254..1033f7d 100644
--- a/erpnext/demo/setup_data.py
+++ b/erpnext/demo/setup_data.py
@@ -328,3 +328,8 @@
 		user.add_roles('Manufacturing User', 'Stock User', 'Purchase User', 'Accounts User')
 		frappe.db.set_global('demo_stock_user', user.name)
 
+	if not frappe.db.get_global('demo_accounts_user'):
+		user = frappe.get_doc('User', 'LeonAbdulov@example.com')
+		user.add_roles('Accounts User', 'Accounts Manager')
+		frappe.db.set_global('demo_accounts_user', user.name)
+
diff --git a/erpnext/demo/user/accounts.py b/erpnext/demo/user/accounts.py
new file mode 100644
index 0000000..4a514ef
--- /dev/null
+++ b/erpnext/demo/user/accounts.py
@@ -0,0 +1,68 @@
+
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+
+import frappe
+import random
+from frappe.utils import random_string
+from frappe.desk import query_report
+
+def work():
+	frappe.set_user(frappe.db.get_global('demo_accounts_user'))
+
+	if random.random() < 0.5:
+		from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice
+		report = "Ordered Items to be Billed"
+		for so in list(set([r[0] for r in
+			query_report.run(report)["result"]
+				if r[0]!="Total"]))[:random.randint(1, 5)]:
+			si = frappe.get_doc(make_sales_invoice(so))
+			si.posting_date = frappe.flags.current_date
+			for d in si.get("items"):
+				if not d.income_account:
+					d.income_account = "Sales - {}".format(frappe.db.get_value('Company', si.company, 'abbr'))
+			si.insert()
+			si.submit()
+			frappe.db.commit()
+
+	if random.random() < 0.5:
+		from erpnext.stock.doctype.purchase_receipt.purchase_receipt import make_purchase_invoice
+		report = "Received Items to be Billed"
+		for pr in list(set([r[0] for r in query_report.run(report)["result"]
+			if r[0]!="Total"]))[:random.randint(1, 5)]:
+			pi = frappe.get_doc(make_purchase_invoice(pr))
+			pi.posting_date = frappe.flags.current_date
+			pi.bill_no = random_string(6)
+			pi.insert()
+			pi.submit()
+			frappe.db.commit()
+
+	from erpnext.accounts.doctype.journal_entry.journal_entry import get_payment_entry_against_invoice
+
+	if random.random() < 0.5:
+		report = "Accounts Receivable"
+		for si in list(set([r[3] for r in query_report.run(report,
+		{"report_date": frappe.flags.current_date })["result"]
+		if r[2]=="Sales Invoice"]))[:random.randint(1, 5)]:
+			jv = frappe.get_doc(get_payment_entry_against_invoice("Sales Invoice", si))
+			jv.posting_date = frappe.flags.current_date
+			jv.cheque_no = random_string(6)
+			jv.cheque_date = frappe.flags.current_date
+			jv.insert()
+			jv.submit()
+			frappe.db.commit()
+
+	if random.random() < 0.5:
+		report = "Accounts Payable"
+		for pi in list(set([r[3] for r in query_report.run(report,
+			{"report_date": frappe.flags.current_date })["result"]
+				if r[2]=="Purchase Invoice"]))[:random.randint(1, 5)]:
+			jv = frappe.get_doc(get_payment_entry_against_invoice("Purchase Invoice", pi))
+			jv.posting_date = frappe.flags.current_date
+			jv.cheque_no = random_string(6)
+			jv.cheque_date = frappe.flags.current_date
+			jv.insert()
+			jv.submit()
+			frappe.db.commit()
