diff --git a/erpnext/accounts/doctype/payment_order/payment_order.js b/erpnext/accounts/doctype/payment_order/payment_order.js
index a5e18e8..91d7f1f 100644
--- a/erpnext/accounts/doctype/payment_order/payment_order.js
+++ b/erpnext/accounts/doctype/payment_order/payment_order.js
@@ -16,25 +16,44 @@
 			frm.add_custom_button(__('Payment Request'), function() {
 				frm.trigger("get_from_payment_request");
 			}, __("Get from"));
+
 			frm.add_custom_button(__('Payment Entry'), function() {
 				frm.trigger("get_from_payment_entry");
 			}, __("Get from"));
+
+			frm.trigger('remove_button');
 		}
 
 		// payment Entry
 		if (frm.doc.docstatus===1 && frm.doc.payment_order_type==='Payment Request') {
 			frm.add_custom_button(__('Create Payment Entries'),
-				function() {
-					frm.trigger("make_payment_records");
-				});
+			function() {
+				frm.trigger("make_payment_records");
+			});
+		}
+	},
+
+	remove_row_if_empty: function(frm) {
+		// remove if first row is empty
+		if (frm.doc.references.length > 0 && !frm.doc.references[0].reference_name) {
+			frm.doc.references = [];
+		}
+	},
+
+	remove_button: function(frm) {
+		let label = ["Payment Request", "Payment Entry"]
+
+		if (frm.doc.references.length > 0 && frm.doc.payment_order_type) {
+			label = label.reduce(x => {
+				x!= frm.doc.payment_order_type;
+				return x;
+			});
+			frm.remove_custom_button(label, "Get from");
 		}
 	},
 
 	get_from_payment_entry: function(frm) {
-		// remove if first row is empty
-		if (!frm.doc.references[0].reference_name) {
-			frm.doc.references = [];
-		}
+		frm.trigger("remove_row_if_empty");
 		erpnext.utils.map_current_doc({
 			method: "erpnext.accounts.doctype.payment_entry.payment_entry.make_payment_order",
 			source_doctype: "Payment Entry",
@@ -52,10 +71,7 @@
 	},
 
 	get_from_payment_request: function(frm) {
-		// remove if first row is empty
-		if (!frm.doc.references[0].reference_name) {
-			frm.doc.references = [];
-		}
+		frm.trigger("remove_row_if_empty")
 		erpnext.utils.map_current_doc({
 			method: "erpnext.accounts.doctype.payment_request.payment_request.make_payment_order",
 			source_doctype: "Payment Request",
@@ -116,5 +132,4 @@
 
 		dialog.show();
 	},
-
 });
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/payment_order/payment_order.json b/erpnext/accounts/doctype/payment_order/payment_order.json
index 285168f..c0dd4bc 100644
--- a/erpnext/accounts/doctype/payment_order/payment_order.json
+++ b/erpnext/accounts/doctype/payment_order/payment_order.json
@@ -79,6 +79,7 @@
    "fieldtype": "Select",
    "label": "Payment Order Type",
    "options": "\nPayment Request\nPayment Entry",
+   "read_only": 1,
    "reqd": 1
   },
   {
@@ -98,7 +99,7 @@
   }
  ],
  "is_submittable": 1,
- "modified": "2019-05-08 16:00:09.027739",
+ "modified": "2019-05-09 13:57:12.974008",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Payment Order",
diff --git a/erpnext/accounts/doctype/payment_order/regional/india.js b/erpnext/accounts/doctype/payment_order/regional/india.js
index 2b49a06..87d9cdc 100644
--- a/erpnext/accounts/doctype/payment_order/regional/india.js
+++ b/erpnext/accounts/doctype/payment_order/regional/india.js
@@ -1,30 +1,29 @@
 frappe.ui.form.on('Payment Order', {
 	refresh: function(frm) {
-        if (frm.doc.docstatus==1 && frm.doc.payment_order_type==='Payment Entry') {
-            frm.add_custom_button(__('Generate Text File'),
-				function() {
-					frm.trigger("generate_text_and_download_file");
-            });
-        }
-    },
-    generate_text_and_download_file: (frm) => {
-        return frappe.call({
-            method: "erpnext.regional.india.bank_remittance_txt.generate_report",
-            args: {
-                name: frm.doc.name
-            },
-            freeze: true,
-            callback: function(r) {
-                {
-                    frm.refresh();
-                    const a = document.createElement('a');
-                    let file_obj = r.message;
+		if (frm.doc.docstatus==1 && frm.doc.payment_order_type==='Payment Entry') {
+			frm.add_custom_button(__('Generate Text File'), function() {
+				frm.trigger("generate_text_and_download_file");
+			});
+		}
+	},
+	generate_text_and_download_file: (frm) => {
+		return frappe.call({
+			method: "erpnext.regional.india.bank_remittance_txt.generate_report",
+			args: {
+				name: frm.doc.name
+			},
+			freeze: true,
+			callback: function(r) {
+				{
+					frm.refresh();
+					const a = document.createElement('a');
+					let file_obj = r.message;
 					a.href = file_obj.file_url;
 					a.target = '_blank';
 					a.download = file_obj.file_name;
 					a.click();
 				}
-            }
-        });
-    }
+			}
+		});
+	}
 });
\ No newline at end of file
