diff --git a/addons/account/models/account_invoice.py b/addons/account/models/account_invoice.py
index 4ad0c31afc8c8c98d2fe99a42bca9511a00eca05..2c40fa80799ef5680e4a61777e7d7e25f99e5d77 100644
--- a/addons/account/models/account_invoice.py
+++ b/addons/account/models/account_invoice.py
@@ -650,6 +650,7 @@ class AccountInvoice(models.Model):
     @api.multi
     def get_taxes_values(self):
         tax_grouped = {}
+        round_curr = self.currency_id.round
         for line in self.invoice_line_ids:
             price_unit = line.price_unit * (1 - (line.discount or 0.0) / 100.0)
             taxes = line.invoice_line_tax_ids.compute_all(price_unit, self.currency_id, line.quantity, line.product_id, self.partner_id)['taxes']
@@ -659,9 +660,10 @@ class AccountInvoice(models.Model):
 
                 if key not in tax_grouped:
                     tax_grouped[key] = val
+                    tax_grouped[key]['base'] = round_curr(val['base'])
                 else:
                     tax_grouped[key]['amount'] += val['amount']
-                    tax_grouped[key]['base'] += val['base']
+                    tax_grouped[key]['base'] += round_curr(val['base'])
         return tax_grouped
 
     @api.multi
diff --git a/addons/account/tests/test_account_customer_invoice.py b/addons/account/tests/test_account_customer_invoice.py
index 201d973673c41927df33fbc4fd57e2f6ebf4b615..1458ff0f4cf50471d55017aa3bc8a18f645cf09c 100644
--- a/addons/account/tests/test_account_customer_invoice.py
+++ b/addons/account/tests/test_account_customer_invoice.py
@@ -101,3 +101,66 @@ class TestAccountCustomerInvoice(AccountTestUsers):
 
         # I clicked on refund button.
         self.account_invoice_refund_0.invoice_refund()
+
+    def test_customer_invoice_tax(self):
+
+        self.env.user.company_id.tax_calculation_rounding_method = 'round_globally'
+
+        payment_term = self.env.ref('account.account_payment_term_advance')
+        journalrec = self.env['account.journal'].search([('type', '=', 'sale')])[0]
+        partner3 = self.env.ref('base.res_partner_3')
+        account_id = self.env['account.account'].search([('user_type_id', '=', self.env.ref('account.data_account_type_revenue').id)], limit=1).id
+
+        tax = self.env['account.tax'].create({
+            'name': 'Tax 15.0',
+            'amount': 15.0,
+            'amount_type': 'percent',
+            'type_tax_use': 'sale',
+        })
+
+        invoice_line_data = [
+            (0, 0,
+                {
+                    'product_id': self.env.ref('product.product_product_1').id,
+                    'quantity': 40.0,
+                    'account_id': account_id,
+                    'name': 'product test 1',
+                    'discount' : 10.00,
+                    'price_unit': 2.27,
+                    'invoice_line_tax_ids': [(6, 0, [tax.id])],
+                }
+             ),
+              (0, 0,
+                {
+                    'product_id': self.env.ref('product.product_product_2').id,
+                    'quantity': 21.0,
+                    'account_id': self.env['account.account'].search([('user_type_id', '=', self.env.ref('account.data_account_type_revenue').id)], limit=1).id,
+                    'name': 'product test 2',
+                    'discount' : 10.00,
+                    'price_unit': 2.77,
+                    'invoice_line_tax_ids': [(6, 0, [tax.id])],
+                }
+             ),
+             (0, 0,
+                {
+                    'product_id': self.env.ref('product.product_product_3').id,
+                    'quantity': 21.0,
+                    'account_id': self.env['account.account'].search([('user_type_id', '=', self.env.ref('account.data_account_type_revenue').id)], limit=1).id,
+                    'name': 'product test 3',
+                    'discount' : 10.00,
+                    'price_unit': 2.77,
+                    'invoice_line_tax_ids': [(6, 0, [tax.id])],
+                }
+             )
+        ]
+
+        invoice = self.env['account.invoice'].create(dict(
+            name="Test Customer Invoice",
+            reference_type="none",
+            payment_term_id=payment_term.id,
+            journal_id=journalrec.id,
+            partner_id=partner3.id,
+            invoice_line_ids=invoice_line_data
+        ))
+
+        self.assertEquals(invoice.amount_untaxed, sum([x.base for x in invoice.tax_line_ids]))