diff --git a/partner-irs.js b/partner-irs.js
index 008dcdb..26e7064 100644
--- a/partner-irs.js
+++ b/partner-irs.js
@@ -22,11 +22,11 @@ var mongodb;
 function start(_config, _callbackReport, options) {
     config = _config;
     callbackReport = _callbackReport
-    
+
     if (options && options.aaa) {
             aaa = options.aaa;
     }
-    
+
     if (options && options.logger) {
         logger = options.logger;
     } else {
@@ -36,7 +36,7 @@ function start(_config, _callbackReport, options) {
             ]
         });
     }
-    
+
     createXMLRPCServer();
     initMongoClient();
 }
@@ -55,25 +55,26 @@ function createXMLRPCServer() {
     });
 
     server.on('topUpReport', function (err, params, callback) {
-    
+
         logger.info('Got XMLRPC topUpReport request from partner', {xmlrpc_method: 'topUpReport', xmlrpc_params: params});
-        
+
         var paramscount = params.length;
         for (var i = 0; i < paramscount; i++) {
             var value = params[i];
-            
+
             var responseTs =  strftime('%Y-%m-%d %H:%M:%S', new Date());
             var dummyTask = { requestId: value.REQUESTID };
-            pushResponseToMongoDb(dummyTask, {ts:  responseTs, supplier: config.globals.gateway_name, raw: JSON.stringify(value), parsed: value});
-            
+
             if (value['RESPONSECODE'] == '00' && config.h2h_out.parse_sn == 'YES') {
                 value['MESSAGE'] = 'SN=' + parseSN(value['MESSAGE']) + '; ' + value['MESSAGE'];
             }
-            
+
             if (value['RESPONSECODE'] != '00' && value['RESPONSECODE'] != '68') {
                 value['RESPONSECODE'] = '40';
             }
-        
+
+            pushResponseToMongoDb(dummyTask, {ts:  responseTs, supplier: config.globals.gateway_name, raw: JSON.stringify(value), parsed: value}, value['RESPONSECODE']);
+
             callbackReport(value['REQUESTID'], value['RESPONSECODE'], value['MESSAGE']);
         }
 
@@ -82,7 +83,7 @@ function createXMLRPCServer() {
 }
 
 function topupRequestHttpGet(task, retry) {
-    
+
     var options = {
         method: 'GET',
         url: config.h2h_out.partner,
@@ -96,7 +97,7 @@ function topupRequestHttpGet(task, retry) {
             idtrx: task.requestId
         }
     }
-    
+
     request(options, function(err, res, body) {
     });
 }
@@ -116,7 +117,7 @@ function topupRequestXMLRPC(task, retry) {
     } else {
         client = xmlrpc.createClient(clientOptions);
     }
-    
+
     var params = {
         MSISDN: config.h2h_out.userid,
         REQUESTID: task.requestId,
@@ -124,42 +125,43 @@ function topupRequestXMLRPC(task, retry) {
         NOHP: task.destination,
         NOM: task.remoteProduct
     };
-    
+
     var methodName = 'topUpRequest';
     logger.info('Preparing XMLRPC client method', {methodname: methodName, params: params});
-    
-    client.methodCall(methodName, [ params ], function (error, value) {        
+
+    client.methodCall(methodName, [ params ], function (error, value) {
         // Results of the method response
         if (error) {
-            
+
             logger.warn('XMLRPC Client Error', {requestId: task['requestId'], errorMessage: error});
-            
+
             if (retry) {
-                
+
                 logger.info('Retrying topUpRequest (' + retry + ')');
                 setTimeout(function() {
                     topupRequest(task, retry - 1);
                 }, sleep_before_retry);
-                
+
             } else {
                 callbackReport(task['requestId'], '68', 'Silahkan resend. Gangguan koneksi ke suplier: ' + error);
             }
             return;
         }
-        
+
         logger.info('Got XMLRPC response from partner for', {response_method: methodName, response_message: value});
-        
+
         var responseTs =  strftime('%Y-%m-%d %H:%M:%S', new Date());
-        pushResponseToMongoDb(task, {ts:  responseTs, supplier: config.globals.gateway_name, raw: JSON.stringify(value), parsed: value});
-        
+
         if (value['RESPONSECODE'] == '00' && config.h2h_out.parse_sn == 'YES') {
             value['MESSAGE'] = 'SN=' + parseSN(value['MESSAGE']) + '; ' + value['MESSAGE'];
         }
-        
+
         if (value['RESPONSECODE'] != '00' && value['RESPONSECODE'] != '68') {
             value['RESPONSECODE'] = '40';
         }
-        
+
+        pushResponseToMongoDb(task, {ts:  responseTs, supplier: config.globals.gateway_name, raw: JSON.stringify(value), parsed: value}, value['RESPONSECODE']);
+
         callbackReport(value['REQUESTID'], value['RESPONSECODE'], value['MESSAGE']);
     });
 }
@@ -168,10 +170,10 @@ function topupRequest(task, retry) {
     if (retry === undefined) {
         task.ts = moment(task.timestamp, 'YYYYMMDDHHmmss').format('YYYY-MM-DD HH:mm:ss');
         task.ts_date = moment(task.timestamp, 'YYYYMMDDHHmmss').format('YYYY-MM-DD');
-        
+
         insertTaskToMongoDb(task);
     }
-    
+
     topupRequestXMLRPC(task, retry);
 }
 
@@ -179,10 +181,10 @@ function initMongoClient() {
     if (!config.mongodb || !config.mongodb.url) {
         return;
     }
-    
+
     try {
         var url = config.mongodb.url;
-    
+
         mongoClient.connect(url, function(err, db) {
             if (err) {
                 logger.warn('Failed to connect to mongodb', {err: err});
@@ -194,22 +196,22 @@ function initMongoClient() {
     }
     catch(err) {
         logger.warn('Exception when connecting to mongodb', {err: err, url: url});
-    }    
+    }
 }
 
 function isMongoReady() {
     if (!config.mongodb) { return; }
     if (!config.mongodb.collection) { return; }
     if (!mongodb) { return; }
-    
+
     return true;
 }
 
 function insertTaskToMongoDb(task) {
     if (!isMongoReady()) { return; }
-    
+
     task.supplier = config.globals.gateway_name;
-    
+
     try {
         mongodb.collection(config.mongodb.collection).insertOne(task);
     }
@@ -218,16 +220,17 @@ function insertTaskToMongoDb(task) {
     }
 }
 
-function pushResponseToMongoDb(task, response) {
+function pushResponseToMongoDb(task, response, rc) {
     if (!isMongoReady()) { return; }
-    
+
     try {
         mongodb.collection(config.mongodb.collection).updateOne(
             {requestId: task.requestId},
             {
                 $set: {
                     lastResponse: response,
-                    supplier: config.globals.gateway_name
+                    supplier: config.globals.gateway_name,
+                    rc: rc
                 },
                 $push: {
                     responses: response