diff --git a/system/autoload/Balance.php b/system/autoload/Balance.php
index a3686e7d..f6557a3f 100644
--- a/system/autoload/Balance.php
+++ b/system/autoload/Balance.php
@@ -18,15 +18,11 @@ class Balance
     public static function transfer($id_customer, $phoneTarget, $amount)
     {
         global $config;
-        if ($config['allow_balance_transfer'] == 'yes') {
-            if (Balance::min($id_customer, $amount)) {
-                if (Balance::plusByPhone($phoneTarget, $amount)) {
-                    return true;
-                } else {
-                    Balance::plus($id_customer, $amount);
-                    return false;
-                }
+        if (Balance::min($id_customer, $amount)) {
+            if (Balance::plusByPhone($phoneTarget, $amount)) {
+                return true;
             } else {
+                Balance::plus($id_customer, $amount);
                 return false;
             }
         } else {
diff --git a/system/controllers/home.php b/system/controllers/home.php
index 6108d816..a669ca7a 100644
--- a/system/controllers/home.php
+++ b/system/controllers/home.php
@@ -9,11 +9,66 @@ $ui->assign('_title', $_L['Dashboard']);
 $user = User::_info();
 $ui->assign('_user', $user);
 
-if(isset($_GET['renewal'])){
+if (isset($_GET['renewal'])) {
     $user->auto_renewal = $_GET['renewal'];
     $user->save();
 }
 
+if (_post('send') == 'balance') {
+    if ($config['allow_balance_transfer'] == 'yes') {
+        $target = ORM::for_table('tbl_customers')->where('username', _post('username'))->find_one();
+        if (!$target) {
+            r2(U . 'home', 'd', Lang::T('Username not found'));
+        }
+        $username = _post('username');
+        $balance = _post('balance');
+        if ($user['balance'] < $balance) {
+            r2(U . 'home', 'd', Lang::T('insufficient balance'));
+        }
+        if ($user['username'] == $target['username']) {
+            r2(U . 'home', 'd', Lang::T('Cannot send to yourself'));
+        }
+        if(Balance::transfer($user['id'], $username, $balance)){
+            //sender
+            $d = ORM::for_table('tbl_payment_gateway')->create();
+            $d->username = $user['username'];
+            $d->gateway = $target['username'];
+            $d->plan_id = 0;
+            $d->plan_name = 'Send Balance';
+            $d->routers_id = 0;
+            $d->routers = 'balance';
+            $d->price = $balance;
+            $d->payment_method = "Customer";
+            $d->payment_channel = "Balance";
+            $d->created_date = date('Y-m-d H:i:s');
+            $d->paid_date = date('Y-m-d H:i:s');
+            $d->expired_date = date('Y-m-d H:i:s');
+            $d->pg_url_payment = 'balance';
+            $d->status = 2;
+            $d->save();
+            //receiver
+            $d = ORM::for_table('tbl_payment_gateway')->create();
+            $d->username = $target['username'];
+            $d->gateway = $user['username'];
+            $d->plan_id = 0;
+            $d->plan_name = 'Receive Balance';
+            $d->routers_id = 0;
+            $d->routers = 'balance';
+            $d->payment_method = "Customer";
+            $d->payment_channel = "Balance";
+            $d->price = $balance;
+            $d->created_date = date('Y-m-d H:i:s');
+            $d->paid_date = date('Y-m-d H:i:s');
+            $d->expired_date = date('Y-m-d H:i:s');
+            $d->pg_url_payment = 'balance';
+            $d->status = 2;
+            $d->save();
+            r2(U . 'home', 's', Lang::T('Sending balance success'));
+        }
+    }else{
+        r2(U . 'home', 'd', 'Failed, balance is not available');
+    }
+}
 
 //Client Page
 $bill = User::_billing();
@@ -27,7 +82,7 @@ if (!empty($_SESSION['nux-mac']) && !empty($_SESSION['nux-ip'])) {
         $c = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']);
         Mikrotik::logMeIn($c, $user['username'], $user['password'], $_SESSION['nux-ip'], $_SESSION['nux-mac']);
         r2(U . 'home', 's', Lang::T('Login Request successfully'));
-    }else if ($_GET['mikrotik'] == 'logout') {
+    } else if ($_GET['mikrotik'] == 'logout') {
         $m = Mikrotik::info($bill['routers']);
         $c = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']);
         Mikrotik::logMeOut($c, $user['username']);
diff --git a/system/controllers/order.php b/system/controllers/order.php
index 68ac4eec..d665889b 100644
--- a/system/controllers/order.php
+++ b/system/controllers/order.php
@@ -63,7 +63,7 @@ switch ($action) {
         }
         break;
     case 'view':
-        $trxid = $routes['2'] * 1;
+        $trxid = $routes['2'];
         $trx = ORM::for_table('tbl_payment_gateway')
             ->where('username', $user['username'])
             ->find_one($trxid);
diff --git a/system/lan/english/common.lan.php b/system/lan/english/common.lan.php
index a5c1457e..d5f7e152 100644
--- a/system/lan/english/common.lan.php
+++ b/system/lan/english/common.lan.php
@@ -371,4 +371,11 @@ $_L['Success_to_buy_package'] = 'Success to buy package';
 $_L['Auto_Renewal'] = 'Auto Renewal';
 $_L['View'] = 'View';
 $_L['Back'] = 'Back';
-$_L['Active'] = 'Active';
+$_L['Active'] = 'Active';
+$_L['Transfer_Balance'] = 'Transfer Balance';
+$_L['Send_your_balance'] = 'Send your balance?';
+$_L['Send'] = 'Send';
+$_L['Cannot_send_to_yourself'] = 'Cannot send to yourself';
+$_L['Sending_balance_success'] = 'Sending balance success';
+$_L['From'] = 'From';
+$_L['To'] = 'To';
diff --git a/ui/ui/user-dashboard.tpl b/ui/ui/user-dashboard.tpl
index 80851465..29462ac8 100644
--- a/ui/ui/user-dashboard.tpl
+++ b/ui/ui/user-dashboard.tpl
@@ -138,6 +138,30 @@
                 }, 2000);
             </script>
         {/if}
+        {if $_c['enable_balance'] == 'yes'}
+            <div class="box box-primary box-solid mb30">
+                <div class="box-header">
+                    <h4 class="box-title">{Lang::T("Transfer Balance")}</h4>
+                </div>
+                <div class="box-body p-0">
+                    <form method="post" onsubmit="return confirm('{Lang::T('Send your balance?')}')" role="form" action="{$_url}home">
+                        <div class="form-group">
+                            <div class="col-sm-5">
+                                <input type="text" id="username" name="username" class="form-control" required
+                                    placeholder="{$_L['Username']}">
+                            </div>
+                            <div class="col-sm-5">
+                                <input type="number" id="balance" name="balance" autocomplete="off" class="form-control" required
+                                    placeholder="{$_L['Balance']}">
+                            </div>
+                            <div class="form-group col-sm-2" align="center">
+                                <button class="btn btn-success btn-block" type="submit" name="send" value="balance"><i class="glyphicon glyphicon-send"></i></button>
+                            </div>
+                        </div>
+                    </form>
+                </div>
+            </div>
+        {/if}
         <br>
         {if $_c['disable_voucher'] != 'yes'}
             <div class="box box-primary box-solid mb30">
diff --git a/ui/ui/user-orderView.tpl b/ui/ui/user-orderView.tpl
index 48c2006a..6a090412 100644
--- a/ui/ui/user-orderView.tpl
+++ b/ui/ui/user-orderView.tpl
@@ -6,7 +6,7 @@
         <div
             class="panel mb20 {if $trx['status']==1}panel-warning{elseif $trx['status']==2}panel-success{elseif $trx['status']==3}panel-danger{elseif $trx['status']==4}panel-danger{else}panel-primary{/if} panel-hovered">
             <div class="panel-footer">Transaction #{$trx['id']}</div>
-            {if $plan['type']!='Balance'}
+            {if $trx['routers']!='balance'}
                 <div class="panel-body">
                     <div class="panel panel-primary panel-hovered">
                         <div class="panel-heading">{$router['name']}</div>
@@ -17,70 +17,98 @@
                 </div>
             {/if}
             <div class="table-responsive">
-                <table class="table table-bordered table-striped table-bordered">
-                    <tbody>
-                        <tr>
-                            <td>{Lang::T('Status')}</td>
-                            <td>{if $trx['status']==1}{Lang::T('UNPAID')}{elseif $trx['status']==2}{Lang::T('PAID')}{elseif $trx['status']==3}{Lang::T('FAILED')}{elseif $trx['status']==4}{Lang::T('CANCELED')}{else}{Lang::T('UNKNOWN')}{/if}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td>{Lang::T('expired')}</td>
-                            <td>{date($_c['date_format'], strtotime($trx['expired_date']))}
-                                {date('H:i', strtotime($trx['expired_date']))} </td>
-                        </tr>
-                        {if $trx['status']==2}
+                {if $trx['pg_url_payment']=='balance'}
+                    <table class="table table-bordered table-striped table-bordered">
+                        <tbody>
+                            <tr>
+                                <td>{Lang::T('Type')}</td>
+                                <td>{$trx['plan_name']}</td>
+                            </tr>
                             <tr>
                                 <td>{Lang::T('Paid Date')}</td>
                                 <td>{date($_c['date_format'], strtotime($trx['paid_date']))}
                                     {date('H:i', strtotime($trx['paid_date']))} </td>
                             </tr>
-                        {/if}
-                        <tr>
-                            <td>{$_L['Plan_Name']}</td>
-                            <td>{$plan['name_plan']}</td>
-                        </tr>
-                        <tr>
-                            <td>{$_L['Plan_Price']}</td>
-                            <td>{Lang::moneyFormat($plan['price'])}</td>
-                        </tr>
-                        <tr>
-                            <td>{Lang::T('Type')}</td>
-                            <td>{$plan['type']}</td>
-                        </tr>
-                        {if $plan['type']!='Balance'}
-                            {if $plan['type'] eq 'Hotspot'}
-                                <tr>
-                                    <td>{Lang::T('Plan_Type')}</td>
-                                    <td>{Lang::T($plan['typebp'])}</td>
-                                </tr>
-                                {if $plan['typebp'] eq 'Limited'}
-                                    {if $plan['limit_type'] eq 'Time_Limit' or $plan['limit_type'] eq 'Both_Limit'}
-                                        <tr>
-                                            <td>{Lang::T('Time_Limit')}</td>
-                                            <td>{$ds['time_limit']} {$ds['time_unit']}</td>
-                                        </tr>
-                                    {/if}
-                                    {if $plan['limit_type'] eq 'Data_Limit' or $plan['limit_type'] eq 'Both_Limit'}
-                                        <tr>
-                                            <td>{Lang::T('Data_Limit')}</td>
-                                            <td>{$ds['data_limit']} {$ds['data_unit']}</td>
-                                        </tr>
-                                    {/if}
-                                {/if}
-                            {/if}
                             <tr>
-                                <td>{$_L['Plan_Validity']}</td>
-                                <td>{$plan['validity']} {$plan['validity_unit']}</td>
+                            {if $trx['plan_name'] == 'Receive Balance'}
+                                <td>{Lang::T('From')}</td>
+                                {else}
+                                    <td>{Lang::T('To')}</td>
+                                {/if}
+                                <td>{$trx['gateway']}</td>
                             </tr>
                             <tr>
-                                <td>{$_L['Bandwidth_Plans']}</td>
-                                <td>{$bandw['name_bw']}<br>{$bandw['rate_down']}{$bandw['rate_down_unit']}/{$bandw['rate_up']}{$bandw['rate_up_unit']}
+                                <td>{$_L['Balance']}</td>
+                                <td>{Lang::moneyFormat($trx['price'])}</td>
+                            </tr>
+                        </tbody>
+                    </table>
+                {else}
+                    <table class="table table-bordered table-striped table-bordered">
+                        <tbody>
+                            <tr>
+                                <td>{Lang::T('Status')}</td>
+                                <td>{if $trx['status']==1}{Lang::T('UNPAID')}{elseif $trx['status']==2}{Lang::T('PAID')}{elseif $trx['status']==3}{Lang::T('FAILED')}{elseif $trx['status']==4}{Lang::T('CANCELED')}{else}{Lang::T('UNKNOWN')}{/if}
                                 </td>
                             </tr>
-                        {/if}
-                    </tbody>
-                </table>
+                            <tr>
+                                <td>{Lang::T('expired')}</td>
+                                <td>{date($_c['date_format'], strtotime($trx['expired_date']))}
+                                    {date('H:i', strtotime($trx['expired_date']))} </td>
+                            </tr>
+                            {if $trx['status']==2}
+                                <tr>
+                                    <td>{Lang::T('Paid Date')}</td>
+                                    <td>{date($_c['date_format'], strtotime($trx['paid_date']))}
+                                        {date('H:i', strtotime($trx['paid_date']))} </td>
+                                </tr>
+                            {/if}
+                            <tr>
+                                <td>{$_L['Plan_Name']}</td>
+                                <td>{$plan['name_plan']}</td>
+                            </tr>
+                            <tr>
+                                <td>{$_L['Plan_Price']}</td>
+                                <td>{Lang::moneyFormat($plan['price'])}</td>
+                            </tr>
+                            <tr>
+                                <td>{Lang::T('Type')}</td>
+                                <td>{$plan['type']}</td>
+                            </tr>
+                            {if $plan['type']!='Balance'}
+                                {if $plan['type'] eq 'Hotspot'}
+                                    <tr>
+                                        <td>{Lang::T('Plan_Type')}</td>
+                                        <td>{Lang::T($plan['typebp'])}</td>
+                                    </tr>
+                                    {if $plan['typebp'] eq 'Limited'}
+                                        {if $plan['limit_type'] eq 'Time_Limit' or $plan['limit_type'] eq 'Both_Limit'}
+                                            <tr>
+                                                <td>{Lang::T('Time_Limit')}</td>
+                                                <td>{$ds['time_limit']} {$ds['time_unit']}</td>
+                                            </tr>
+                                        {/if}
+                                        {if $plan['limit_type'] eq 'Data_Limit' or $plan['limit_type'] eq 'Both_Limit'}
+                                            <tr>
+                                                <td>{Lang::T('Data_Limit')}</td>
+                                                <td>{$ds['data_limit']} {$ds['data_unit']}</td>
+                                            </tr>
+                                        {/if}
+                                    {/if}
+                                {/if}
+                                <tr>
+                                    <td>{$_L['Plan_Validity']}</td>
+                                    <td>{$plan['validity']} {$plan['validity_unit']}</td>
+                                </tr>
+                                <tr>
+                                    <td>{$_L['Bandwidth_Plans']}</td>
+                                    <td>{$bandw['name_bw']}<br>{$bandw['rate_down']}{$bandw['rate_down_unit']}/{$bandw['rate_up']}{$bandw['rate_up_unit']}
+                                    </td>
+                                </tr>
+                            {/if}
+                        </tbody>
+                    </table>
+                {/if}
             </div>
             {if $trx['status']==1}
                 <div class="panel-footer ">