diff --git a/partner-bayarkilat.js b/partner-bayarkilat.js
index 800cbeb..a99510f 100644
--- a/partner-bayarkilat.js
+++ b/partner-bayarkilat.js
@@ -123,24 +123,40 @@ function requestToPartner(methodName, task, retry) {
     logger.info('Requesting to partner', {requestOption: options});
     request(options, function(error, response, body) {
         if (error) {
-            logger.warn('Error requesting to partner', {error: error});
-            callbackReport(task.requestId, '68', 'Error requesting to partner. ' + error);
+            var msg = 'Error requesting to partner. ' + error;
+            var rc = '68';
+
+            try {
+                if (methodName == 'PURCHASE') {
+                    if (error.connect === true && (error.code === 'ETIMEDOUT' || error.code === 'ECONNREFUSED')) {
+                        rc = '40';
+                    }
+                }
+            }
+            catch(e) {
+                logger.warn('Parsing error exception on requestToPartner()');
+            }
+
+            logger.warn(msg, {error: error});
+            callbackReport(task.requestId, rc, msg);
 
             var _response = {
-                raw: 'Error requesting to partner. ' + error,
+                raw: JSON.stringify(msg: msg, error: error),
                 parsed: {
-                    MESSAGE: 'Error requesting to partner. ' + error,
+                    MESSAGE: msg
                     error: error
                 }
             }
-            aaa.pushResponseToMongoDb(task, _response, '68');
-
-            setTimeout(
-                topupCheck,
-                delayBeforeCheckRetry,
-                task,
-                retry
-            );
+            aaa.pushResponseToMongoDb(task, _response, rc);
+
+            if (rc == '68') {
+                setTimeout(
+                    topupCheck,
+                    delayBeforeCheckRetry,
+                    task,
+                    retry
+                );
+            }
 
             return;
         }