diff --git a/master/bt5/slapos_payzen/SkinTemplateItem/portal_skins/slapos_payzen/PaymentTransaction_updateStatus.py b/master/bt5/slapos_payzen/SkinTemplateItem/portal_skins/slapos_payzen/PaymentTransaction_updateStatus.py
index 2db18b3f579ab57a8ca912aa6d9398635ce5cf1f..a3a306d059df94a2d9738be457efcd4d0b1259a0 100644
--- a/master/bt5/slapos_payzen/SkinTemplateItem/portal_skins/slapos_payzen/PaymentTransaction_updateStatus.py
+++ b/master/bt5/slapos_payzen/SkinTemplateItem/portal_skins/slapos_payzen/PaymentTransaction_updateStatus.py
@@ -1,11 +1,11 @@
 from DateTime import DateTime
 
 state = context.getSimulationState()
-if (state != 'started') or (context.getPaymentMode() != 'payzen'):
-  return
-else:
-  _, transaction_id = context.PaymentTransaction_getPayzenId()
+#if (state != 'started') or (context.getPaymentMode() != 'payzen'):
+#  return
+#else:
+_, transaction_id = context.PaymentTransaction_getPayzenId()
 
-  if transaction_id is not None:
-    # so the payment is registered in payzen
-    context.PaymentTransaction_createPayzenEvent().updateStatus()
+if transaction_id is not None:
+  # so the payment is registered in payzen
+  context.PaymentTransaction_createPayzenEvent().updateStatus()
diff --git a/master/bt5/slapos_payzen/SkinTemplateItem/portal_skins/slapos_payzen/PayzenEvent_processUpdate.py b/master/bt5/slapos_payzen/SkinTemplateItem/portal_skins/slapos_payzen/PayzenEvent_processUpdate.py
index cc622a1f700a3c4b8ca56ac1bc40e321ec1be6f0..aa90743c3abd8c000019c1389329aeb066b48c73 100644
--- a/master/bt5/slapos_payzen/SkinTemplateItem/portal_skins/slapos_payzen/PayzenEvent_processUpdate.py
+++ b/master/bt5/slapos_payzen/SkinTemplateItem/portal_skins/slapos_payzen/PayzenEvent_processUpdate.py
@@ -13,104 +13,95 @@ transaction = payzen_event.getDestinationValue()
 if transaction is None:
   raise ValueError("Unable to find related transaction")
 
-assert signature in (True, False)
-if signature is False:
-  # signature is wrong, bye bye
-  payzen_event.confirm(comment='Signature does not match')
+isTransitionPossible = context.getPortalObject().portal_workflow.isTransitionPossible
+
+status = data_kw['status']
+answer = data_kw['answer']
+if status != "SUCCESS":
+  error_code = answer["error_code"]
+  if error_code == "PSP_010":
+    # Transaction Not Found
+    transaction_date, _ = transaction.PaymentTransaction_getPayzenId()
+    # Mark on payment transaction history log that transaction was not processed yet
+    payzen_event.confirm()
+    payzen_event.acknowledge(comment='Transaction not found on payzen side.')
+    #if int(DateTime()) - int(transaction_date) > 86400:
+    #  if isTransitionPossible(transaction, 'cancel'):
+    #    pass
+    #    transaction.cancel(comment='Aborting unknown payzen payment.')
+    #else:
+    # Comment the last part until all transaction are using the new REST Api and order_id
+    storeWorkflowComment(transaction,
+                         'Error code PSP_010 (Not found) did not changed the document state.')
+    return
+  else:
+  # Unknown errorCode
+    payzen_event.confirm(comment='Unknown errorCode %r' % error_code)
+    return
+
+transaction_list = answer["transactions"]
+if len(transaction_list) != 1:
+  # Unexpected Number of Transactions
+  payzen_event.confirm(comment='Unexpected Number of Transaction for this order')
   return
 
-isTransitionPossible = context.getPortalObject().portal_workflow.isTransitionPossible
+transaction_kw = transaction_list[0]
+
+# See Full Status list at https://payzen.io/en-EN/rest/V4.0/api/kb/status_reference.html
+mark_transaction_id_list = [
+  'AUTHORISED_TO_VALIDATE',
+  'WAITING_AUTHORISATION',
+  'WAITING_AUTHORISATION_TO_VALIDATE',
+]
+continue_transaction_id_list = ['AUTHORISED', 'CAPTURED', 'PARTIALLY_AUTHORISED']
+cancel_transaction_id_list = ['REFUSED']
+
+transaction_status = transaction_kw['detailedStatus']
 
-error_code = data_kw['errorCode']
-if error_code == '2':
-  transaction_date, _ = transaction.PaymentTransaction_getPayzenId()
+if transaction_status in mark_transaction_id_list:
   # Mark on payment transaction history log that transaction was not processed yet
+  storeWorkflowComment(transaction, 'Transaction status %s did not changed the document state' % (transaction_status))
   payzen_event.confirm()
-  payzen_event.acknowledge(comment='Transaction not found on payzen side.')
-  if int(DateTime()) - int(transaction_date) > 86400:
-    if isTransitionPossible(transaction, 'cancel'):
-      transaction.cancel(comment='Aborting unknown payzen payment.')
-  else:
-    storeWorkflowComment(transaction, 
-                         'Error code 2 (Not found) did not changed the document state.')
-  return
+  payzen_event.acknowledge(comment='Automatic acknowledge as result of correct communication')
+  if isTransitionPossible(transaction, 'confirm'):
+    transaction.confirm(comment='Confirmed as really saw in PayZen.')
+
+elif transaction_status in continue_transaction_id_list:
+  # Check authAmount and authDevise and if match, stop transaction
+  auth_amount = int(transaction_kw['transactionDetails']['cardDetails']['authorizationResponse']['amount'])
+  auth_devise = transaction_kw['transactionDetails']['cardDetails']['authorizationResponse']['currency']
+  transaction_amount = int((round(transaction.PaymentTransaction_getTotalPayablePrice(), 2) * -100))
+
+  if transaction_amount != auth_amount:
+    payzen_event.confirm(comment='Received amount (%r) does not match stored on transaction (%r)'% (auth_amount, transaction_amount))
+    return
 
-elif error_code == '0':
-  transaction_code_mapping = {
-    '0': 'Initial (being treated)',
-    '1': 'To be validated ',
-    '2': 'To be forced - Contact issuer',
-    '3': 'To be validated and authorized',
-    '4': 'Waiting for submission',
-    '5': 'Waiting for authorization',
-    '6': 'Submitted',
-    '7': 'Expired',
-    '8': 'Refused',
-    '9': 'Cancelled',
-    '10': 'Waiting',
-    '11': 'Being submitted',
-    '12': 'Being authorized',
-    '13': 'Failed',
-  }
-  mark_transaction_id_list = ['0', '1', '3', '5', '10', '11', '12']
-  continue_transaction_id_list = ['4', '6']
-  cancel_transaction_id_list = ['8']
-
-  transaction_status = data_kw['transactionStatus']
-
-  transaction_status_description = transaction_code_mapping.get(transaction_status, None)
-  if transaction_status_description is None:
-    payzen_event.confirm(comment='Unknown transactionStatus %r' % transaction_status)
+  transaction_devise = transaction.getResourceReference()
+  if transaction_devise != auth_devise:
+    payzen_event.confirm(comment='Received devise (%r) does not match stored on transaction (%r)'% (auth_devise, transaction_devise))
     return
 
-  if transaction_status in mark_transaction_id_list:
-    # Mark on payment transaction history log that transaction was not processed yet
-    storeWorkflowComment(transaction, 'Transaction status %s (%s) did not changed the document state' % (transaction_status, transaction_status_description))
+  comment = 'PayZen considered as paid.'
+  if isTransitionPossible(transaction, 'confirm'):
+    transaction.confirm(comment=comment)
+  if isTransitionPossible(transaction, 'start'):
+    transaction.start(comment=comment)
+  if isTransitionPossible(transaction, 'stop'):
+    transaction.stop(comment=comment)
+
+  if transaction.getSimulationState() == 'stopped':
     payzen_event.confirm()
     payzen_event.acknowledge(comment='Automatic acknowledge as result of correct communication')
-    if isTransitionPossible(transaction, 'confirm'):
-      transaction.confirm(comment='Confirmed as really saw in PayZen.')
-
-  elif transaction_status in continue_transaction_id_list:
-    # Check authAmount and authDevise and if match, stop transaction
-    auth_amount = int(data_kw['authAmount'])
-    auth_devise = data_kw['authDevise']
-    transaction_amount = int((round(transaction.PaymentTransaction_getTotalPayablePrice(), 2) * -100))
-
-    if transaction_amount != auth_amount:
-      payzen_event.confirm(comment='Received amount (%r) does not match stored on transaction (%r)'% (auth_amount, transaction_amount))
-      return
-
-    transaction_devise = transaction.getResourceValue().Currency_getIntegrationMapping()
-    if transaction_devise != auth_devise:
-      payzen_event.confirm(comment='Received devise (%r) does not match stored on transaction (%r)'% (auth_devise, transaction_devise))
-      return
-
-    comment = 'PayZen considered as paid.'
-    if isTransitionPossible(transaction, 'confirm'):
-      transaction.confirm(comment=comment)
-    if isTransitionPossible(transaction, 'start'):
-      transaction.start(comment=comment)
-    if isTransitionPossible(transaction, 'stop'):
-      transaction.stop(comment=comment)
-
-    if transaction.getSimulationState() == 'stopped':
-      payzen_event.confirm()
-      payzen_event.acknowledge(comment='Automatic acknowledge as result of correct communication')
-    else:
-      payzen_event.confirm(comment='Expected to put transaction in stopped state, but achieved only %s state' % transaction.getSimulationState())
-
-  elif transaction_status in cancel_transaction_id_list:
-    payzen_event.confirm()
-    payzen_event.acknowledge(comment='Refused payzen payment.')
-    if isTransitionPossible(transaction, 'cancel'):
-      transaction.cancel(comment='Aborting refused payzen payment.')
-    return
   else:
-    payzen_event.confirm(comment='Transaction status %r (%r) is not supported' \
-                           % (transaction_status, transaction_status_description))
-    return
+    payzen_event.confirm(comment='Expected to put transaction in stopped state, but achieved only %s state' % transaction.getSimulationState())
 
+elif transaction_status in cancel_transaction_id_list:
+  payzen_event.confirm()
+  payzen_event.acknowledge(comment='Refused payzen payment.')
+  if isTransitionPossible(transaction, 'cancel'):
+    transaction.cancel(comment='Aborting refused payzen payment.')
+  return
 else:
-  # Unknown errorCode
-  payzen_event.confirm(comment='Unknown errorCode %r' % error_code)
+  payzen_event.confirm(comment='Transaction status %r is not supported' \
+                         % (transaction_status))
+  return
diff --git a/master/bt5/slapos_payzen/SkinTemplateItem/portal_skins/slapos_payzen/PayzenEvent_processUpdate.xml b/master/bt5/slapos_payzen/SkinTemplateItem/portal_skins/slapos_payzen/PayzenEvent_processUpdate.xml
index 85df506c3e090c2765ba5362790ff48c2f0696cf..62ffc7ad3bdc065edbbf44677810ddce3f0ece11 100644
--- a/master/bt5/slapos_payzen/SkinTemplateItem/portal_skins/slapos_payzen/PayzenEvent_processUpdate.xml
+++ b/master/bt5/slapos_payzen/SkinTemplateItem/portal_skins/slapos_payzen/PayzenEvent_processUpdate.xml
@@ -50,7 +50,7 @@
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string>data_kw, signature, REQUEST=None</string> </value>
+            <value> <string>data_kw, REQUEST=None</string> </value>
         </item>
         <item>
             <key> <string>id</string> </key>
diff --git a/master/bt5/slapos_payzen/WorkflowTemplateItem/portal_workflow/payzen_interface_workflow/scripts/PayzenEvent_generateNavigationPage.py b/master/bt5/slapos_payzen/WorkflowTemplateItem/portal_workflow/payzen_interface_workflow/scripts/PayzenEvent_generateNavigationPage.py
index 79fe64d6446a0b475dcf18e959fbbfee2294ea52..4e8754eb5a7ff7e020bec8c92cc11e26eedf4469 100644
--- a/master/bt5/slapos_payzen/WorkflowTemplateItem/portal_workflow/payzen_interface_workflow/scripts/PayzenEvent_generateNavigationPage.py
+++ b/master/bt5/slapos_payzen/WorkflowTemplateItem/portal_workflow/payzen_interface_workflow/scripts/PayzenEvent_generateNavigationPage.py
@@ -29,6 +29,7 @@ payzen_dict = {
   'vads_amount': str(int(round((payment_transaction.PaymentTransaction_getTotalPayablePrice() * -100), 0))),
   'vads_trans_date': now.toZone('UTC').asdatetime().strftime('%Y%m%d%H%M%S'),
   'vads_trans_id': transaction_id,
+  'vads_order_id': transaction_id,
   'vads_language': 'en',
   'vads_url_cancel': vads_url_cancel,
   'vads_url_error': vads_url_error,
diff --git a/master/bt5/slapos_payzen/WorkflowTemplateItem/portal_workflow/payzen_interface_workflow/scripts/PayzenEvent_updateStatus.py b/master/bt5/slapos_payzen/WorkflowTemplateItem/portal_workflow/payzen_interface_workflow/scripts/PayzenEvent_updateStatus.py
index ad2a49df3e637d80d05144e6dada791037800cd0..8ab397ff4a6c71c28ba3c6addb804f814f6ec648 100644
--- a/master/bt5/slapos_payzen/WorkflowTemplateItem/portal_workflow/payzen_interface_workflow/scripts/PayzenEvent_updateStatus.py
+++ b/master/bt5/slapos_payzen/WorkflowTemplateItem/portal_workflow/payzen_interface_workflow/scripts/PayzenEvent_updateStatus.py
@@ -6,20 +6,20 @@ if transaction_id is None:
   raise ValueError('Transaction not registered in payzen integration tool')
 
 payment_service = payzen_event.getSourceValue(portal_type="Payzen Service")
-data_kw, signature, sent_text, received_text = payment_service.soap_getInfo(
+data_kw, sent_text, received_text = payment_service.rest_getInfo(
   transaction_date.toZone('UTC').asdatetime(),
   transaction_id)
 
 # SENT
 sent = payzen_event.newContent(
-  title='Sent SOAP', 
+  title='Sent Data', 
   portal_type='Payzen Event Message', 
   text_content=sent_text)
 
 # RECEIVED
 payzen_event.newContent(
-  title='Received SOAP', 
+  title='Received Data', 
   portal_type='Payzen Event Message', 
   text_content=received_text, 
   predecessor_value=sent)
-payzen_event.PayzenEvent_processUpdate(data_kw, signature)
+payzen_event.PayzenEvent_processUpdate(data_kw)