diff --git a/pages_template/Email.html b/pages_template/Email.html
index 8979a620..f58869aa 100644
--- a/pages_template/Email.html
+++ b/pages_template/Email.html
@@ -138,8 +138,9 @@
                                 <td class="content-block"
                                     style="font-family: Helvetica, sans-serif; vertical-align: top; color: #9a9ea6; font-size: 16px; text-align: center;"
                                     valign="top" align="center">
+                                    <p>
                                     <span class="apple-link"
-                                        style="color: #9a9ea6; font-size: 16px; text-align: center;">[[Company_Address]]</span>
+                                        style="color: #9a9ea6; font-size: 16px; text-align: center;">[[Company_Address]]</span></p>
                                 </td>
                             </tr>
                         </table>
diff --git a/system/autoload/Package.php b/system/autoload/Package.php
index a04d5e6d..3883a8e8 100644
--- a/system/autoload/Package.php
+++ b/system/autoload/Package.php
@@ -44,8 +44,12 @@ class Package
                 _alert(Lang::T('This account status') . ' : ' . Lang::T($c['status']), 'danger', "");
             }
         }else{
-            $c['username'] = $channel;
-            $c['fullname'] = $gateway;
+            $c = [
+                'fullname' => $gateway,
+                'email' => '',
+                'username' => $channel,
+                'password' => $channel,
+            ];
         }
 
         $add_cost = 0;
@@ -146,7 +150,8 @@ class Package
         /**
          * 1 Customer only can have 1 PPPOE and 1 Hotspot Plan, 1 prepaid and 1 postpaid
          */
-        $b = ORM::for_table('tbl_user_recharges')
+
+        $query = ORM::for_table('tbl_user_recharges')
             ->select('tbl_user_recharges.id', 'id')
             ->select('customer_id')
             ->select('username')
@@ -162,14 +167,18 @@ class Package
             ->select('tbl_user_recharges.type', 'type')
             ->select('admin_id')
             ->select('prepaid')
-            ->where('customer_id', $id_customer)
             ->where('tbl_user_recharges.routers', $router_name)
             ->where('tbl_user_recharges.Type', $p['type'])
             # PPPOE or Hotspot only can have 1 per customer prepaid or postpaid
             # because 1 customer can have 1 PPPOE and 1 Hotspot Plan in mikrotik
             //->where('prepaid', $p['prepaid'])
-            ->left_outer_join('tbl_plans', array('tbl_plans.id', '=', 'tbl_user_recharges.plan_id'))
-            ->find_one();
+            ->left_outer_join('tbl_plans', array('tbl_plans.id', '=', 'tbl_user_recharges.plan_id'));
+        if($isVoucher){
+            $query->where('username', $c['username']);
+        }else{
+            $query->where('customer_id', $id_customer);
+        }
+        $b = $query->find_one();
 
         run_hook("recharge_user");
 
diff --git a/system/controllers/login.php b/system/controllers/login.php
index 9190a2b3..c931e5c6 100644
--- a/system/controllers/login.php
+++ b/system/controllers/login.php
@@ -56,134 +56,235 @@ switch ($do) {
         break;
 
     case 'activation':
-        $voucher = _post('voucher');
-        $username = _post('username');
-        $v1 = ORM::for_table('tbl_voucher')->where('code', $voucher)->find_one();
-        if ($v1) {
-            // voucher exists, check customer exists or not
-            $user = ORM::for_table('tbl_customers')->where('username', $username)->find_one();
-            if (!$user) {
-                $d = ORM::for_table('tbl_customers')->create();
-                $d->username = alphanumeric($username, "+_.@-");
-                $d->password = $voucher;
-                $d->fullname = '';
-                $d->address = '';
-                $d->email = '';
-                $d->phonenumber = (strlen($username) < 21) ? $username : '';
-                if ($d->save()) {
-                    $user = ORM::for_table('tbl_customers')->where('username', $username)->find_one($d->id());
-                    if (!$user) {
-                        r2(U . 'login', 'e', Lang::T('Voucher activation failed'));
-                    }
-                } else {
-                    _alert(Lang::T('Login Successful'), 'success', "dashboard");
-                    r2(U . 'login', 'e', Lang::T('Voucher activation failed') . '.');
+        if (!empty(_post('voucher_only'))) {
+            $voucher = _post('voucher_only');
+            $tur = ORM::for_table('tbl_user_recharges')
+                ->where('username', $voucher)
+                ->where('customer_id', '0') // Voucher Only will make customer ID as 0
+                ->find_one();
+            if ($tur) {
+                if ($tur['status'] == 'off') {
+                    _alert(Lang::T('Internet Voucher Expired'), 'danger', "login");
                 }
-            }
-            if ($v1['status'] == 0) {
-                $oldPass = $user['password'];
-                // change customer password to voucher code
-                $user->password = $voucher;
-                $user->save();
-                // voucher activation
-                if (Package::rechargeUser($user['id'], $v1['routers'], $v1['id_plan'], "Voucher", $voucher)) {
-                    $v1->status = "1";
-                    $v1->user = $user['username'];
-                    $v1->save();
-                    $user->last_login = date('Y-m-d H:i:s');
-                    $user->save();
-                    // add customer to mikrotik
-                    if (!empty($_SESSION['nux-mac']) && !empty($_SESSION['nux-ip'])) {
-                        try {
-                            $p = ORM::for_table('tbl_plans')->where('id', $v1['id_plan'])->find_one();
-                            $dvc = Package::getDevice($p);
-                            if ($_app_stage != 'demo') {
-                                if (file_exists($dvc)) {
-                                    require_once $dvc;
-                                    (new $p['device'])->connect_customer($user, $_SESSION['nux-ip'], $_SESSION['nux-mac'], $v1['routers']);
-                                    if (!empty($config['voucher_redirect'])) {
-                                        r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
-                                    } else {
-                                        r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
-                                    }
-                                } else {
-                                    new Exception(Lang::T("Devices Not Found"));
-                                }
-                            }
-                            if (!empty($config['voucher_redirect'])) {
-                                r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, you are connected to internet"));
+                $p = ORM::for_table('tbl_plans')->where('id', $tur['plan_id'])->find_one();
+                if ($p) {
+                    $dvc = Package::getDevice($p);
+                    if ($_app_stage != 'demo') {
+                        if (file_exists($dvc)) {
+                            if (file_exists($dvc)) {
+                                require_once $dvc;
+                                $c = [
+                                    'fullname' => "Voucher",
+                                    'email' => '',
+                                    'username' => $voucher,
+                                    'password' => $voucher,
+                                ];
+                                (new $p['device'])->add_customer($c, $p);
                             } else {
-                                r2(U . "login", 's', Lang::T("Voucher activation success, you are connected to internet"));
+                                new Exception(Lang::T("Devices Not Found"));
                             }
-                        } catch (Exception $e) {
                             if (!empty($config['voucher_redirect'])) {
                                 r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
                             } else {
                                 r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
                             }
+                        } else {
+                            new Exception(Lang::T("Devices Not Found"));
                         }
                     }
                     if (!empty($config['voucher_redirect'])) {
-                        r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
+                        _alert(Lang::T("Voucher activation success, now you can login"), 'danger', $config['voucher_redirect']);
                     } else {
-                        r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
+                        r2(U . "login", 's', Lang::T("Voucher activation success, you are connected to internet"));
                     }
                 } else {
-                    // if failed to recharge, restore old password
-                    $user->password = $oldPass;
-                    $user->save();
-                    r2(U . 'login', 'e', Lang::T("Failed to activate voucher"));
+                    _alert(Lang::T('Internet Plan Expired'), 'danger', "login");
                 }
             } else {
-                // used voucher
-                // check if voucher used by this username
-                if ($v1['user'] == $user['username']) {
-                    $user->last_login = date('Y-m-d H:i:s');
-                    $user->save();
-                    if (!empty($_SESSION['nux-mac']) && !empty($_SESSION['nux-ip'])) {
-                        try {
-                            $p = ORM::for_table('tbl_plans')->where('id', $v1['id_plan'])->find_one();
-                            $dvc = Package::getDevice($p);
-                            if ($_app_stage != 'demo') {
-                                if (file_exists($dvc)) {
-                                    require_once $dvc;
-                                    (new $p['device'])->connect_customer($user, $_SESSION['nux-ip'], $_SESSION['nux-mac'], $v1['routers']);
-                                    if (!empty($config['voucher_redirect'])) {
-                                        r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
+                $v = ORM::for_table('tbl_voucher')->where('code', $voucher)->find_one();
+                if (!$v) {
+                    _alert(Lang::T('Voucher invalid'), 'danger', "login");
+                }
+                if ($v['status'] == 0) {
+                    if (Package::rechargeUser(0, $v['routers'], $v['id_plan'], "Voucher", $voucher)) {
+                        $v->status = "1";
+                        $v->save();
+                        $tur = ORM::for_table('tbl_user_recharges')->where('username', $voucher)->find_one();
+                        if ($tur) {
+                            $p = ORM::for_table('tbl_plans')->where('id', $tur['plan_id'])->find_one();
+                            if ($p) {
+                                $dvc = Package::getDevice($p);
+                                if ($_app_stage != 'demo') {
+                                    if (file_exists($dvc)) {
+                                        if (file_exists($dvc)) {
+                                            require_once $dvc;
+                                            $c = [
+                                                'fullname' => "Voucher",
+                                                'email' => '',
+                                                'username' => $voucher,
+                                                'password' => $voucher,
+                                            ];
+                                            (new $p['device'])->add_customer($c, $p);
+                                        } else {
+                                            new Exception(Lang::T("Devices Not Found"));
+                                        }
+                                        if (!empty($config['voucher_redirect'])) {
+                                            r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
+                                        } else {
+                                            r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
+                                        }
                                     } else {
-                                        r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
+                                        new Exception(Lang::T("Devices Not Found"));
                                     }
+                                }
+                                if (!empty($config['voucher_redirect'])) {
+                                    _alert(Lang::T("Voucher activation success, now you can login"), 'danger', $config['voucher_redirect']);
                                 } else {
-                                    new Exception(Lang::T("Devices Not Found"));
+                                    r2(U . "login", 's', Lang::T("Voucher activation success, you are connected to internet"));
+                                }
+                            } else {
+                                _alert(Lang::T('Internet Plan Expired'), 'danger', "login");
+                            }
+                        } else {
+                            _alert(Lang::T('Voucher activation failed'), 'danger', "login");
+                        }
+                    } else {
+                        _alert(Lang::T('Voucher activation failed'), 'danger', "login");
+                    }
+                } else {
+                    _alert(Lang::T('Internet Voucher Expired'), 'danger', "login");
+                }
+            }
+        } else {
+            $voucher = _post('voucher');
+            $username = _post('username');
+            $v1 = ORM::for_table('tbl_voucher')->where('code', $voucher)->find_one();
+            if ($v1) {
+                // voucher exists, check customer exists or not
+                $user = ORM::for_table('tbl_customers')->where('username', $username)->find_one();
+                if (!$user) {
+                    $d = ORM::for_table('tbl_customers')->create();
+                    $d->username = alphanumeric($username, "+_.@-");
+                    $d->password = $voucher;
+                    $d->fullname = '';
+                    $d->address = '';
+                    $d->email = '';
+                    $d->phonenumber = (strlen($username) < 21) ? $username : '';
+                    if ($d->save()) {
+                        $user = ORM::for_table('tbl_customers')->where('username', $username)->find_one($d->id());
+                        if (!$user) {
+                            r2(U . 'login', 'e', Lang::T('Voucher activation failed'));
+                        }
+                    } else {
+                        _alert(Lang::T('Login Successful'), 'success', "dashboard");
+                        r2(U . 'login', 'e', Lang::T('Voucher activation failed') . '.');
+                    }
+                }
+                if ($v1['status'] == 0) {
+                    $oldPass = $user['password'];
+                    // change customer password to voucher code
+                    $user->password = $voucher;
+                    $user->save();
+                    // voucher activation
+                    if (Package::rechargeUser($user['id'], $v1['routers'], $v1['id_plan'], "Voucher", $voucher)) {
+                        $v1->status = "1";
+                        $v1->user = $user['username'];
+                        $v1->save();
+                        $user->last_login = date('Y-m-d H:i:s');
+                        $user->save();
+                        // add customer to mikrotik
+                        if (!empty($_SESSION['nux-mac']) && !empty($_SESSION['nux-ip'])) {
+                            try {
+                                $p = ORM::for_table('tbl_plans')->where('id', $v1['id_plan'])->find_one();
+                                $dvc = Package::getDevice($p);
+                                if ($_app_stage != 'demo') {
+                                    if (file_exists($dvc)) {
+                                        require_once $dvc;
+                                        (new $p['device'])->connect_customer($user, $_SESSION['nux-ip'], $_SESSION['nux-mac'], $v1['routers']);
+                                        if (!empty($config['voucher_redirect'])) {
+                                            r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
+                                        } else {
+                                            r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
+                                        }
+                                    } else {
+                                        new Exception(Lang::T("Devices Not Found"));
+                                    }
+                                }
+                                if (!empty($config['voucher_redirect'])) {
+                                    r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, you are connected to internet"));
+                                } else {
+                                    r2(U . "login", 's', Lang::T("Voucher activation success, you are connected to internet"));
+                                }
+                            } catch (Exception $e) {
+                                if (!empty($config['voucher_redirect'])) {
+                                    r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
+                                } else {
+                                    r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
                                 }
                             }
+                        }
+                        if (!empty($config['voucher_redirect'])) {
+                            r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
+                        } else {
+                            r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
+                        }
+                    } else {
+                        // if failed to recharge, restore old password
+                        $user->password = $oldPass;
+                        $user->save();
+                        r2(U . 'login', 'e', Lang::T("Failed to activate voucher"));
+                    }
+                } else {
+                    // used voucher
+                    // check if voucher used by this username
+                    if ($v1['user'] == $user['username']) {
+                        $user->last_login = date('Y-m-d H:i:s');
+                        $user->save();
+                        if (!empty($_SESSION['nux-mac']) && !empty($_SESSION['nux-ip'])) {
+                            try {
+                                $p = ORM::for_table('tbl_plans')->where('id', $v1['id_plan'])->find_one();
+                                $dvc = Package::getDevice($p);
+                                if ($_app_stage != 'demo') {
+                                    if (file_exists($dvc)) {
+                                        require_once $dvc;
+                                        (new $p['device'])->connect_customer($user, $_SESSION['nux-ip'], $_SESSION['nux-mac'], $v1['routers']);
+                                        if (!empty($config['voucher_redirect'])) {
+                                            r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
+                                        } else {
+                                            r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
+                                        }
+                                    } else {
+                                        new Exception(Lang::T("Devices Not Found"));
+                                    }
+                                }
+                                if (!empty($config['voucher_redirect'])) {
+                                    r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, you are connected to internet"));
+                                } else {
+                                    r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
+                                }
+                            } catch (Exception $e) {
+                                if (!empty($config['voucher_redirect'])) {
+                                    r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
+                                } else {
+                                    r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
+                                }
+                            }
+                        } else {
                             if (!empty($config['voucher_redirect'])) {
                                 r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, you are connected to internet"));
                             } else {
                                 r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
                             }
-                        } catch (Exception $e) {
-                            if (!empty($config['voucher_redirect'])) {
-                                r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
-                            } else {
-                                r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
-                            }
                         }
                     } else {
-                        if (!empty($config['voucher_redirect'])) {
-                            r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, you are connected to internet"));
-                        } else {
-                            r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
-                        }
+                        // voucher used by other customer
+                        r2(U . 'login', 'e', Lang::T('Voucher Not Valid'));
                     }
-                } else {
-                    // voucher used by other customer
-                    r2(U . 'login', 'e', Lang::T('Voucher Not Valid'));
                 }
+            } else {
+                _msglog('e', Lang::T('Invalid Username or Password'));
+                r2(U . 'login');
             }
-        } else {
-            _msglog('e', Lang::T('Invalid Username or Password'));
-            r2(U . 'login');
         }
     default:
         run_hook('customer_view_login'); #HOOK
diff --git a/system/lan/english.json b/system/lan/english.json
index d37266f4..a8dfe950 100644
--- a/system/lan/english.json
+++ b/system/lan/english.json
@@ -653,7 +653,11 @@
     "Http_Chap": "Http-Chap",
     "Hotspot_Authentication_Method__Make_sure_you_have_changed_your_hotspot_login_page_": "Hotspot Authentication Method. Make sure you have changed your hotspot login page.",
     "Business": "Business",
-    "": "",
     "Source": "Source",
-    "Destination": "Destination"
+    "Destination": "Destination",
+    "Activate_Voucher": "Activate Voucher",
+    "Voucher_invalid": "Voucher invalid",
+    "Account_Not_Found": "Account Not Found",
+    "Voucher_activation_success__now_you_can_login": "Voucher activation success, now you can login",
+    "Internet_Voucher_Expired": "Internet Voucher Expired"
 }
\ No newline at end of file
diff --git a/ui/ui/user-login-noreg.tpl b/ui/ui/user-login-noreg.tpl
index e3d186e7..c1163695 100644
--- a/ui/ui/user-login-noreg.tpl
+++ b/ui/ui/user-login-noreg.tpl
@@ -60,10 +60,12 @@
                             <div class="form-group">
                                 <label>{Lang::T('Enter voucher code here')}</label>
                                 <div class="input-group">
-                                    <input type="text" class="form-control" id="voucher" name="voucher" required value="{$code}"
-                                        placeholder="{Lang::T('Enter voucher code here')}">
+                                    <input type="text" class="form-control" id="voucher" name="voucher" required
+                                        value="{$code}" placeholder="{Lang::T('Enter voucher code here')}">
                                     <span class="input-group-btn">
-                                        <a class="btn btn-default" href="{APP_URL}/scan/?back={urlencode($_url)}{urlencode("login&code=")}"><i class="glyphicon glyphicon-qrcode"></i></a>
+                                        <a class="btn btn-default"
+                                            href="{APP_URL}/scan/?back={urlencode($_url)}{urlencode("login&code=")}"><i
+                                                class="glyphicon glyphicon-qrcode"></i></a>
                                     </span>
                                 </div>
                             </div>
@@ -73,15 +75,40 @@
                                         class="btn btn-primary">{Lang::T('Login / Activate Voucher')}</button>
                                 </div>
                             </div>
-                            <br>
-                            <center>
-                                <a href="./pages/Privacy_Policy.html" target="_blank">Privacy</a>
-                                &bull;
-                                <a href="./pages/Terms_of_Conditions.html" target="_blank">ToC</a>
-                            </center>
                         </form>
                     </div>
                 </div>
+                <div class="panel panel-primary">
+                    <div class="panel-heading">{Lang::T('Activate Voucher')}</div>
+                    <div class="panel-body">
+                        <form action="{$_url}login/activation" method="post">
+                            <div class="form-group">
+                                <label>{Lang::T('Enter voucher code here')}</label>
+                                <div class="input-group">
+                                    <input type="text" class="form-control" id="voucher_only" name="voucher_only" required
+                                        value="{$code}" placeholder="{Lang::T('Enter voucher code here')}">
+                                    <span class="input-group-btn">
+                                        <a class="btn btn-default"
+                                            href="{APP_URL}/scan/?back={urlencode($_url)}{urlencode("login&code=")}"><i
+                                                class="glyphicon glyphicon-qrcode"></i></a>
+                                    </span>
+                                </div>
+                            </div>
+                            <div class="btn-group btn-group-justified mb15">
+                                <div class="btn-group">
+                                    <button type="submit"
+                                        class="btn btn-primary">{Lang::T('Activate Voucher')}</button>
+                                </div>
+                            </div>
+                        </form>
+                    </div>
+                </div>
+                <br>
+                <center>
+                    <a href="./pages/Privacy_Policy.html" target="_blank">Privacy</a>
+                    &bull;
+                    <a href="./pages/Terms_of_Conditions.html" target="_blank">ToC</a>
+                </center>
             </div>
         </div>
     </div>