diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
index aca83da..a02e591 100644
--- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
@@ -9,6 +9,7 @@
  "docstatus": 0, 
  "doctype": "DocType", 
  "document_type": "Other", 
+ "editable_grid": 1, 
  "fields": [
   {
    "allow_on_submit": 0, 
@@ -115,31 +116,6 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "fieldname": "allow_payment_entry_via_journal_entry", 
-   "fieldtype": "Check", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Allow Payment Entry via Journal Entry", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
    "description": "Role that is allowed to submit transactions that exceed credit limits set.", 
    "fieldname": "credit_controller", 
    "fieldtype": "Link", 
@@ -199,7 +175,7 @@
  "issingle": 1, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-06-27 15:18:28.566087", 
+ "modified": "2016-07-14 14:32:06.056888", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Accounts Settings", 
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index f7d2272..5ed14d5 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -36,6 +36,7 @@
 	def validate(self):
 		self.setup_party_account_field()
 		self.set_missing_values()
+		self.validate_payment_type()
 		self.validate_party_details()
 		self.validate_bank_accounts()
 		self.set_exchange_rate()
@@ -108,6 +109,10 @@
 				for field, value in ref_details.items():
 					if not d.get(field):
 						d.set(field, value)
+						
+	def validate_payment_type(self):
+		if self.payment_type not in ("Receive", "Pay", "Internal Transfer"):
+			frappe.throw(_("Payment Type must be one of Receive, Pay and Internal Transfer"))
 	
 	def validate_party_details(self):
 		if self.party:
diff --git a/erpnext/accounts/doctype/payment_tool/__init__.py b/erpnext/accounts/doctype/payment_tool/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/accounts/doctype/payment_tool/__init__.py
+++ /dev/null
diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.js b/erpnext/accounts/doctype/payment_tool/payment_tool.js
deleted file mode 100644
index 8d8e0ce..0000000
--- a/erpnext/accounts/doctype/payment_tool/payment_tool.js
+++ /dev/null
@@ -1,274 +0,0 @@
-// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-// For license information, please see license.txt
-
-frappe.provide("erpnext.payment_tool");
-
-// Help content
-frappe.ui.form.on("Payment Tool", "onload", function(frm) {
-	frm.set_value("make_jv_help",
-		+ __("Note: If payment is not made against any reference, make Journal Entry manually."));
-
-	frm.set_query("party_type", function() {
-		return {
-			filters: {"name": ["in", ["Customer", "Supplier"]]}
-		};
-	});
-
-	frm.set_query("payment_account", function() {
-		return {
-			filters: {
-				"account_type": ["in", ["Bank", "Cash"]],
-				"is_group": 0,
-				"company": frm.doc.company
-			}
-		}
-	});
-
-	frm.set_query("against_voucher_type", "vouchers", function() {
-		if (frm.doc.party_type=="Customer") {
-			var doctypes = ["Sales Order", "Sales Invoice", "Journal Entry"];
-		} else {
-			var doctypes = ["Purchase Order", "Purchase Invoice", "Journal Entry"];
-		}
-
-		return {
-			filters: { "name": ["in", doctypes] }
-		};
-	});
-});
-
-frappe.ui.form.on("Payment Tool", "refresh", function(frm) {
-	frm.disable_save();
-	frappe.ui.form.trigger("Payment Tool", "party_type");
-});
-
-frappe.ui.form.on("Payment Tool", "party_type", function(frm) {
-	frm.set_value("received_or_paid", frm.doc.party_type=="Customer" ? "Received" : "Paid");
-});
-
-frappe.ui.form.on("Payment Tool", "party", function(frm) {
-	if(frm.doc.party_type && frm.doc.party) {
-		return frappe.call({
-			method: "erpnext.accounts.party.get_party_account",
-			args: {
-				company: frm.doc.company,
-				party_type: frm.doc.party_type,
-				party: frm.doc.party
-			},
-			callback: function(r) {
-				if(!r.exc && r.message) {
-					frm.set_value("party_account", r.message);
-					erpnext.payment_tool.check_mandatory_to_set_button(frm);
-				}
-			}
-		});
-	}
-})
-
-frappe.ui.form.on("Payment Tool", "party_account", function(frm) {
-	if(frm.doc.party_account) {
-		frm.call({
-			method: "frappe.client.get_value",
-			args: {
-				doctype: "Account",
-				fieldname: "account_currency",
-				filters: { name: frm.doc.party_account },
-			},
-			callback: function(r, rt) {
-				if(r.message) {
-					frm.set_value("party_account_currency", r.message.account_currency);
-					erpnext.payment_tool.check_mandatory_to_set_button(frm);
-				}
-			}
-		});
-	}
-})
-
-frappe.ui.form.on("Payment Tool", "company", function(frm) {
-	erpnext.payment_tool.check_mandatory_to_set_button(frm);
-});
-
-frappe.ui.form.on("Payment Tool", "received_or_paid", function(frm) {
-	erpnext.payment_tool.check_mandatory_to_set_button(frm);
-});
-
-// Fetch bank/cash account based on payment mode
-frappe.ui.form.on("Payment Tool", "payment_mode", function(frm) {
-	return  frappe.call({
-		method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.get_bank_cash_account",
-		args: {
-				"mode_of_payment": frm.doc.payment_mode,
-				"company": frm.doc.company
-		},
-		callback: function(r, rt) {
-			if(r.message) {
-				cur_frm.set_value("payment_account", r.message['account']);
-			}
-		}
-	});
-});
-
-
-erpnext.payment_tool.check_mandatory_to_set_button = function(frm) {
-	if (frm.doc.company && frm.doc.party_type && frm.doc.party && frm.doc.received_or_paid && frm.doc.party_account) {
-		frm.fields_dict.get_outstanding_vouchers.$input.addClass("btn-primary");
-	}
-}
-
-// Get outstanding vouchers
-frappe.ui.form.on("Payment Tool", "get_outstanding_vouchers", function(frm) {
-	erpnext.payment_tool.check_mandatory_to_fetch(frm.doc);
-
-	frm.set_value("vouchers", []);
-
-	return  frappe.call({
-		method: 'erpnext.accounts.doctype.payment_tool.payment_tool.get_outstanding_vouchers',
-		args: {
-			args: {
-				"company": frm.doc.company,
-				"party_type": frm.doc.party_type,
-				"received_or_paid": frm.doc.received_or_paid,
-				"party": frm.doc.party,
-				"party_account": frm.doc.party_account
-			}
-		},
-		callback: function(r, rt) {
-			if(r.message) {
-				frm.fields_dict.get_outstanding_vouchers.$input.removeClass("btn-primary");
-				frm.fields_dict.make_journal_entry.$input.addClass("btn-primary");
-
-				frm.clear_table("vouchers");
-
-				$.each(r.message, function(i, d) {
-					var c = frm.add_child("vouchers");
-					c.against_voucher_type = d.voucher_type;
-					c.against_voucher_no = d.voucher_no;
-					c.total_amount = d.invoice_amount;
-					c.outstanding_amount = d.outstanding_amount;
-
-					if (in_list(['Sales Invoice', 'Purchase Invoice'], d.voucher_type)){
-						c.due_date = d.due_date
-					}
-
-					if (frm.doc.set_payment_amount) {
-						c.payment_amount = d.outstanding_amount;
-					}
-				});
-			}
-			refresh_field("vouchers");
-			frm.layout.refresh_sections();
-			erpnext.payment_tool.set_total_payment_amount(frm);
-		}
-	});
-});
-
-// validate against_voucher_type
-frappe.ui.form.on("Payment Tool Detail", "against_voucher_type", function(frm, cdt, cdn) {
-	var row = frappe.model.get_doc(cdt, cdn);
-	erpnext.payment_tool.validate_against_voucher(frm, row);
-});
-
-erpnext.payment_tool.validate_against_voucher = function(frm, row) {
-	var _validate = function(i, row) {
-		if (!row.against_voucher_type) {
-			return;
-		}
-
-		if(frm.doc.party_type=="Customer"
-			&& !in_list(["Sales Order", "Sales Invoice", "Journal Entry"], row.against_voucher_type)) {
-				frappe.model.set_value(row.doctype, row.name, "against_voucher_type", "");
-				frappe.msgprint(__("Against Voucher Type must be one of Sales Order, Sales Invoice or Journal Entry"));
-				return false;
-			}
-
-		if(frm.doc.party_type=="Supplier"
-			&& !in_list(["Purchase Order", "Purchase Invoice", "Journal Entry"], row.against_voucher_type)) {
-				frappe.model.set_value(row.doctype, row.name, "against_voucher_type", "");
-				frappe.msgprint(__("Against Voucher Type must be one of Purchase Order, Purchase Invoice or Journal Entry"));
-				return false;
-			}
-
-	}
-
-	if (row) {
-		_validate(0, row);
-	} else {
-		$.each(frm.doc.vouchers || [], _validate);
-	}
-
-}
-
-// validate against_voucher_type
-frappe.ui.form.on("Payment Tool Detail", "against_voucher_no", function(frm, cdt, cdn) {
-	var row = locals[cdt][cdn];
-	if (!row.against_voucher_no) {
-		return;
-	}
-
-	frappe.call({
-		method: 'erpnext.accounts.doctype.payment_tool.payment_tool.get_against_voucher_details',
-		args: {
-			"against_voucher_type": row.against_voucher_type,
-			"against_voucher_no": row.against_voucher_no,
-			"party_account": frm.doc.party_account,
-			"company": frm.doc.company
-		},
-		callback: function(r) {
-			if(!r.exc) {
-				$.each(r.message, function(k, v) {
-					frappe.model.set_value(cdt, cdn, k, v);
-				});
-
-				frappe.model.set_value(cdt, cdn, "payment_amount", r.message.outstanding_amount);
-			}
-		}
-	});
-});
-
-// Set total payment amount
-frappe.ui.form.on("Payment Tool Detail", "payment_amount", function(frm) {
-	erpnext.payment_tool.set_total_payment_amount(frm);
-});
-
-frappe.ui.form.on("Payment Tool Detail", "vouchers_remove", function(frm) {
-	erpnext.payment_tool.set_total_payment_amount(frm);
-});
-
-erpnext.payment_tool.set_total_payment_amount = function(frm) {
-	var total_amount = 0.00;
-	$.each(frm.doc.vouchers || [], function(i, row) {
-		if (row.payment_amount && (row.payment_amount <= row.outstanding_amount)) {
-			total_amount = total_amount + row.payment_amount;
-		} else {
-			if(row.payment_amount < 0)
-				msgprint(__("Row {0}: Payment amount can not be negative", [row.idx]));
-			else if(row.payment_amount > row.outstanding_amount)
-				msgprint(__("Row {0}: Payment Amount cannot be greater than Outstanding Amount", [__(row.idx)]));
-
-			frappe.model.set_value(row.doctype, row.name, "payment_amount", 0.0);
-		}
-	});
-	frm.set_value("total_payment_amount", total_amount);
-}
-
-
-// Make Journal Entry
-frappe.ui.form.on("Payment Tool", "make_journal_entry", function(frm) {
-	erpnext.payment_tool.check_mandatory_to_fetch(frm.doc);
-
-	return  frappe.call({
-		method: 'make_journal_entry',
-		doc: frm.doc,
-		callback: function(r) {
-			frm.fields_dict.make_journal_entry.$input.addClass("btn-primary");
-			var doclist = frappe.model.sync(r.message);
-			frappe.set_route("Form", doclist[0].doctype, doclist[0].name);
-		}
-	});
-});
-
-erpnext.payment_tool.check_mandatory_to_fetch = function(doc) {
-	$.each(["Company", "Party Type", "Party", "Received or Paid"], function(i, field) {
-		if(!doc[frappe.model.scrub(field)]) frappe.throw(__("Please select {0} first", [field]));
-	});
-}
diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.json b/erpnext/accounts/doctype/payment_tool/payment_tool.json
deleted file mode 100644
index a99054f..0000000
--- a/erpnext/accounts/doctype/payment_tool/payment_tool.json
+++ /dev/null
@@ -1,551 +0,0 @@
-{
- "allow_copy": 0, 
- "allow_import": 0, 
- "allow_rename": 0, 
- "creation": "2014-07-23 15:12:27.746665", 
- "custom": 0, 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "", 
- "fields": [
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "sec_break1", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Find Invoices to Match", 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "company", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Company", 
-   "no_copy": 0, 
-   "options": "Company", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "default": "Customer", 
-   "fieldname": "party_type", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Party Type", 
-   "no_copy": 0, 
-   "options": "DocType", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "received_or_paid", 
-   "fieldtype": "Select", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Received Or Paid", 
-   "no_copy": 0, 
-   "options": "Received\nPaid", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "col_break1", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "", 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "depends_on": "", 
-   "fieldname": "party", 
-   "fieldtype": "Dynamic Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Party", 
-   "no_copy": 0, 
-   "options": "party_type", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "party_account", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Party Account", 
-   "no_copy": 1, 
-   "options": "Account", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "party_account_currency", 
-   "fieldtype": "Link", 
-   "hidden": 1, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Party Account Currency", 
-   "no_copy": 1, 
-   "options": "Currency", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 1, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "set_payment_amount", 
-   "fieldtype": "Check", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Set Payment Amount = Outstanding Amount", 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "get_outstanding_vouchers", 
-   "fieldtype": "Button", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Get Outstanding Vouchers", 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "depends_on": "eval:(doc.company && doc.party_type && doc.received_or_paid && doc.party_account)", 
-   "fieldname": "sec_break3", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Set Matching Amounts", 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "vouchers", 
-   "fieldtype": "Table", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Against Vouchers", 
-   "no_copy": 0, 
-   "options": "Payment Tool Detail", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "depends_on": "eval:(doc.company && doc.party_type && doc.received_or_paid && doc.party_account)", 
-   "fieldname": "section_break_19", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Make Payment Entry", 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "payment_mode", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Payment Mode", 
-   "no_copy": 0, 
-   "options": "Mode of Payment", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "payment_account", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Payment Account", 
-   "no_copy": 0, 
-   "options": "Account", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "total_payment_amount", 
-   "fieldtype": "Currency", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Total Payment Amount", 
-   "no_copy": 0, 
-   "options": "party_account_currency", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 1, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "data_22", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "reference_date", 
-   "fieldtype": "Date", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Reference Date", 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "reference_no", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Reference No", 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "make_journal_entry", 
-   "fieldtype": "Button", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Make Journal Entry", 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "depends_on": "eval:(doc.company && doc.party_type && doc.received_or_paid && doc.party_account)", 
-   "fieldname": "section_break_21", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "make_jv_help", 
-   "fieldtype": "Small Text", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "read_only": 1, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }
- ], 
- "hide_heading": 0, 
- "hide_toolbar": 1, 
- "icon": "icon-magic", 
- "in_create": 0, 
- "in_dialog": 0, 
- "is_submittable": 0, 
- "issingle": 1, 
- "istable": 0, 
- "modified": "2015-10-01 09:43:24.199025", 
- "modified_by": "Administrator", 
- "module": "Accounts", 
- "name": "Payment Tool", 
- "name_case": "", 
- "owner": "Administrator", 
- "permissions": [
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 0, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "permlevel": 0, 
-   "print": 0, 
-   "read": 1, 
-   "report": 0, 
-   "role": "Accounts Manager", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 0, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "permlevel": 0, 
-   "print": 0, 
-   "read": 1, 
-   "report": 0, 
-   "role": "Accounts User", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }
- ], 
- "read_only": 0, 
- "read_only_onload": 0, 
- "sort_field": "modified", 
- "sort_order": "DESC"
-}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.py b/erpnext/accounts/doctype/payment_tool/payment_tool.py
deleted file mode 100644
index 5c5b393..0000000
--- a/erpnext/accounts/doctype/payment_tool/payment_tool.py
+++ /dev/null
@@ -1,170 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and contributors
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe import _, scrub
-from frappe.utils import flt
-from frappe.model.document import Document
-import json
-from erpnext.accounts.utils import get_account_currency
-from erpnext.accounts.doctype.journal_entry.journal_entry import get_exchange_rate
-
-class PaymentTool(Document):
-	def make_journal_entry(self):
-		from erpnext.accounts.utils import get_balance_on
-		total_payment_amount = 0.00
-
-		jv = frappe.new_doc('Journal Entry')
-		jv.voucher_type = 'Journal Entry'
-		jv.company = self.company
-		jv.cheque_no = self.reference_no
-		jv.cheque_date = self.reference_date
-
-		party_account_currency, party_account_type = frappe.db.get_value("Account", self.party_account,
-			["account_currency", "account_type"])
-
-		bank_account_currency, bank_account_type = None, None
-		if self.payment_account:
-			bank_account_currency, bank_account_type = frappe.db.get_value("Account", self.payment_account,
-				["account_currency", "account_type"])
-
-		if not self.total_payment_amount:
-			frappe.throw(_("Please enter Payment Amount in atleast one row"))
-
-		for v in self.get("vouchers"):
-			if not frappe.db.get_value(v.against_voucher_type, {"name": v.against_voucher_no}):
-				frappe.throw(_("Row {0}: {1} is not a valid {2}").format(v.idx, v.against_voucher_no,
-					v.against_voucher_type))
-
-			if v.payment_amount:
-				exchange_rate = get_exchange_rate(self.party_account, party_account_currency,
-					self.company, v.against_voucher_type, v.against_voucher_no)
-
-				d1 = jv.append("accounts")
-				d1.account = self.party_account
-				d1.party_type = self.party_type
-				d1.party = self.party
-				d1.account_currency = party_account_currency
-				d1.account_type = party_account_type
-				d1.balance = get_balance_on(self.party_account)
-				d1.party_balance = get_balance_on(party=self.party, party_type=self.party_type)
-				d1.exchange_rate = exchange_rate
-				d1.set("debit_in_account_currency" if self.received_or_paid=="Paid" \
-					else "credit_in_account_currency", flt(v.payment_amount))
-				d1.reference_type = v.against_voucher_type
-				d1.reference_name = v.against_voucher_no
-				d1.is_advance = 'Yes' \
-					if v.against_voucher_type in ['Sales Order', 'Purchase Order'] else 'No'
-
-				amount = flt(d1.debit_in_account_currency) - flt(d1.credit_in_account_currency)
-				if bank_account_currency == party_account_currency:
-					total_payment_amount += amount
-				else:
-					total_payment_amount += amount*exchange_rate
-
-		d2 = jv.append("accounts")
-		if self.payment_account:
-			bank_account_currency, bank_account_type = frappe.db.get_value("Account", self.payment_account,
-				["account_currency", "account_type"])
-
-			d2.account = self.payment_account
-			d2.account_currency = bank_account_currency
-			d2.account_type = bank_account_type
-			d2.exchange_rate = get_exchange_rate(self.payment_account, bank_account_currency, self.company,
-				debit=(abs(total_payment_amount) if total_payment_amount < 0 else 0),
-				credit=(total_payment_amount if total_payment_amount > 0 else 0))
-			d2.account_balance = get_balance_on(self.payment_account)
-
-		amount_field_bank = 'debit_in_account_currency' if total_payment_amount < 0 \
-			else 'credit_in_account_currency'
-
-		d2.set(amount_field_bank, abs(total_payment_amount))
-
-		company_currency = frappe.db.get_value("Company", self.company, "default_currency")
-		if party_account_currency != company_currency or \
-			(bank_account_currency and bank_account_currency != company_currency):
-				jv.multi_currency = 1
-
-		jv.set_amounts_in_company_currency()
-		jv.set_total_debit_credit()
-
-		return jv.as_dict()
-
-@frappe.whitelist()
-def get_outstanding_vouchers(args):
-	from erpnext.accounts.utils import get_outstanding_invoices
-
-	if not frappe.has_permission("Payment Tool"):
-		frappe.throw(_("No permission to use Payment Tool"), frappe.PermissionError)
-
-	args = json.loads(args)
-
-	party_account_currency = get_account_currency(args.get("party_account"))
-	company_currency = frappe.db.get_value("Company", args.get("company"), "default_currency")
-
-	if ((args.get("party_type") == "Customer" and args.get("received_or_paid") == "Paid")
-		or (args.get("party_type") == "Supplier" and args.get("received_or_paid") == "Received")):
-
-		frappe.throw(_("Please enter the Against Vouchers manually"))
-
-	# Get all outstanding sales /purchase invoices
-	outstanding_invoices = get_outstanding_invoices(args.get("party_type"), args.get("party"), args.get("party_account"))
-
-	# Get all SO / PO which are not fully billed or aginst which full advance not paid
-	orders_to_be_billed = get_orders_to_be_billed(args.get("party_type"), args.get("party"),
-		party_account_currency, company_currency)
-
-	return outstanding_invoices + orders_to_be_billed
-
-def get_orders_to_be_billed(party_type, party, party_account_currency, company_currency):
-	voucher_type = 'Sales Order' if party_type == "Customer" else 'Purchase Order'
-
-	ref_field = "base_grand_total" if party_account_currency == company_currency else "grand_total"
-
-	orders = frappe.db.sql("""
-		select
-			name as voucher_no,
-			{ref_field} as invoice_amount,
-			({ref_field} - advance_paid) as outstanding_amount,
-			transaction_date as posting_date
-		from
-			`tab{voucher_type}`
-		where
-			{party_type} = %s
-			and docstatus = 1
-			and ifnull(status, "") != "Closed"
-			and {ref_field} > advance_paid
-			and abs(100 - per_billed) > 0.01
-		""".format(**{
-			"ref_field": ref_field,
-			"voucher_type": voucher_type,
-			"party_type": scrub(party_type)
-		}), party, as_dict = True)
-
-	order_list = []
-	for d in orders:
-		d["voucher_type"] = voucher_type
-		order_list.append(d)
-
-	return order_list
-
-@frappe.whitelist()
-def get_against_voucher_details(against_voucher_type, against_voucher_no, party_account, company):
-	party_account_currency = get_account_currency(party_account)
-	company_currency = frappe.db.get_value("Company", company, "default_currency")
-	ref_field = "base_grand_total" if party_account_currency == company_currency else "grand_total"
-
-	if against_voucher_type in ["Sales Order", "Purchase Order"]:
-		select_cond = "{0} as total_amount, {0} - advance_paid as outstanding_amount"\
-			.format(ref_field)
-	elif against_voucher_type in ["Sales Invoice", "Purchase Invoice"]:
-		select_cond = "{0} as total_amount, outstanding_amount".format(ref_field)
-	elif against_voucher_type == "Journal Entry":
-		ref_field = "total_debit" if party_account_currency == company_currency else "total_debit/exchange_rate"
-		select_cond = "{0} as total_amount".format(ref_field)
-
-	details = frappe.db.sql("""select {0} from `tab{1}` where name = %s"""
-		.format(select_cond, frappe.db.escape(against_voucher_type)), against_voucher_no, as_dict=1)
-
-	return details[0] if details else {}
diff --git a/erpnext/accounts/doctype/payment_tool/test_payment_tool.py b/erpnext/accounts/doctype/payment_tool/test_payment_tool.py
deleted file mode 100644
index 4f1c9e9..0000000
--- a/erpnext/accounts/doctype/payment_tool/test_payment_tool.py
+++ /dev/null
@@ -1,175 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import unittest, frappe, json
-from frappe.utils import flt
-from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
-from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order
-from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import test_records as si_test_records
-from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import test_records as pi_test_records
-from erpnext.accounts.doctype.journal_entry.test_journal_entry import test_records as jv_test_records
-
-test_dependencies = ["Item"]
-
-class TestPaymentTool(unittest.TestCase):
-	def test_make_journal_entry(self):
-		self.clear_table_entries()
-		frappe.db.set_default("currency", "INR")
-
-		base_customer_jv = self.create_against_jv(jv_test_records[2], { "party": "_Test Customer 3"})
-		base_supplier_jv = self.create_against_jv(jv_test_records[1], { "party": "_Test Supplier 1"})
-
-
-		# Create SO with partial outstanding
-		so1 = make_sales_order(customer="_Test Customer 3", qty=10, rate=100)
-
-		self.create_against_jv(jv_test_records[0], {
-			"party": "_Test Customer 3",
-			"reference_type": "Sales Order",
-			"reference_name": so1.name,
-			"is_advance": "Yes"
-		})
-
-
-		#Create SO with no outstanding
-		so2 = make_sales_order(customer="_Test Customer 3")
-
-		self.create_against_jv(jv_test_records[0], {
-			"party": "_Test Customer 3",
-			"reference_type": "Sales Order",
-			"reference_name": so2.name,
-			"credit_in_account_currency": 1000,
-			"is_advance": "Yes"
-		})
-
-		# Purchase order
-		po = create_purchase_order(supplier="_Test Supplier 1")
-
-		#Create SI with partial outstanding
-		si1 = self.create_voucher(si_test_records[0], {
-			"customer": "_Test Customer 3",
-			"debit_to": "_Test Receivable - _TC"
-		})
-
-		self.create_against_jv(jv_test_records[0], {
-			"party": "_Test Customer 3",
-			"reference_type": si1.doctype,
-			"reference_name": si1.name
-		})
-		#Create SI with no outstanding
-		si2 = self.create_voucher(si_test_records[0], {
-			"customer": "_Test Customer 3",
-			"debit_to": "_Test Receivable - _TC"
-		})
-
-		self.create_against_jv(jv_test_records[0], {
-			"party": "_Test Customer 3",
-			"reference_type": si2.doctype,
-			"reference_name": si2.name,
-			"credit_in_account_currency": 561.80
-		})
-
-		pi = self.create_voucher(pi_test_records[0], {
-			"supplier": "_Test Supplier 1",
-			"credit_to": "_Test Payable - _TC"
-		})
-
-		#Create a dict containing properties and expected values
-		expected_outstanding = {
-			"Journal Entry"	: [base_customer_jv.name, 400.00],
-			"Sales Invoice"		: [si1.name, 161.80],
-			"Purchase Invoice"	: [pi.name, 1512.30],
-			"Sales Order"		: [so1.name, 600.00],
-			"Purchase Order"	: [po.name, 5000.00]
-		}
-
-		args = {
-			"company": "_Test Company",
-			"party_type": "Customer",
-			"received_or_paid": "Received",
-			"party": "_Test Customer 3",
-			"party_account": "_Test Receivable - _TC",
-			"payment_mode": "Cheque",
-			"payment_account": "_Test Bank - _TC",
-			"reference_no": "123456",
-			"reference_date": "2013-02-14"
-		}
-
-		self.make_voucher_for_party(args, expected_outstanding)
-
-		args.update({
-			"party_type": "Supplier",
-			"received_or_paid": "Paid",
-			"party": "_Test Supplier 1",
-			"party_account": "_Test Payable - _TC"
-		})
-		expected_outstanding["Journal Entry"] = [base_supplier_jv.name, 400.00]
-		self.make_voucher_for_party(args, expected_outstanding)
-
-	def create_voucher(self, test_record, args):
-		doc = frappe.copy_doc(test_record)
-		doc.update(args)
-		doc.insert()
-		doc.submit()
-		return doc
-
-	def create_against_jv(self, test_record, args):
-		jv = frappe.copy_doc(test_record)
-		jv.get("accounts")[0].update(args)
-		if args.get("debit_in_account_currency"):
-			jv.get("accounts")[1].credit_in_account_currency = args["debit_in_account_currency"]
-		elif args.get("credit_in_account_currency"):
-			jv.get("accounts")[1].debit_in_account_currency = args["credit_in_account_currency"]
-
-		jv.insert()
-		jv.submit()
-		return jv
-
-	def make_voucher_for_party(self, args, expected_outstanding):
-		#Make Journal Entry for Party
-		payment_tool_doc = frappe.new_doc("Payment Tool")
-
-		for k, v in args.items():
-			payment_tool_doc.set(k, v)
-
-		self.check_outstanding_vouchers(payment_tool_doc, args, expected_outstanding)
-
-
-	def check_outstanding_vouchers(self, doc, args, expected_outstanding):
-		from erpnext.accounts.doctype.payment_tool.payment_tool import get_outstanding_vouchers
-		outstanding_entries = get_outstanding_vouchers(json.dumps(args))
-
-		for d in outstanding_entries:
-			self.assertEquals(flt(d.get("outstanding_amount"), 2), 
-				expected_outstanding.get(d.get("voucher_type"))[1])
-
-		self.check_jv_entries(doc, outstanding_entries, expected_outstanding)
-
-	def check_jv_entries(self, paytool, outstanding_entries, expected_outstanding):
-		for e in outstanding_entries:
-			d1 = paytool.append("vouchers")
-			d1.against_voucher_type = e.get("voucher_type")
-			d1.against_voucher_no = e.get("voucher_no")
-			d1.total_amount = e.get("invoice_amount")
-			d1.outstanding_amount = e.get("outstanding_amount")
-			d1.payment_amount = 100.00
-		paytool.total_payment_amount = 300
-
-		new_jv = paytool.make_journal_entry()
-		for jv_entry in new_jv.get("accounts"):
-			if paytool.party_account == jv_entry.get("account") and paytool.party == jv_entry.get("party"):
-				self.assertEquals(100.00, jv_entry.get("debit_in_account_currency" 
-					if paytool.party_type=="Supplier" else "credit_in_account_currency"))
-				self.assertEquals(jv_entry.reference_name,
-					expected_outstanding[jv_entry.reference_type][0])
-
-		self.assertEquals(new_jv.get("cheque_no"), paytool.reference_no)
-		self.assertEquals(new_jv.get("cheque_date"), paytool.reference_date)
-
-	def clear_table_entries(self):
-		frappe.db.sql("""delete from `tabGL Entry` where party in ("_Test Customer 3", "_Test Supplier 1")""")
-		frappe.db.sql("""delete from `tabSales Order` where customer = "_Test Customer 3" """)
-		frappe.db.sql("""delete from `tabSales Invoice` where customer = "_Test Customer 3" """)
-		frappe.db.sql("""delete from `tabPurchase Order` where supplier = "_Test Supplier 1" """)
-		frappe.db.sql("""delete from `tabPurchase Invoice` where supplier = "_Test Supplier 1" """)
diff --git a/erpnext/accounts/doctype/payment_tool_detail/__init__.py b/erpnext/accounts/doctype/payment_tool_detail/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/accounts/doctype/payment_tool_detail/__init__.py
+++ /dev/null
diff --git a/erpnext/accounts/doctype/payment_tool_detail/payment_tool_detail.json b/erpnext/accounts/doctype/payment_tool_detail/payment_tool_detail.json
deleted file mode 100644
index 0eb37b5..0000000
--- a/erpnext/accounts/doctype/payment_tool_detail/payment_tool_detail.json
+++ /dev/null
@@ -1,213 +0,0 @@
-{
- "allow_copy": 0, 
- "allow_import": 0, 
- "allow_rename": 0, 
- "beta": 0, 
- "creation": "2014-08-11 14:27:54.463897", 
- "custom": 0, 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "", 
- "editable_grid": 1, 
- "fields": [
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "against_voucher_type", 
-   "fieldtype": "Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "label": "Against Voucher Type", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "DocType", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "print_width": "", 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0, 
-   "width": ""
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "against_voucher_no", 
-   "fieldtype": "Dynamic Link", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Against Voucher No", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "against_voucher_type", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "due_date", 
-   "fieldtype": "Date", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Due Date", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "column_break_3", 
-   "fieldtype": "Column Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "total_amount", 
-   "fieldtype": "Currency", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Total Amount", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "party_account_currency", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "outstanding_amount", 
-   "fieldtype": "Currency", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Outstanding Amount", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "party_account_currency", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 1, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "fieldname": "payment_amount", 
-   "fieldtype": "Currency", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 1, 
-   "label": "Payment Amount", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "party_account_currency", 
-   "permlevel": 0, 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "report_hide": 0, 
-   "reqd": 1, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }
- ], 
- "hide_heading": 0, 
- "hide_toolbar": 0, 
- "idx": 0, 
- "image_view": 0, 
- "in_create": 0, 
- "in_dialog": 0, 
- "is_submittable": 0, 
- "issingle": 0, 
- "istable": 1, 
- "max_attachments": 0, 
- "modified": "2016-07-11 03:28:03.793149", 
- "modified_by": "Administrator", 
- "module": "Accounts", 
- "name": "Payment Tool Detail", 
- "name_case": "", 
- "owner": "Administrator", 
- "permissions": [], 
- "quick_entry": 0, 
- "read_only": 0, 
- "read_only_onload": 0, 
- "sort_field": "modified", 
- "sort_order": "DESC", 
- "track_seen": 0
-}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/payment_tool_detail/payment_tool_detail.py b/erpnext/accounts/doctype/payment_tool_detail/payment_tool_detail.py
deleted file mode 100644
index 21fd1c6..0000000
--- a/erpnext/accounts/doctype/payment_tool_detail/payment_tool_detail.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and contributors
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe.model.document import Document
-
-class PaymentToolDetail(Document):
-	pass
diff --git a/erpnext/config/accounts.py b/erpnext/config/accounts.py
index 66b59a5..a0fcb63 100644
--- a/erpnext/config/accounts.py
+++ b/erpnext/config/accounts.py
@@ -131,11 +131,6 @@
 			"items": [
 				{
 					"type": "doctype",
-					"name": "Payment Tool",
-					"description": _("Create Payment Entries against Orders or Invoices.")
-				},
-				{
-					"type": "doctype",
 					"label": _("Update Bank Transaction Dates"),
 					"name": "Bank Reconciliation",
 					"description": _("Update bank payment dates with journals.")
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 45fa3f3..9a584cb 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -294,4 +294,5 @@
 erpnext.patches.v7_0.make_is_group_fieldtype_as_check
 execute:frappe.reload_doc('projects', 'doctype', 'timesheet', force=True)
 execute:frappe.delete_doc_if_exists("Report", "Employee Holiday Attendance")
-
+execute:frappe.delete_doc_if_exists("DocType", "Payment Tool")
+execute:frappe.delete_doc_if_exists("DocType", "Payment Tool Detail")
