diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3f66362
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/node_modules/
+/logs/
+config.js
diff --git a/config.json b/config.json
new file mode 100644
index 0000000..6eaeeb6
--- /dev/null
+++ b/config.json
@@ -0,0 +1,7 @@
+{
+    "listen_port": 25613,
+    "center_port": 25614,
+    "origin": "HTTPGET0",
+    "do_not_prefix_request_id": true,
+    "core_url": "http://localhost:32972/apikey/c47ed08df360a15f9c60e8cfb3020f7d083b3f89"
+}
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..697c40f
--- /dev/null
+++ b/index.js
@@ -0,0 +1,7 @@
+"use strict";
+
+const transport = require('./transport');
+const trxCenter = require('komodo-sdk/center/messaging/trx-center');
+
+transport.init(trxCenter.callback);
+trxCenter.setTransport(transport);
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..e5018ae
--- /dev/null
+++ b/package.json
@@ -0,0 +1,24 @@
+{
+  "name": "komodo-center-httpget",
+  "version": "1.0.0",
+  "description": "Komodo HTTP GET Center",
+  "main": "index.js",
+  "scripts": {
+    "test": "mocha"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git@gitlab.kodesumber.com:komodo/komodo-center-httpget.git"
+  },
+  "keywords": [
+    "komodo",
+    "ppob",
+    "center"
+  ],
+  "author": "Adhidarma Hadiwinoto <me@adhisimon.org>",
+  "license": "ISC",
+  "dependencies": {
+    "komodo-sdk": "git+http://gitlab.kodesumber.com/komodo/komodo-sdk.git",
+    "request": "^2.81.0"
+  }
+}
diff --git a/transport.js b/transport.js
new file mode 100644
index 0000000..4660d24
--- /dev/null
+++ b/transport.js
@@ -0,0 +1,115 @@
+"use strict";
+
+const http = require('http');
+const url = require('url');
+const request = require('request');
+
+const config = require('komodo-sdk/config')
+const logger = require('komodo-sdk/logger');
+
+let _callback;
+
+function createHttpServer() {
+    let listenPort = config.center_port;
+
+    http.createServer(onRequest).listen(listenPort, function() {
+        logger.info('Center HTTP server listen on port ' + listenPort);
+    });;
+}
+
+function onRequest(req, res) {
+
+    let remote_address = req.socket.address().address.replace(/^::ffff:/, '');
+
+    logger.verbose('Got a request from ' + remote_address);
+
+    let qs = url.parse(req.url, true).query;
+
+    let partner = qs.terminal_name + '@' + remote_address;
+    let password = qs.password;
+    let reverse_url = qs.reverse_url;
+
+    let product_name = qs.product_name;
+    let destination = qs.destination;
+    let request_id = qs.request_id;
+
+    if (!qs.terminal_name || !password || !reverse_url || ! product_name || !destination || !request_id) {
+        res.end('INVALID REQUEST');
+        return;
+    }
+
+    let msg = [ product_name, destination, password, request_id ].join('.');
+
+    _callback.onIncomingMessage(
+        {
+            me: config.username,
+            partner: partner,
+            msg: msg.trim(),
+            reverse_url: reverse_url
+        },
+
+        function(err, _result) {
+            let result = cleanResponseToPartner(_result);
+
+            logger.verbose('Forwarding CORE response to partner', _result);
+            res.end(JSON.stringify(result));
+        }
+    )
+}
+
+function cleanResponseToPartner(_data) {
+    let data = JSON.parse(JSON.stringify(_data));
+
+    delete data.origin;
+    delete data.origin_report_ip;
+    delete data.origin_report_port;
+    delete data.reverse_url;
+
+    return data;
+}
+
+function init(cb) {
+    if (!cb) {
+        logger.warn('Callback is not defined');
+        console.trace();
+        process.exit(1);
+        return;
+    }
+
+    _callback = cb;
+
+    createHttpServer();
+}
+
+function send(partner, msg, params) {
+    logger.verbose('Got response from CORE', {partner: partner, msg: msg, params: params});
+
+    if (!params || !params.reverse_url) {
+        logger.verbose('Undefined reverse_url, not forwarding message to partner');
+        return;
+    }
+
+
+    let reqOptions = {
+        url: params.reverse_url,
+        qs: cleanResponseToPartner(params)
+    }
+
+    logger.verbose('Sending reverse report to partner', {request: reqOptions});
+    request(reqOptions, function(err, res, body) {
+        if (err) {
+            logger.warn('Error sending reverse report to partner', {request: reqOptions, err: err});
+            return;
+        }
+
+        if (res.statusCode != 200) {
+            logger.warn('Partner not returning HTTP status code 200 on reverse report', {request: reqOptions, http_status: res.statusCode});
+            return;
+        }
+
+        logger.verbose('Reverse report has been sent to partner', {request: reqOptions});
+    })
+}
+
+exports.init = init;
+exports.send = send;