diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index 5b76907..86aeba3 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -83,23 +83,23 @@
 		
 		party_account = get_party_account("Customer", ref_doc.get("customer"), ref_doc.company)
 		party_account_currency = get_account_currency(party_account)
-		
+				
 		debit_in_account_currency = 0.0
-		
+				
 		if party_account_currency == ref_doc.company_currency:
 			amount = self.base_grand_total
 			if self.currency != ref_doc.company_currency:
 				debit_in_account_currency = self.grand_total
 			
 		else:
-			amount = self.grand_total
+			amount = debit_in_account_currency = self.grand_total
 				
 		if self.reference_doctype == "Sales Order":
 			jv = get_payment_entry_against_order(self.reference_doctype, self.reference_name,
 			 amount=amount, debit_in_account_currency=debit_in_account_currency , journal_entry=True, 
 			 bank_account=self.payment_account)
 			
-		if self.reference_doctype == "Sales Invoice":
+		if self.reference_doctype == "Sales Invoice":			
 			jv = get_payment_entry_against_invoice(self.reference_doctype, self.reference_name,
 			 amount=amount, debit_in_account_currency=debit_in_account_currency, journal_entry=True,
 			 bank_account=self.payment_account)
@@ -211,8 +211,8 @@
 		
 	if dt == "Sales Invoice":
 		base_grand_total = flt(ref_doc.base_grand_total)
-		grand_total = (flt(ref_doc.base_grand_total) - flt(ref_doc.outstanding_amount)) / flt(ref_doc.conversion_rate, 2)
-	
+		grand_total = flt(ref_doc.outstanding_amount)
+		
 	if base_grand_total > 0 and grand_total > 0 :
 		return base_grand_total, grand_total
 		
@@ -221,8 +221,8 @@
 		
 def get_gateway_details(args):
 	"""return gateway and payment account of default payment gateway"""
-	if args.payemnt_gateway:
-		return get_payment_gateway_account(args.payemnt_gateway)
+	if args.get("payment_gateway"):
+		return get_payment_gateway_account(args.get("payment_gateway"))
 		
 	if args.cart:
 		payment_gateway_account = frappe.get_doc("Shopping Cart Settings").payment_gateway_account
diff --git a/erpnext/accounts/doctype/payment_request/test_payment_request.py b/erpnext/accounts/doctype/payment_request/test_payment_request.py
index b041aa1..eb8e558 100644
--- a/erpnext/accounts/doctype/payment_request/test_payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/test_payment_request.py
@@ -8,6 +8,7 @@
 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, get_gateway_details
 from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
+from erpnext.setup.utils import get_exchange_rate
 # test_records = frappe.get_test_records('Payment Request')
 
 test_dependencies = ["Currency Exchange", "Journal Entry", "Contact", "Address"]
@@ -44,48 +45,44 @@
 				frappe.get_doc(method).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")
-		
+		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.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")
+
+		conversion_rate = get_exchange_rate("USD", "INR")
+
+		si_usd = create_sales_invoice(currency="USD", conversion_rate=conversion_rate)
+		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.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_as_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, return_doc=1, payemnt_gateway="_Test Gateway - 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_as_paid()
-		
-		payemnt_gateway_details = get_gateway_details({"payemnt_gateway": "_Test Gateway - USD"})
-		
-		accounts = jv.accounts.as_dict()
-		
-		self.assertEquals(accounts[0].account, "_Test Receivable USD - _TC")
-		self.assertEquals(accounts[0].account, payemnt_gateway_details.payment_account)
-		
-		
-			
-			
-			
-		
-		
+
+		so_inr = frappe.get_doc("Sales Order", so_inr.name)
+
+		self.assertEquals(so_inr.advance_paid, jv.total_debit)
+
+		conversion_rate = get_exchange_rate("USD", "INR")
+
+		si_usd = create_sales_invoice(customer="_Test Customer USD", debit_to="_Test Receivable USD - _TC",
+			currency="USD", conversion_rate=conversion_rate)
+
+		pr = make_payment_request(dt="Sales Invoice", dn=si_usd.name, recipient_id="saurabh@erpnext.com",
+			mute_email=1, return_doc=1, payment_gateway="_Test Gateway - USD")
+
+		jv = pr.set_as_paid()
+
+		payment_gateway_details = get_gateway_details({"payment_gateway": "_Test Gateway - USD"})
+				
+		self.assertEquals(jv.accounts[0].account, "_Test Receivable USD - _TC")
+		self.assertEquals(jv.accounts[1].account, payment_gateway_details.payment_account)
+		
\ No newline at end of file
