diff --git a/erpnext/accounts/doctype/payment_request/payment_request.json b/erpnext/accounts/doctype/payment_request/payment_request.json
index 0c0afdc..d69454c 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.json
+++ b/erpnext/accounts/doctype/payment_request/payment_request.json
@@ -86,6 +86,31 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "depends_on": "eval:doc.reference_doctype==\"Sales Order\"", 
+   "fieldname": "make_sales_invoice", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Make Sales Invoice", 
+   "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": "column_break_5", 
    "fieldtype": "Column Break", 
    "hidden": 0, 
@@ -484,7 +509,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2015-12-29 12:56:45.456546", 
+ "modified": "2015-12-30 17:43:10.626907", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Payment Request", 
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index 4086a3c..df431b2 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -44,6 +44,13 @@
 	def set_status(self):
 		pass
 	
+	def make_invoice(self):
+		if self.make_sales_invoice:
+			from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice
+			si = make_sales_invoice(self.reference_name, ignore_permissions=True)
+			si = frappe.get_doc(si).insert(ignore_permissions=True)
+			si.submit()
+	
 	def send_payment_request(self):
 		self.payment_url = get_url("/api/method/erpnext.accounts.doctype.payment_request.payment_request.gererate_payemnt_request?name={0}".format(self.name))
 		if self.payment_url:
@@ -53,8 +60,11 @@
 		if frappe.session.user == "Guest":
 			frappe.set_user("Administrator")
 			
-		return self.create_journal_entry()
-	
+		jv = self.create_journal_entry()
+		self.make_invoice()
+		
+		return jv
+		
 	def create_journal_entry(self):
 		"""create entry"""
 		payment_details = {
@@ -62,6 +72,8 @@
 			"return_obj": True,
 			"bank_account": self.payment_account
 		}
+		
+		frappe.flags.ignore_account_permission = True
 				
 		if self.reference_doctype == "Sales Order":
 			jv = get_payment_entry_against_order(self.reference_doctype, self.reference_name, payment_details)
@@ -73,7 +85,7 @@
 			"voucher_type": "Journal Entry",
 			"posting_date": nowdate()
 		})		
-
+		jv.insert(ignore_permissions=True)
 		jv.submit()
 		
 		#set status as paid for Payment Request
@@ -109,9 +121,10 @@
 		})
 		comm.insert(ignore_permissions=True)
 
-@frappe.whitelist()
+@frappe.whitelist(allow_guest=True)
 def make_payment_request(**args):
 	"""Make payment request"""
+	
 	args = frappe._dict(args)
 	ref_doc = get_reference_doc_details(args.dt, args.dn)
 	name, gateway, payment_account, message = get_gateway_details(args)
@@ -122,6 +135,7 @@
 		"gateway": gateway,
 		"payment_account": payment_account,
 		"currency": ref_doc.currency,
+		"make_sales_invoice": args.cart or 0,
 		"amount": get_amount(ref_doc, args.dt),
 		"mute_email": args.mute_email or 0,
 		"email_to": args.recipient_id or "",
@@ -137,8 +151,14 @@
 	if args.submit_doc:
 		pr.insert(ignore_permissions=True)
 		pr.submit()
-		return pr
-	
+		
+		if args.cart:
+			gererate_payemnt_request(pr.name)
+			frappe.db.commit()
+		
+		if not args.cart:	
+			return pr
+			
 	return pr.as_dict()
 
 def get_reference_doc_details(dt, dn):
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index e7f2b8a..6f02a54 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -247,7 +247,7 @@
 
 	# will work as update after submit
 	jv_obj.flags.ignore_validate_update_after_submit = True
-	jv_obj.save()
+	jv_obj.save(ignore_permissions=True)
 
 def remove_against_link_from_jv(ref_type, ref_no):
 	linked_jv = frappe.db.sql_list("""select parent from `tabJournal Entry Account`
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 99e708d..dc21bd5 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -401,7 +401,7 @@
 	return target_doc
 
 @frappe.whitelist()
-def make_sales_invoice(source_name, target_doc=None):
+def make_sales_invoice(source_name, target_doc=None, ignore_permissions=False):
 	def postprocess(source, target):
 		set_missing_values(source, target)
 		#Get the advance paid Journal Entries in Sales Invoice Advance
@@ -410,6 +410,7 @@
 	def set_missing_values(source, target):
 		target.is_pos = 0
 		target.ignore_pricing_rule = 1
+		target.flags.ignore_permissions = True
 		target.run_method("set_missing_values")
 		target.run_method("calculate_taxes_and_totals")
 
@@ -442,7 +443,7 @@
 			"doctype": "Sales Team",
 			"add_if_empty": True
 		}
-	}, target_doc, postprocess)
+	}, target_doc, postprocess, ignore_permissions=ignore_permissions)
 
 	return doclist
 
diff --git a/erpnext/templates/pages/order.html b/erpnext/templates/pages/order.html
index 26dbed6..f3c91b1 100644
--- a/erpnext/templates/pages/order.html
+++ b/erpnext/templates/pages/order.html
@@ -58,7 +58,7 @@
                 {% endif %}
             </div>
             <div class="col-sm-2 col-xs-3 text-right">
-                {{ d.get_formatted("amount") }}
+                {{ d.get_formatted("amount")	 }}
 				{# output of get_formatted("rate") is unicode, to replace unicode use _("text {0}").decode("utf8").format(val) #}
                 <p class="text-muted small">{{
                     _("Rate: {0}").decode("utf8").format(d.get_formatted("rate")) }}</p>
@@ -76,4 +76,18 @@
     </div>
 </div>
 
+<div class="cart-taxes row small">
+    <div class="col-sm-8"><!-- empty --></div>
+    <div class="col-sm-4">
+        {% if doc.per_billed <= 0 %}
+		<div class="page-header-actions-block" data-html-block="header-actions">
+			<p>
+			    <a href="/api/method/erpnext.accounts.doctype.payment_request.payment_request.make_payment_request?dn={{ doc.name }}&dt={{ doc.doctype }}&submit_doc=1&mute_email=1&cart=1"
+			        class="btn btn-primary btn-sm">Pay {{ doc.get_formatted("grand_total") }} </a>
+			</p>
+		</div>
+		{% endif %}
+    </div>
+</div>
+
 {% endblock %}
