diff --git a/partner-simplepay.js b/partner-simplepay.js
index 28ae500..54609d5 100644
--- a/partner-simplepay.js
+++ b/partner-simplepay.js
@@ -306,8 +306,50 @@ function checkStatus(task) {
 }
 
 
-function reverseReportHandler(body) {
-    logger.info('Got reverse report', {body: body});
+function reverseReportHandler(data) {
+    //logger.info('Got reverse report', {body: body});
+
+    const qs = URL.parse(data, true).query;
+
+    if (!qs || !qs.request_id) {
+        return;
+    }
+
+    if ((typeof qs.balance === 'string') && qs.balance && aaa.updateBalance) {
+        const balance = qs.balance.replace(/\D/g, '');
+        if (balance) {
+            aaa.updateBalance(balance);
+        }
+    }
+
+
+    let rc = '68';
+    if (qs.trx_status === 'S') {
+        rc = '00';
+    }
+    else if (qs.trx_status === 'R') {
+        rc = '40';
+    }
+
+    if ((typeof qs.serial === 'string') && qs.serial) {
+        rc = '00';
+    }
+
+    const sn = (rc === '00') ? _createSnFromReverseReport(qs) : null;
+    let msg = [
+        'REVERSE REPORT',
+        'Diag: ' + (qs.diag + '-'),
+        'Message': + (qs.message || '-'),
+        'Status: ' + (qs.trx_status || '-'),
+        'Balance: ' + (qs.balance || '-'),
+        'Harga: ' + (qs.harga || '-')
+    ].join('. ');
+
+    if (sn) {
+        msg = 'SN=' + sn + '; ' + msg;
+    }
+
+    callbackReport(qs.request_id, rc, msg);
 }
 
 function _parseInfoFromReverseReport(info) {
@@ -350,7 +392,6 @@ function _createSnFromReverseReport(qs) {
 function createReverseHttpServer() {
     var httpServer = http.createServer(function(req, res) {
 
-        const qs = URL.parse(req.url, true).query;
         logger.info('Got request from partner (reverse report)', {remote_address: req.connection.remoteAddress, url: req.url, qs: qs});
 
         var body = "";
@@ -362,9 +403,16 @@ function createReverseHttpServer() {
             res.writeHead(200);
             res.end('OK');
 
-            reverseReportHandler(body);
+            logger.info('Got reverse report', {body: body});
+
+            reverseReportHandler('?' + body);
         });
 
+        return;
+
+        const qs = URL.parse(req.url, true).query;
+
+
         if (!qs || !qs.request_id) {
             return;
         }