diff --git a/pos_close_approval/__manifest__.py b/pos_close_approval/__manifest__.py
index c72496151..c4d889832 100644
--- a/pos_close_approval/__manifest__.py
+++ b/pos_close_approval/__manifest__.py
@@ -15,8 +15,10 @@
"depends": ["pos_session_pay_invoice"],
"post_load": "post_load_hook",
"data": [
+ "wizards/change_payment_method_wizard.xml",
"wizards/pos_cash_box.xml",
"views/res_config_settings.xml",
+ "views/pos_payment.xml",
"security/ir.model.access.csv",
"wizards/bank_statement_account.xml",
"views/pos_session_views.xml",
diff --git a/pos_close_approval/security/ir.model.access.csv b/pos_close_approval/security/ir.model.access.csv
index 7ce6ee79b..d3a567644 100644
--- a/pos_close_approval/security/ir.model.access.csv
+++ b/pos_close_approval/security/ir.model.access.csv
@@ -1,3 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_account_bank_statement_line_account,access_account_bank_statement_line_account,model_account_bank_statement_line_account,point_of_sale.group_pos_manager,1,1,1,0
access_pos_cash_box,access_pos_cash_box,model_pos_cash_box,point_of_sale.group_pos_manager,1,1,1,0
+pos_close_approval.access_change_payment_method_wizard,access_change_payment_method_wizard,model_change_payment_method_wizard,point_of_sale.group_pos_manager,1,1,1,0
diff --git a/pos_close_approval/views/pos_payment.xml b/pos_close_approval/views/pos_payment.xml
new file mode 100644
index 000000000..ab429cb01
--- /dev/null
+++ b/pos_close_approval/views/pos_payment.xml
@@ -0,0 +1,23 @@
+
+
+
+
+ pos.payment.form (in pos_close_approval)
+ pos.payment
+
+
+
+
+
+
+
+
diff --git a/pos_close_approval/wizards/__init__.py b/pos_close_approval/wizards/__init__.py
index 9228b017f..edd8c91e8 100644
--- a/pos_close_approval/wizards/__init__.py
+++ b/pos_close_approval/wizards/__init__.py
@@ -1,2 +1,3 @@
from . import pos_cash_box
from . import bank_statement_account
+from . import change_payment_method_wizard
diff --git a/pos_close_approval/wizards/change_payment_method_wizard.py b/pos_close_approval/wizards/change_payment_method_wizard.py
new file mode 100644
index 000000000..6c60d9cd4
--- /dev/null
+++ b/pos_close_approval/wizards/change_payment_method_wizard.py
@@ -0,0 +1,46 @@
+# Copyright 2025 CreuBlanca
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+
+from odoo import _, api, fields, models
+from odoo.exceptions import UserError
+
+
+class ChangePaymentMethodWizard(models.TransientModel):
+
+ _name = "change.payment.method.wizard"
+ _description = "Wizard para cambiar método de pago"
+
+ payment_id = fields.Many2one("pos.payment", required=True, readonly=True)
+ old_payment_method_id = fields.Many2one(
+ "pos.payment.method",
+ string="Método de pago antiguo",
+ required=True,
+ readonly=True,
+ )
+ new_payment_method_id = fields.Many2one(
+ "pos.payment.method", string="Nuevo método de pago", required=True
+ )
+
+ @api.model
+ def default_get(self, fields):
+ res = super().default_get(fields)
+ active_id = self.env.context.get("active_id")
+ if active_id:
+ payment = self.env["pos.payment"].browse(active_id)
+ res.update(
+ {
+ "payment_id": payment.id,
+ "old_payment_method_id": payment.payment_method_id.id,
+ }
+ )
+ return res
+
+ def confirm_change(self):
+ self.ensure_one()
+ payment = self.payment_id
+ session = payment.pos_order_id.session_id
+ if session.state == "closed":
+ raise UserError(
+ _("The session is closed, the payment method cannot be changed.")
+ )
+ payment.payment_method_id = self.new_payment_method_id
diff --git a/pos_close_approval/wizards/change_payment_method_wizard.xml b/pos_close_approval/wizards/change_payment_method_wizard.xml
new file mode 100644
index 000000000..1713bbd9d
--- /dev/null
+++ b/pos_close_approval/wizards/change_payment_method_wizard.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+ change.payment.method.wizard.form (in pos_close_approval)
+ change.payment.method.wizard
+
+
+
+
+
+
+ Change Payment Method Wizard
+ change.payment.method.wizard
+ form
+ {}
+ new
+
+
+
+