fetchBalance edits
diff --git a/js/bitbank.js b/js/bitbank.js
index 914b3367d9d9..c3626b01ff87 100644
--- a/js/bitbank.js
+++ b/js/bitbank.js
@@ -314,14 +314,13 @@ module.exports = class bitbank extends Exchange {
             const balance = assets[i];
             const currencyId = this.safeString (balance, 'asset');
             const code = this.safeCurrencyCode (currencyId);
-            const account = {
-                'free': this.safeNumber (balance, 'free_amount'),
-                'used': this.safeNumber (balance, 'locked_amount'),
-                'total': this.safeNumber (balance, 'onhand_amount'),
-            };
+            const account = this.account ();
+            account['free'] = this.safeString (balance, 'free_amount');
+            account['used'] = this.safeString (balance, 'locked_amount');
+            account['total'] = this.safeString (balance, 'onhand_amount');
             result[code] = account;
         }
-        return this.parseBalance (result);
+        return this.parseBalance (result, false);
     }
 
     parseOrderStatus (status) {
diff --git a/js/bitso.js b/js/bitso.js
index a37c07fc338e..defcece54973 100644
--- a/js/bitso.js
+++ b/js/bitso.js
@@ -232,14 +232,13 @@ module.exports = class bitso extends Exchange {
             const balance = balances[i];
             const currencyId = this.safeString (balance, 'currency');
             const code = this.safeCurrencyCode (currencyId);
-            const account = {
-                'free': this.safeNumber (balance, 'available'),
-                'used': this.safeNumber (balance, 'locked'),
-                'total': this.safeNumber (balance, 'total'),
-            };
+            const account = this.account ();
+            account['free'] = this.safeString (balance, 'available');
+            account['used'] = this.safeString (balance, 'locked');
+            account['total'] = this.safeString (balance, 'total');
             result[code] = account;
         }
-        return this.parseBalance (result);
+        return this.parseBalance (result, false);
     }
 
     async fetchOrderBook (symbol, limit = undefined, params = {}) {
diff --git a/js/bitvavo.js b/js/bitvavo.js
index b4b92b3939d6..ef66620ca81b 100644
--- a/js/bitvavo.js
+++ b/js/bitvavo.js
@@ -742,13 +742,12 @@ module.exports = class bitvavo extends Exchange {
             const balance = response[i];
             const currencyId = this.safeString (balance, 'symbol');
             const code = this.safeCurrencyCode (currencyId);
-            const account = {
-                'free': this.safeNumber (balance, 'available'),
-                'used': this.safeNumber (balance, 'inOrder'),
-            };
+            const account = this.account ();
+            account['free'] = this.safeString (balance, 'available');
+            account['used'] = this.safeString (balance, 'inOrder');
             result[code] = account;
         }
-        return this.parseBalance (result);
+        return this.parseBalance (result, false);
     }
 
     async fetchDepositAddress (code, params = {}) {
diff --git a/js/btctradeua.js b/js/btctradeua.js
index bd3b77b7105c..32527f881954 100644
--- a/js/btctradeua.js
+++ b/js/btctradeua.js
@@ -107,10 +107,10 @@ module.exports = class btctradeua extends Exchange {
             const currencyId = this.safeString (balance, 'currency');
             const code = this.safeCurrencyCode (currencyId);
             const account = this.account ();
-            account['total'] = this.safeNumber (balance, 'balance');
+            account['total'] = this.safeString (balance, 'balance');
             result[code] = account;
         }
-        return this.parseBalance (result);
+        return this.parseBalance (result, false);
     }
 
     async fetchOrderBook (symbol, limit = undefined, params = {}) {
diff --git a/js/buda.js b/js/buda.js
index f70f49c8dd52..146b07ebeac9 100644
--- a/js/buda.js
+++ b/js/buda.js
@@ -453,11 +453,11 @@ module.exports = class buda extends Exchange {
             const currencyId = this.safeString (balance, 'id');
             const code = this.safeCurrencyCode (currencyId);
             const account = this.account ();
-            account['free'] = parseFloat (balance['available_amount'][0]);
-            account['total'] = parseFloat (balance['amount'][0]);
+            account['free'] = this.safeString (balance['available_amount'], 0);
+            account['total'] = this.safeString (balance['amount'], 0);
             result[code] = account;
         }
-        return this.parseBalance (result);
+        return this.parseBalance (result, false);
     }
 
     async fetchOrder (id, symbol = undefined, params = {}) {
diff --git a/js/coinbasepro.js b/js/coinbasepro.js
index 0245545d76ba..6d8c48454e57 100644
--- a/js/coinbasepro.js
+++ b/js/coinbasepro.js
@@ -392,14 +392,13 @@ module.exports = class coinbasepro extends Exchange {
             const balance = response[i];
             const currencyId = this.safeString (balance, 'currency');
             const code = this.safeCurrencyCode (currencyId);
-            const account = {
-                'free': this.safeNumber (balance, 'available'),
-                'used': this.safeNumber (balance, 'hold'),
-                'total': this.safeNumber (balance, 'balance'),
-            };
+            const account = this.account ();
+            account['free'] = this.safeString (balance, 'available');
+            account['used'] = this.safeString (balance, 'hold');
+            account['total'] = this.safeString (balance, 'balance');
             result[code] = account;
         }
-        return this.parseBalance (result);
+        return this.parseBalance (result, false);
     }
 
     async fetchOrderBook (symbol, limit = undefined, params = {}) {
diff --git a/js/coinegg.js b/js/coinegg.js
index 0935600f8f1a..0b2e2ef895b4 100644
--- a/js/coinegg.js
+++ b/js/coinegg.js
@@ -326,9 +326,9 @@ module.exports = class coinegg extends Exchange {
                 result[code] = this.account ();
             }
             const type = (accountType === 'lock') ? 'used' : 'free';
-            result[code][type] = this.safeNumber (balances, key);
+            result[code][type] = this.safeString (balances, key);
         }
-        return this.parseBalance (result);
+        return this.parseBalance (result, false);
     }
 
     parseOrder (order, market = undefined) {
diff --git a/js/coinfalcon.js b/js/coinfalcon.js
index 14f04812322c..8d307729380f 100644
--- a/js/coinfalcon.js
+++ b/js/coinfalcon.js
@@ -256,14 +256,13 @@ module.exports = class coinfalcon extends Exchange {
             const balance = balances[i];
             const currencyId = this.safeString (balance, 'currency_code');
             const code = this.safeCurrencyCode (currencyId);
-            const account = {
-                'free': this.safeNumber (balance, 'available_balance'),
-                'used': this.safeNumber (balance, 'hold_balance'),
-                'total': this.safeNumber (balance, 'balance'),
-            };
+            const account = this.account ();
+            account['free'] = this.safeString (balance, 'available_balance');
+            account['used'] = this.safeString (balance, 'hold_balance');
+            account['total'] = this.safeString (balance, 'balance');
             result[code] = account;
         }
-        return this.parseBalance (result);
+        return this.parseBalance (result, false);
     }
 
     parseOrderStatus (status) {
diff --git a/js/exx.js b/js/exx.js
index d44ce64d3213..72b59ef1b76b 100644
--- a/js/exx.js
+++ b/js/exx.js
@@ -267,14 +267,13 @@ module.exports = class exx extends Exchange {
             const currencyId = currencies[i];
             const balance = balances[currencyId];
             const code = this.safeCurrencyCode (currencyId);
-            const account = {
-                'free': this.safeNumber (balance, 'balance'),
-                'used': this.safeNumber (balance, 'freeze'),
-                'total': this.safeNumber (balance, 'total'),
-            };
+            const account = this.account ();
+            account['free'] = this.safeString (balance, 'balance');
+            account['used'] = this.safeString (balance, 'freeze');
+            account['total'] = this.safeString (balance, 'total');
             result[code] = account;
         }
-        return this.parseBalance (result);
+        return this.parseBalance (result, false);
     }
 
     parseOrder (order, market = undefined) {
diff --git a/js/idex.js b/js/idex.js
index d9dde7ed0daa..c3c14d981876 100644
--- a/js/idex.js
+++ b/js/idex.js
@@ -589,16 +589,13 @@ module.exports = class idex extends Exchange {
             const entry = response[i];
             const currencyId = this.safeString (entry, 'asset');
             const code = this.safeCurrencyCode (currencyId);
-            const total = this.safeNumber (entry, 'quantity');
-            const free = this.safeNumber (entry, 'availableForTrade');
-            const used = this.safeNumber (entry, 'locked');
-            result[code] = {
-                'free': free,
-                'used': used,
-                'total': total,
-            };
+            const account = this.account ();
+            account['total'] = this.safeString (entry, 'quantity');
+            account['free'] = this.safeString (entry, 'availableForTrade');
+            account['used'] = this.safeString (entry, 'locked');
+            result[code] = account;
         }
-        return this.parseBalance (result);
+        return this.parseBalance (result, false);
     }
 
     async fetchMyTrades (symbol = undefined, since = undefined, limit = undefined, params = {}) {
