diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py
index cbaa5306e870a2c6938e9d55a9cb9a8157fc9156..b438bd555ad6f782ec42ecd981255ee02aa9e20e 100644
--- a/addons/account/models/account_move.py
+++ b/addons/account/models/account_move.py
@@ -1240,10 +1240,11 @@ class AccountMove(models.Model):
             for line in tax_lines:
                 res.setdefault(line.tax_line_id.tax_group_id, {'base': 0.0, 'amount': 0.0})
                 res[line.tax_line_id.tax_group_id]['amount'] += line.price_subtotal
-                if line.tax_line_id.id not in done_taxes:
+                tax_key_add_base = tuple(move._get_tax_key_for_group_add_base(line))
+                if tax_key_add_base not in done_taxes:
                     # The base should be added ONCE
                     res[line.tax_line_id.tax_group_id]['base'] += line.tax_base_amount
-                    done_taxes.add(line.tax_line_id.id)
+                    done_taxes.add(tax_key_add_base)
             res = sorted(res.items(), key=lambda l: l[0].sequence)
             move.amount_by_group = [(
                 group.name, amounts['amount'],
@@ -1254,6 +1255,15 @@ class AccountMove(models.Model):
                 group.id
             ) for group, amounts in res]
 
+    @api.model
+    def _get_tax_key_for_group_add_base(self, line):
+        """
+        Useful for _compute_invoice_taxes_by_group
+        must be consistent with _get_tax_grouping_key_from_tax_line
+         @return list
+        """
+        return [line.tax_line_id.id]
+
     @api.depends('date', 'line_ids.debit', 'line_ids.credit', 'line_ids.tax_line_id', 'line_ids.tax_ids', 'line_ids.tag_ids')
     def _compute_tax_lock_date_message(self):
         for move in self:
diff --git a/addons/l10n_in/models/account_invoice.py b/addons/l10n_in/models/account_invoice.py
index 69ff5cb7842121489fa1e673640af4c78444ff31..b960b47c791c65a52b48dc8362188a085369c979 100644
--- a/addons/l10n_in/models/account_invoice.py
+++ b/addons/l10n_in/models/account_invoice.py
@@ -46,3 +46,12 @@ class AccountMove(models.Model):
             'quantity': base_line.quantity,
         })
         return res
+
+    @api.model
+    def _get_tax_key_for_group_add_base(self, line):
+        tax_key = super(AccountMove, self)._get_tax_key_for_group_add_base(line)
+
+        tax_key += [
+            line.product_id.id,
+        ]
+        return tax_key