diff --git a/addons/account/models/account_reconcile_model.py b/addons/account/models/account_reconcile_model.py
index 524082e1b47f5907461a1e65443f959c78351216..6f5de73d39888078f6eebf8c21b48ba3e40c3d35 100644
--- a/addons/account/models/account_reconcile_model.py
+++ b/addons/account/models/account_reconcile_model.py
@@ -323,7 +323,11 @@ class AccountReconcileModel(models.Model):
                 # only allow to set the force_tax_included field if we have one tax selected
                 if line.force_tax_included:
                     tax = tax[0].with_context(force_price_include=True)
-                lines_vals_list += self._get_taxes_move_lines_dict(tax, writeoff_line)
+                tax_vals_list = self._get_taxes_move_lines_dict(tax, writeoff_line)
+                lines_vals_list += tax_vals_list
+                if not line.force_tax_included:
+                    for tax_line in tax_vals_list:
+                        residual_balance -= tax_line['balance']
 
         return lines_vals_list
 
diff --git a/addons/account/tests/test_reconciliation_matching_rules.py b/addons/account/tests/test_reconciliation_matching_rules.py
index 15c86f2ea2b0aa2db4df4d8e551951afbbcc4fb8..fb3a902c8e9d0afb9458a114189db8dce2bf2634 100644
--- a/addons/account/tests/test_reconciliation_matching_rules.py
+++ b/addons/account/tests/test_reconciliation_matching_rules.py
@@ -35,7 +35,7 @@ class TestReconciliationMatchingRules(AccountTestInvoicingCommon):
         cls.invoice_line_3.move_id.name = "RBILL/2019/09/0013" # Without demo data, avoid to match with the first invoice
         cls.invoice_line_4 = cls._create_invoice_line(1000, cls.partner_2, 'in_invoice')
 
-        current_assets_account = cls.env['account.account'].search([
+        cls.current_assets_account = cls.env['account.account'].search([
             ('user_type_id', '=', cls.env.ref('account.data_account_type_current_assets').id),
             ('company_id', '=', cls.company.id)], limit=1)
 
@@ -55,7 +55,7 @@ class TestReconciliationMatchingRules(AccountTestInvoicingCommon):
             })
 
         cls.rule_1 = cls.rule_0.copy()
-        cls.rule_1.write({'line_ids': [(0, 0, {'account_id': current_assets_account.id})]})
+        cls.rule_1.write({'line_ids': [(0, 0, {'account_id': cls.current_assets_account.id})]})
         cls.rule_1.match_partner = True
         cls.rule_1.match_partner_ids |= cls.partner_1 + cls.partner_2
         cls.rule_2 = cls.env['account.reconcile.model'].create({
@@ -63,7 +63,7 @@ class TestReconciliationMatchingRules(AccountTestInvoicingCommon):
             'rule_type': 'writeoff_suggestion',
             'match_partner': True,
             'match_partner_ids': [],
-            'line_ids': [(0, 0, {'account_id': current_assets_account.id})],
+            'line_ids': [(0, 0, {'account_id': cls.current_assets_account.id})],
         })
 
         invoice_number = cls.invoice_line_1.move_id.name
@@ -106,6 +106,12 @@ class TestReconciliationMatchingRules(AccountTestInvoicingCommon):
             'amount': 21,
         })
 
+        cls.tax12 = cls.env['account.tax'].create({
+            'name': '12%',
+            'type_tax_use': 'purchase',
+            'amount': 12,
+        })
+
     @classmethod
     def _create_invoice_line(cls, amount, partner, type, currency=None):
         ''' Create an invoice on the fly.'''
@@ -356,8 +362,14 @@ class TestReconciliationMatchingRules(AccountTestInvoicingCommon):
             'auto_reconcile': True,
             'rule_type': 'writeoff_suggestion',
             'line_ids': [(1, self.rule_1.line_ids.id, {
+                'amount': 50,
                 'force_tax_included': True,
                 'tax_ids': [(6, 0, self.tax21.ids)],
+            }), (0, 0, {
+                'amount': 100,
+                'force_tax_included': False,
+                'tax_ids': [(6, 0, self.tax12.ids)],
+                'account_id': self.current_assets_account.id,
             })]
         })
 
@@ -376,8 +388,11 @@ class TestReconciliationMatchingRules(AccountTestInvoicingCommon):
         # Check first line has been well reconciled.
         self.assertRecordValues(self.bank_line_1.line_ids, [
             {'partner_id': self.partner_1.id, 'debit': 0.0, 'credit': 121.0, 'tax_ids': [], 'tax_line_id': False},
-            {'partner_id': self.partner_1.id, 'debit': 100.0, 'credit': 0.0, 'tax_ids': [self.tax21.id], 'tax_line_id': False},
-            {'partner_id': self.partner_1.id, 'debit': 21.0, 'credit': 0.0, 'tax_ids': [], 'tax_line_id': self.tax21.id},
+            {'partner_id': self.partner_1.id, 'debit': 0.0, 'credit': 7.26, 'tax_ids': [], 'tax_line_id': False},
+            {'partner_id': self.partner_1.id, 'debit': 50.0, 'credit': 0.0, 'tax_ids': [self.tax21.id], 'tax_line_id': False},
+            {'partner_id': self.partner_1.id, 'debit': 10.5, 'credit': 0.0, 'tax_ids': [], 'tax_line_id': self.tax21.id},
+            {'partner_id': self.partner_1.id, 'debit': 60.5, 'credit': 0.0, 'tax_ids': [self.tax12.id], 'tax_line_id': False},
+            {'partner_id': self.partner_1.id, 'debit': 7.26, 'credit': 0.0, 'tax_ids': [], 'tax_line_id': self.tax12.id},
         ])
 
     def test_reverted_move_matching(self):