diff --git a/partner-komodo.js b/partner-komodo.js
index 474c0bc..5c7118b 100644
--- a/partner-komodo.js
+++ b/partner-komodo.js
@@ -2,6 +2,7 @@
 
 process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
 
+const url = require('url');
 const request = require('request');
 const resendDelay = require('sate24/resend-delay')
 
@@ -101,28 +102,40 @@ function topupRequest(task, pendingOnConnectError) {
         }
 
         let result = parsePartnerMessage(body);
-        if (!result) {
+        processPartnerResponse(result);
+
+    })
+}
+
+function topupAdvice(task) {
+    topupRequest(task, true);
+}
+
+function processPartnerResponse(resObj, task) {
+    if (!resObj) {
+
+        if (task.requestId) {
             callbackReport(task.requestId, '40', 'Error parsing response from partner. Partner response: ' + body);
-            return;
+        }
+        else {
+            logger.warn('UNDEFINED REQUEST ID');
         }
 
-        let st24Rc = '68';
+        return;
+    }
 
-        if (komodoRc[result.rc]) {
-            st24Rc = komodoRc[result.rc];
-        }
+    let st24Rc = '68';
 
-        let st24Message = result.message;
-        if (result.sn) {
-            st24Message = 'SN=' + result.sn + '; ' + st24Message;
-        }
+    if (komodoRc[resObj.rc]) {
+        st24Rc = komodoRc[resObj.rc];
+    }
 
-        callbackReport(task.requestId, st24Rc, st24Message);
-    })
-}
+    let st24Message = resObj.message;
+    if (resObj.sn) {
+        st24Message = 'SN=' + resObj.sn + '; ' + st24Message;
+    }
 
-function topupAdvice(task) {
-    topupRequest(task, true);
+    callbackReport(resObj.request_id, st24Rc, st24Message);
 }
 
 function parsePartnerMessage(partner_message) {
@@ -138,6 +151,22 @@ function parsePartnerMessage(partner_message) {
     return result;
 }
 
+function createReverseHttpServer() {
+    let listenPort = config.h2h_out.listen_port;
+
+    http.createServer(onReverseReport).listen(listenPort, function() {
+        logger.info('HTTP Reverse/Report server listen on port ' + listenPort);
+    });
+}
+
+function onReverseReport(request, response) {
+    response.end('OK');
+
+    const qs = url.parse(request.url, true).query;
+    logger.verbose('Got reverse report from partner', {qs: qs});
+    processPartnerResponse(qs);
+}
+
 
 exports.start = start;
 exports.topupRequest = topupRequest;