diff --git a/addons/payment_paypal/models/paypal.py b/addons/payment_paypal/models/paypal.py
index a5e31e9571cc432588283b99d5a06f373e0d069a..ffa5de1bf7a28ed6baa72f2bb5e51338ee2abb0e 100644
--- a/addons/payment_paypal/models/paypal.py
+++ b/addons/payment_paypal/models/paypal.py
@@ -90,9 +90,12 @@ class AcquirerPaypal(osv.Model):
             return 0.0
         country = self.pool['res.country'].browse(cr, uid, country_id, context=context)
         if country and acquirer.company_id.country_id.id == country.id:
-            fees = amount * (1 + acquirer.fees_dom_var / 100.0) + acquirer.fees_dom_fixed - amount
+            percentage = acquirer.fees_dom_var
+            fixed = acquirer.fees_dom_fixed
         else:
-            fees = amount * (1 + acquirer.fees_int_var / 100.0) + acquirer.fees_int_fixed - amount
+            percentage = acquirer.fees_int_var
+            fixed = acquirer.fees_int_fixed
+        fees = (percentage / 100.0 * amount + fixed ) / (1 - percentage / 100.0)
         return fees
 
     def paypal_form_generate_values(self, cr, uid, id, partner_values, tx_values, context=None):
diff --git a/addons/payment_paypal/tests/test_paypal.py b/addons/payment_paypal/tests/test_paypal.py
index 01f40ddd0944b1ed47a5ab6f8e525dd03c6ac4dc..5638c5cd602bd975dfd32f5d10ed1af0dca1f5e3 100644
--- a/addons/payment_paypal/tests/test_paypal.py
+++ b/addons/payment_paypal/tests/test_paypal.py
@@ -148,7 +148,7 @@ class PaypalForm(PaypalCommon):
         for form_input in tree.input:
             if form_input.get('name') in ['handling']:
                 handling_found = True
-                self.assertEqual(form_input.get('value'), '1.56', 'paypal: wrong computed fees')
+                self.assertEqual(form_input.get('value'), '1.57', 'paypal: wrong computed fees')
         self.assertTrue(handling_found, 'paypal: fees_active did not add handling input in rendered form')
 
     @mute_logger('openerp.addons.payment_paypal.models.paypal', 'ValidationError')