diff --git a/partner-bnisp.js b/partner-bnisp.js
index 6443727..a16839c 100644
--- a/partner-bnisp.js
+++ b/partner-bnisp.js
@@ -46,9 +46,14 @@ function topupRequest(task) {
     _hitTopup(task);
 }
 
+function splitRemoteProduct(remoteProduct) {
+    return remoteProduct.replace(/^\s+|\s+$/gm,'').split(/[\/\W]+/);
+}
+
 function _hitTopup(task, isCheckStatus) {
 
-    const remoteProduct = task.remoteProduct.split('/');
+    const remoteProduct = splitRemoteProduct(task.remoteProduct);
+
     if (remoteProduct.length < 4) {
         callbackReport(task.requestId, '40', 'INTERNAL_MSG: Invalid remoteProduct', task)
         return;
@@ -242,3 +247,4 @@ exports.createUrlPath = createUrlPath;
 exports.parseResponseBody = parseResponseBody;
 exports.responseDataProcessor = responseDataProcessor;
 exports.topupRequest = topupRequest;
+exports.splitRemoteProduct = splitRemoteProduct;
diff --git a/test.js b/test.js
index 3826639..cdcb41d 100644
--- a/test.js
+++ b/test.js
@@ -54,4 +54,32 @@ describe("#partner", function() {
             processed.balance.should.equal(94950);
         })
     })
+
+    describe('#splitRemoteProduct', function() {
+        it ('should return correctly using space as separator', function() {
+            const remoteProduct = 'PULSA THREE5000 0 0';
+            partner.splitRemoteProduct(remoteProduct)[0].should.equal('PULSA');
+            partner.splitRemoteProduct(remoteProduct)[1].should.equal('THREE5000');
+            partner.splitRemoteProduct(remoteProduct)[2].should.equal('0');
+            partner.splitRemoteProduct(remoteProduct)[3].should.equal('0');
+        })
+
+        it ('should return correctly using comma as separator', function() {
+            const remoteProduct = 'PULSA,THREE5000,0,0';
+            partner.splitRemoteProduct(remoteProduct)[0].should.equal('PULSA');
+            partner.splitRemoteProduct(remoteProduct)[1].should.equal('THREE5000');
+            partner.splitRemoteProduct(remoteProduct)[2].should.equal('0');
+            partner.splitRemoteProduct(remoteProduct)[3].should.equal('0');
+        })
+
+        it ('should return correctly using slash as separator', function() {
+            const remoteProduct = 'PULSA/THREE5000/0/0';
+            partner.splitRemoteProduct(remoteProduct)[0].should.equal('PULSA');
+            partner.splitRemoteProduct(remoteProduct)[1].should.equal('THREE5000');
+            partner.splitRemoteProduct(remoteProduct)[2].should.equal('0');
+            partner.splitRemoteProduct(remoteProduct)[3].should.equal('0');
+        })
+
+
+    })
 })