diff --git a/package.json b/package.json
index 445981c..fac11ba 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,7 @@
   "dependencies": {
     "crypto": "0.0.3",
     "ini": "^1.3.4",
+    "lru-cache": "^4.0.1",
     "sate24": "git+http://gitlab.kodesumber.com/reload97/node-sate24.git",
     "sate24-expresso": "git+http://gitlab.kodesumber.com/reload97/sate24-expresso.git",
     "winston": "^2.2.0",
diff --git a/partner-cjk.js b/partner-cjk.js
index 91ef012..9faa255 100644
--- a/partner-cjk.js
+++ b/partner-cjk.js
@@ -4,12 +4,16 @@ var xml = require('xml');
 var url = require('url');
 var http = require('http');
 var xml2js = require('xml2js').parseString;
+var LRU = require("lru-cache");
 
 var config;
 var callbackReport;
 var aaa;
 var logger;
 var options;
+var taskCache = LRU({max: 2000});
+
+var sleepBeforeRetry = 30;
 
 function start(_config, _callbackReport, options) {
     config = _config;
@@ -129,10 +133,25 @@ function topupResponseHandler(body) {
         }
         
         callbackReport(trxid, rc, message);
+        
+        if (rc == '68') {
+            task = taskCache.get(trxid);
+            if (!task) {
+                return;
+            }
+            
+            logger.info('Got pending status, retrying in ' +  sleepBeforeRetry + 's');
+            setTimeout(topupRequest, sleepBeforeRetry * 1000, task);
+        } else {
+            taskCache.del(trxid);
+        }
     });
 }
 
 function topupRequest(task, retry) {
+    
+    taskCache.set(task.requestId, task);
+    
     var remoteProduct = task.remoteProduct.split(',');
     
     var params = {