diff --git a/addons/point_of_sale/models/pos_order.py b/addons/point_of_sale/models/pos_order.py
index c6738ee82747eb3d627cb7ff9c490cf8e2e22a0d..ec6a7914f805d36b72f277090f2149a5568a5c2a 100644
--- a/addons/point_of_sale/models/pos_order.py
+++ b/addons/point_of_sale/models/pos_order.py
@@ -112,7 +112,6 @@ class PosOrder(models.Model):
         :type existing_order: pos.order.
         :returns number pos_order id
         """
-        to_invoice = order['to_invoice'] if not draft else False
         order = order['data']
         pos_session = self.env['pos.session'].browse(order['pos_session_id'])
         if pos_session.state == 'closing_control' or pos_session.state == 'closed':
@@ -138,7 +137,7 @@ class PosOrder(models.Model):
             except Exception as e:
                 _logger.error('Could not fully process the POS Order: %s', tools.ustr(e))
 
-        if to_invoice:
+        if pos_order.to_invoice and pos_order.state == 'paid':
             pos_order.action_pos_order_invoice()
             pos_order.account_move.sudo().with_context(force_company=self.env.user.company_id.id).post()
 
diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js
index 142e82b454ca275b36b52175791e17f6c7a773b2..e89e167365a432485cef852c6d2ae9a834c3d929 100644
--- a/addons/point_of_sale/static/src/js/models.js
+++ b/addons/point_of_sale/static/src/js/models.js
@@ -2388,6 +2388,7 @@ exports.Order = Backbone.Model.extend({
             creation_date: this.validation_date || this.creation_date, // todo: rename creation_date in master
             fiscal_position_id: this.fiscal_position ? this.fiscal_position.id : false,
             server_id: this.server_id ? this.server_id : false,
+            to_invoice: this.to_invoice ? this.to_invoice : false,
         };
         if (!this.is_paid && this.user_id) {
             json.user_id = this.user_id;
diff --git a/addons/point_of_sale/tests/common.py b/addons/point_of_sale/tests/common.py
index 98e5eda1125fc67902ee6413e297c2e3ba8428a5..38e4de65f6ce57f1880fdc4f54b2af161db38517 100644
--- a/addons/point_of_sale/tests/common.py
+++ b/addons/point_of_sale/tests/common.py
@@ -389,6 +389,7 @@ class TestPoSCommon(TransactionCase):
                 'statement_ids': payments,
                 'uid': uid,
                 'user_id': self.pos_manager.id,
+                'to_invoice': is_invoiced,
             },
             'id': uid,
             'to_invoice': is_invoiced,