diff --git a/addons/account/models/account.py b/addons/account/models/account.py
index e186b96299de75c55a90c34fc0b104f3b49f3960..36b0077a7019564bf064852c36e1fb05f505048f 100644
--- a/addons/account/models/account.py
+++ b/addons/account/models/account.py
@@ -653,25 +653,24 @@ class AccountTax(models.Model):
             else:
                 tax_amount = currency.round(tax_amount)
 
-            if tax_amount:
-                if tax.price_include:
-                    total_excluded -= tax_amount
-                    base -= tax_amount
-                else:
-                    total_included += tax_amount
-
-                if tax.include_base_amount:
-                    base += tax_amount
-
-                taxes.append({
-                    'id': tax.id,
-                    'name': tax.name,
-                    'amount': tax_amount,
-                    'sequence': tax.sequence,
-                    'account_id': tax.account_id.id,
-                    'refund_account_id': tax.refund_account_id.id,
-                    'analytic': tax.analytic,
-                })
+            if tax.price_include:
+                total_excluded -= tax_amount
+                base -= tax_amount
+            else:
+                total_included += tax_amount
+
+            if tax.include_base_amount:
+                base += tax_amount
+
+            taxes.append({
+                'id': tax.id,
+                'name': tax.name,
+                'amount': tax_amount,
+                'sequence': tax.sequence,
+                'account_id': tax.account_id.id,
+                'refund_account_id': tax.refund_account_id.id,
+                'analytic': tax.analytic,
+            })
 
         return {
             'taxes': sorted(taxes, key=lambda k: k['sequence']),
diff --git a/addons/account/models/account_invoice.py b/addons/account/models/account_invoice.py
index 447d26b3c6df2727f320682b9e0d9609ea63bf0b..8b62b5db3982766347eee15eb659b9a7cdae0643 100644
--- a/addons/account/models/account_invoice.py
+++ b/addons/account/models/account_invoice.py
@@ -623,16 +623,17 @@ class AccountInvoice(models.Model):
     def tax_line_move_line_get(self):
         res = []
         for tax_line in self.tax_line_ids:
-            res.append({
-                'tax_line_id': tax_line.tax_id.id,
-                'type': 'tax',
-                'name': tax_line.name,
-                'price_unit': tax_line.amount,
-                'quantity': 1,
-                'price': tax_line.amount,
-                'account_id': tax_line.account_id.id,
-                'account_analytic_id': tax_line.account_analytic_id.id,
-            })
+            if tax_line.amount:
+                res.append({
+                    'tax_line_id': tax_line.tax_id.id,
+                    'type': 'tax',
+                    'name': tax_line.name,
+                    'price_unit': tax_line.amount,
+                    'quantity': 1,
+                    'price': tax_line.amount,
+                    'account_id': tax_line.account_id.id,
+                    'account_analytic_id': tax_line.account_analytic_id.id,
+                })
         return res
 
     def inv_line_characteristic_hashcode(self, invoice_line):
diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py
index 41d6c0a020b8260bd5ce8c8875553f2444bbe665..c6f8dd3165ff1a9e843dc6d979ebc80211a0d101 100644
--- a/addons/account/models/account_move.py
+++ b/addons/account/models/account_move.py
@@ -976,20 +976,21 @@ class AccountMoveLine(models.Model):
                     vals['amount_currency'] = self.env['res.currency'].browse(vals['currency_id']).round(vals['amount_currency'] * (amount / res['total_excluded']))
             # Create tax lines
             for tax_vals in res['taxes']:
-                account_id = (amount > 0 and tax_vals['account_id'] or tax_vals['refund_account_id'])
-                if not account_id: account_id = vals['account_id']
-                tax_lines_vals.append({
-                    'account_id': account_id,
-                    'name': vals['name'] + ' ' + tax_vals['name'],
-                    'tax_line_id': tax_vals['id'],
-                    'move_id': vals['move_id'],
-                    'date': vals['date'],
-                    'partner_id': vals.get('partner_id'),
-                    'ref': vals.get('ref'),
-                    'statement_id': vals.get('statement_id'),
-                    'debit': tax_vals['amount'] > 0 and tax_vals['amount'] or 0.0,
-                    'credit': tax_vals['amount'] < 0 and -tax_vals['amount'] or 0.0,
-                })
+                if tax_vals['amount']:
+                    account_id = (amount > 0 and tax_vals['account_id'] or tax_vals['refund_account_id'])
+                    if not account_id: account_id = vals['account_id']
+                    tax_lines_vals.append({
+                        'account_id': account_id,
+                        'name': vals['name'] + ' ' + tax_vals['name'],
+                        'tax_line_id': tax_vals['id'],
+                        'move_id': vals['move_id'],
+                        'date': vals['date'],
+                        'partner_id': vals.get('partner_id'),
+                        'ref': vals.get('ref'),
+                        'statement_id': vals.get('statement_id'),
+                        'debit': tax_vals['amount'] > 0 and tax_vals['amount'] or 0.0,
+                        'credit': tax_vals['amount'] < 0 and -tax_vals['amount'] or 0.0,
+                    })
 
         new_line = super(AccountMoveLine, self).create(vals)
         for tax_line_vals in tax_lines_vals: