diff --git a/erpnext/accounts/doctype/payment_gateway/payment_gateway.json b/erpnext/accounts/doctype/payment_gateway/payment_gateway.json
index ccee2bb..4f81632 100644
--- a/erpnext/accounts/doctype/payment_gateway/payment_gateway.json
+++ b/erpnext/accounts/doctype/payment_gateway/payment_gateway.json
@@ -13,6 +13,30 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "payment_gateway_details", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Payment Gateway Details", 
+   "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": "is_default", 
    "fieldtype": "Check", 
    "hidden": 0, 
@@ -81,6 +105,31 @@
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "currency", 
+   "fieldtype": "Read Only", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Currency", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "payment_account.account_currency", 
+   "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
   }
  ], 
  "hide_heading": 0, 
@@ -92,7 +141,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2015-12-16 13:20:49.584949", 
+ "modified": "2015-12-22 19:07:36.491109", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Payment Gateway", 
diff --git a/erpnext/accounts/doctype/payment_gateway/payment_gateway.py b/erpnext/accounts/doctype/payment_gateway/payment_gateway.py
index a0b8944..f756a86 100644
--- a/erpnext/accounts/doctype/payment_gateway/payment_gateway.py
+++ b/erpnext/accounts/doctype/payment_gateway/payment_gateway.py
@@ -9,9 +9,13 @@
 class PaymentGateway(Document):
 	def validate(self):
 		self.update_default_payment_gateway()
+		self.set_as_default()
 	
 	def update_default_payment_gateway(self):
-		frappe.db.sql("""update `tabPayment Gateway` set is_default = 0
-			where is_default = 1 """)
+		if self.is_default:
+			frappe.db.sql("""update `tabPayment Gateway` set is_default = 0
+				where is_default = 1 """)
 		
-		
+	def set_as_default(self):
+		if not frappe.db.get_value("Payment Gateway", {"is_default": 1, "name": ("!=", self.name)}, "name"):
+			self.is_default = 1
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.json b/erpnext/accounts/doctype/payment_request/payment_request.json
index 40d2fc9..13eeb8b 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.json
+++ b/erpnext/accounts/doctype/payment_request/payment_request.json
@@ -148,7 +148,7 @@
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
-   "read_only": 0, 
+   "read_only": 1, 
    "report_hide": 0, 
    "reqd": 0, 
    "search_index": 0, 
@@ -156,7 +156,7 @@
    "unique": 0
   }, 
   {
-   "allow_on_submit": 1, 
+   "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "default": "", 
@@ -232,7 +232,31 @@
    "unique": 0
   }, 
   {
-   "allow_on_submit": 1, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "mute_email", 
+   "fieldtype": "Check", 
+   "hidden": 1, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Mute Email", 
+   "length": 0, 
+   "no_copy": 1, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "report_hide": 1, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "fieldname": "email_to", 
@@ -435,7 +459,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2015-12-21 10:57:48.107213", 
+ "modified": "2015-12-22 20:18:08.853333", 
  "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 83c947d..bac19ec 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -11,7 +11,6 @@
 from erpnext.accounts.party import get_party_account
 from erpnext.accounts.utils import get_account_currency, get_balance_on
 from itertools import chain
-from paypal_integration.express_checkout import set_express_checkout
 
 class PaymentRequest(Document):		
 	def validate(self):
@@ -23,8 +22,10 @@
 			frappe.throw(_("Payment Request already exist"))
 		
 	def on_submit(self):
-		self.send_payment_request()
-		self.send_email()
+		if not self.mute_email:
+			self.send_payment_request()
+			self.send_email()
+			
 		self.make_communication_entry()
 	
 	def on_cancel(self):
@@ -37,7 +38,8 @@
 		pass
 	
 	def send_payment_request(self):
-		if self.payment_gateway == "PayPal":	
+		if self.payment_gateway == "PayPal":
+			from paypal_integration.express_checkout import set_express_checkout
 			self.payment_url = set_express_checkout(self.amount, self.currency, {"doctype": self.doctype, 
 				"docname": self.name})
 		
@@ -48,7 +50,7 @@
 		if frappe.session.user == "Guest":
 			frappe.set_user("Administrator")
 			
-		self.create_journal_voucher_entry()
+		return self.create_journal_voucher_entry()
 	
 	def create_journal_voucher_entry(self):
 		"""create voucher entry"""
@@ -99,6 +101,8 @@
 		#set status as paid for Payment Request
 		frappe.db.set_value(self.doctype, self.name, "status", "Paid")
 		
+		return jv
+		
 	def send_email(self):
 		"""send email with payment link"""
 		frappe.sendmail(recipients=self.email_to, sender=None, subject=self.subject,
@@ -128,24 +132,31 @@
 		comm.insert(ignore_permissions=True)
 
 @frappe.whitelist()
-def make_payment_request(dt, dn, recipient_id=None):
+def make_payment_request(**args):
 	"""Make payment request"""
-	ref_doc = get_reference_doc_details(dt, dn)
-	payment_gateway, payment_account = get_gateway_details()
+	args = frappe._dict(args)
+	ref_doc = get_reference_doc_details(args.dt, args.dn)
+	payment_gateway, payment_account = get_gateway_details(args)
 	
 	pr = frappe.new_doc("Payment Request")
 	pr.update({
 		"payment_gateway": payment_gateway,
 		"payment_account": payment_account,
 		"currency": ref_doc.currency,
-		"amount": get_amount(ref_doc, dt),
-		"email_to": recipient_id,
-		"subject": "Payment Request for %s"%dn,
+		"amount": get_amount(ref_doc, args.dt),
+		"mute_email": args.mute_email or 0,
+		"email_to": args.recipient_id or "",
+		"subject": "Payment Request for %s"%args.dn,
 		"message": frappe.get_doc("Accounts Settings").message,
-		"reference_doctype": dt,
-		"reference_name": dn
+		"reference_doctype": args.dt,
+		"reference_name": args.dn
 	})
 	
+	if args.submit_doc:
+		pr.insert(ignore_permissions=True)
+		pr.submit()
+		return pr
+	
 	return pr.as_dict()
 
 def get_reference_doc_details(dt, dn):
@@ -171,8 +182,11 @@
 	else:
 		frappe.throw(_("Payment Entry is already created"))
 		
-def get_gateway_details():
+def get_gateway_details(args):
 	"""return gateway and payment account of default payment gateway"""
+	if args.payemnt_gateway:
+		frappe.db.get_value("Payment Gateway", args.payemnt_gateway, ["gateway", "payment_account"])
+		
 	return frappe.db.get_value("Payment Gateway", {"is_default": 1}, ["gateway", "payment_account"])
 
 @frappe.whitelist()
diff --git a/erpnext/accounts/doctype/payment_request/test_payment_request.py b/erpnext/accounts/doctype/payment_request/test_payment_request.py
index 1f8cadf..bfc54f9 100644
--- a/erpnext/accounts/doctype/payment_request/test_payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/test_payment_request.py
@@ -5,8 +5,67 @@
 
 import frappe
 import unittest
-
+from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
+from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request
+from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
 # test_records = frappe.get_test_records('Payment Request')
 
+test_dependencies = ["Currency Exchange", "Journal Entry", "Contact", "Address"]
+
+payment_method = [
+	{
+		"doctype": "Payment Gateway",
+		"is_default": 1,
+		"gateway": "_Test Gateway INR",
+		"payment_account": "_Test Bank - _TC",
+		"currency": "INR"
+	},
+	{
+		"doctype": "Payment Gateway",
+		"gateway": "_Test Gateway USD",
+		"payment_account": "_Test Bank - _TC",
+		"currency": "USD"
+	}
+]
+
 class TestPaymentRequest(unittest.TestCase):
-	pass
+	def setUp(self):
+		for gateway in payment_method:
+			if not frappe.db.get_value("Payment Gateway", gateway["gateway"], "name"):
+				frappe.get_doc(gateway).insert(ignore_permissions=True)
+			
+	def test_payment_request_linkings(self):
+		SO_INR = make_sales_order(currency="INR")
+		pr = make_payment_request(dt="Sales Order", dn=SO_INR.name, recipient_id="saurabh@erpnext.com")
+		
+		self.assertEquals(pr.reference_doctype, "Sales Order")
+		self.assertEquals(pr.reference_name, SO_INR.name)
+		self.assertEquals(pr.currency, "INR")
+		
+		SI_USD = create_sales_invoice(currency="USD", conversion_rate=50)
+		pr = make_payment_request(dt="Sales Invoice", dn=SI_USD.name, recipient_id="saurabh@erpnext.com")
+
+		self.assertEquals(pr.reference_doctype, "Sales Invoice")
+		self.assertEquals(pr.reference_name, SI_USD.name)
+		self.assertEquals(pr.currency, "USD")
+	
+	def test_payment_entry(self):
+		SO_INR = make_sales_order(currency="INR")
+		pr = make_payment_request(dt="Sales Order", dn=SO_INR.name, recipient_id="saurabh@erpnext.com", 
+			mute_email=1, submit_doc=1)	 
+		jv = pr.set_paid()
+		
+		SO_INR = frappe.get_doc("Sales Order", SO_INR.name)
+		
+		self.assertEquals(SO_INR.advance_paid, jv.total_debit)
+		
+		SI_USD = create_sales_invoice(customer="_Test Customer USD", debit_to="_Test Receivable USD - _TC",
+			currency="USD", conversion_rate=50)
+
+		pr = make_payment_request(dt="Sales Invoice", dn=SI_USD.name, recipient_id="saurabh@erpnext.com",
+			mute_email=1, submit_doc=1, payemnt_gateway="_Test Gateway USD")
+		jv = pr.set_paid()
+
+		self.assertEquals(jv.accounts[0].account, "_Test Receivable USD - _TC")
+		self.assertEquals(jv.accounts[0].account_currency, "USD")
+		self.assertEquals(jv.accounts[1].account, pr.payment_account)
