diff --git a/xmlout.js b/xmlout.js
index 6c916a0..cf24236 100644
--- a/xmlout.js
+++ b/xmlout.js
@@ -16,7 +16,17 @@ var taskHistory = LRU({max: 500, maxAge: 1000 * 3600 * 2});
 
 process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
 
-function callbackReport(requestId, responseCode, message, dontResendDelay) {
+function callbackReport(requestId, responseCode, message, dontResendDelay, raw) {
+    var responseToSave = {
+        parsed: {
+            MESSAGE: message,
+        }
+    };
+
+    if (raw) {
+        responseToSave.raw = raw;
+    }
+
     if (responseCode != '68' || dontResendDelay) {
         resendDelay.cancel(requestId);
     } else {
@@ -28,7 +38,7 @@ function callbackReport(requestId, responseCode, message, dontResendDelay) {
         });
     }
 
-    _callbackReport(requestId, responseCode, message);
+    _callbackReport(requestId, responseCode, message, null, responseToSave);
 }
 
 function createRedisClient(host, port) {
@@ -59,7 +69,7 @@ function topupRequest(task) {
     });
 }
 
-function _topupRequest(task) {
+function _topupRequest(task, pendingOnConnectError) {
 
     if (!aaa.isTodayTrx(task)) {
         callbackReport(task.requestId, '68', 'Terdeteksi transaksi beda hari, batal kirim ke supplier. Silahkan cek webreport', true);
@@ -94,11 +104,18 @@ function _topupRequest(task) {
     client.methodCall(methodName, [ params ], function (error, value) {
 
         // Results of the method response
-        if (error && (error.code == 'ECONNREFUSED' || error.code == 'EHOSTUNREACH')) {
+        if (error && !pendingOnConnectError && (error.code == 'ECONNREFUSED' || error.code == 'EHOSTUNREACH')) {
 
-            logger.warn('XMLRPC Client Error', {requestId: task['requestId'], err: error});
+            logger.warn('XMLRPC Client Error on connecting', {requestId: task['requestId'], err: error});
             callbackReport(task['requestId'], '91', 'Gangguan koneksi ke suplier: ' + error);
             return;
+
+        } else if (error) {
+
+            logger.warn('XMLRPC Client Error', {requestId: task['requestId'], err: error});
+            callbackReport(task['requestId'], '68', 'XMLRPC Client Error: ' + error);
+            return;
+
         }
 
         logger.info('Got XMLRPC response from partner for', {response_method: methodName, response_message: value});
@@ -193,6 +210,12 @@ function updateBalance(message) {
 }
 
 function checkStatus(task) {
+
+    if (Number(config.globals.topup_request_on_check_status)) {
+        _topupRequest(task, true);
+        return;
+    }
+
     var partnerUrl = url.parse(config.h2h_out.partner);
     var clientOptions = {
         host: partnerUrl.hostname