diff --git a/addons/payment_ogone/models/ogone.py b/addons/payment_ogone/models/ogone.py
index 0a07315467f52d31944b6124c4b2cf0d3735d773..53db91d5e3496fb01a22de9cc43ce2faee49e2cf 100644
--- a/addons/payment_ogone/models/ogone.py
+++ b/addons/payment_ogone/models/ogone.py
@@ -264,7 +264,7 @@ class PaymentTxOgone(osv.Model):
                                                   'acquirer_id': tx.acquirer_id.id,
                                                   'acquirer_ref': alias
                                                   })
-                tx.partner_reference = alias
+                tx.write({'payment_method_id': ref})
 
         return tx
 
@@ -294,7 +294,7 @@ class PaymentTxOgone(osv.Model):
                 'date_validate': datetime.datetime.strptime(data['TRXDATE'], '%m/%d/%y').strftime(DEFAULT_SERVER_DATE_FORMAT),
                 'acquirer_reference': data['PAYID'],
             }
-            if data.get('ALIAS') and tx.partner_id and tx.type == 'form_save':
+            if data.get('ALIAS') and tx.partner_id and tx.type == 'form_save' and not tx.payment_method_id:
                 pm_id = self.pool['payment.method'].create(cr, uid, {
                     'partner_id': tx.partner_id.id,
                     'acquirer_id': tx.acquirer_id.id,
@@ -399,6 +399,14 @@ class PaymentTxOgone(osv.Model):
                 'date_validate': datetime.date.today().strftime(DEFAULT_SERVER_DATE_FORMAT),
                 'acquirer_reference': tree.get('PAYID'),
             })
+            if tree.get('ALIAS') and tx.partner_id and tx.type == 'form_save' and not tx.payment_method_id:
+                pm = tx.env['payment.method'].create({
+                    'partner_id': tx.partner_id.id,
+                    'acquirer_id': tx.acquirer_id.id,
+                    'acquirer_ref': tree.get('ALIAS'),
+                    'name': tree.get('CARDNO'),
+                })
+                tx.write({'payment_method_id': pm.id})
             if tx.callback_eval:
                 safe_eval(tx.callback_eval, {'self': tx})
             return True