diff --git a/xmlrpc-server.js b/xmlrpc-server.js
index e4d744a..bc2f117 100644
--- a/xmlrpc-server.js
+++ b/xmlrpc-server.js
@@ -102,13 +102,26 @@ function createDiyHttpXmlRpcServer() {
                 params = getXmlRpcParam(_params);
                 logger.verbose('Got XMLRPC request', {method: method, params: params});
 
-                sendToMaster(params, req.connection.remoteAddress, function(forwardError) {
-                    if (forwardError) {
-                        immediateReply(params, res, '40', forwardError.toString());
-                    } else {
-                        immediateReply(params, res, '68');
-                    }
-                });
+                if (method == 'topUpRequest') {
+
+                    sendTopUpRequestToMaster(params, req.connection.remoteAddress, function(forwardError) {
+                        if (forwardError) {
+                            immediateReply(params, res, '40', forwardError.toString());
+                        } else {
+                            immediateReply(params, res, '68');
+                        }
+                    });
+
+                }
+                else if (method == 'topUpInquiry') {
+
+                    sendTopUpInquryToMaster(params, req.connection.remoteAddress, res);
+
+                }
+                else {
+                    res.end('Invalid method');
+                }
+
 
             })
         });
@@ -205,7 +218,74 @@ function composeMessage(params, remoteAddress) {
 
 }
 
-function sendToMaster(param, remoteAddress, callback) {
+function inquiryReply(responseCode, message, responseToClient) {
+    var responseData = {
+        'RESPONSECODE': responseCode,
+        'MESSAGE': message
+    }
+
+    var responseBody = composeXmlRpcResponse(responseData)
+    logger.info("Sending inquiry response", {responseData: responseData});
+
+    responseToClient.writeHead(200, {'Content-Type': 'text/xml'});
+    responseToClient.end(responseBody);
+}
+
+function parseTopUpInquiryResponse(raw) {
+    var tokens = raw.split('$');
+    if (tokens.length < 2) {
+        return {
+            responseCode: '68',
+            message: 'Gagal parsing hasil inquiry'
+        }
+    }
+
+    var responseCode = tokens[0];
+    var message = '';
+
+    for (var i = 1; i < tokens.length; i++) {
+        message += '$' + tokens[i];
+    }
+
+    return {
+        responseCode: responseCode,
+        message: message.replace('$', '')
+    }
+}
+
+function sendTopUpInquryToMaster(params, remoteAddress, responseToClient) {
+    if (!config.inquiry_url) {
+        inquiryReply('68', 'Inquiry server tidak terdaftar');
+        return;
+    }
+
+    var requestOpts = {
+		url: config.inquiry_url,
+		qs: {
+            REQUESTID: params.REQUESTID,
+			MSISDN: param.MSISDN,
+			PIN: params.PIN,
+			NO_HP: params.NO_HP,
+            TRUST: 'NO_TRUST',
+            IP_ADDR: remoteAddress
+		}
+	};
+
+    request(requestOpts, function(requestError, response, body) {
+
+        if (requestError) {
+            logger.warn('Error requesting to inquiry server: ' + requestError);
+            inquiryReply('68', 'Gagal konek ke inquiry server', responseToClient);
+            return;
+        }
+
+        logger.info('Got response from inquiry server', {body: body, requestOpts: requestOpts});
+        var params = parseTopUpInquiryResponse(body);
+        inquiryReply(params.responseCode, params.message, responseToClient);
+    })
+}
+
+function sendTopUpRequestToMaster(param, remoteAddress, callback) {
 
     /*
     var smscidSuffix = '99999999999999' + String(Math.round(Math.random() * 99999999999999));