diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8db7731d8..d8e1b2f8e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,8 @@ at anytime.
   * fixed the inconsistencies in API and CLI docstrings
   * `blob_announce` error when announcing a single blob
   * `blob_list` error when looking up blobs by stream or sd hash
+  * issue#1107 whereing claiming a channel with the exact amount present in wallet would give out proper error
+  *
 
 ### Deprecated
   * `report_bug` jsonrpc command
@@ -27,6 +29,7 @@ at anytime.
 
 ### Added
   * scripts to autogenerate documentation
+  * now updating new channel also takes into consideration the original bid amount, so now channel could be updated for wallet balance + the original bid amount
   *
 
 ### Removed
diff --git a/lbrynet/core/Wallet.py b/lbrynet/core/Wallet.py
index d2fc3c94e..f739a5849 100644
--- a/lbrynet/core/Wallet.py
+++ b/lbrynet/core/Wallet.py
@@ -502,6 +502,10 @@ class Wallet(object):
             raise Exception("New channel claim should have no fields other than name")
         log.info("Preparing to make certificate claim for %s", channel_name)
         channel_claim = yield self._claim_certificate(parsed_channel_name.name, amount)
+        if not channel_claim['success']:
+            msg = 'Claiming of channel {} failed: {}'.format(channel_name, channel_claim['reason'])
+            log.error(msg)
+            raise Exception(msg)
         yield self.save_claim(self._get_temp_claim_info(channel_claim, channel_name, amount))
         defer.returnValue(channel_claim)
 
@@ -559,8 +563,8 @@ class Wallet(object):
                                             bid, certificate_id, claim_address, change_address)
 
         if not claim['success']:
-            log.error(claim)
-            msg = 'Claim to name {} failed: {}'.format(name, claim['reason'])
+            msg = 'Claiming of name {} failed: {}'.format(name, claim['reason'])
+            log.error(msg)
             raise Exception(msg)
         claim = self._process_claim_out(claim)
         yield self.storage.save_claim(self._get_temp_claim_info(claim, name, bid), smart_decode(claim['value']))
diff --git a/lbrynet/daemon/Daemon.py b/lbrynet/daemon/Daemon.py
index 516264633..12935af24 100644
--- a/lbrynet/daemon/Daemon.py
+++ b/lbrynet/daemon/Daemon.py
@@ -1851,8 +1851,17 @@ class Daemon(AuthJSONRPCServer):
             raise Exception("Invalid channel name")
         if amount <= 0:
             raise Exception("Invalid amount")
-        if amount > self.session.wallet.get_balance():
-            raise InsufficientFundsError()
+
+        balance = yield self.session.wallet.get_max_usable_balance_for_claim(channel_name)
+        max_bid_amount = balance - MAX_UPDATE_FEE_ESTIMATE
+        if balance <= MAX_UPDATE_FEE_ESTIMATE:
+            raise InsufficientFundsError(
+                "Insufficient funds, please deposit additional LBC. Minimum additional LBC needed {}"
+                .format(MAX_UPDATE_FEE_ESTIMATE - balance))
+        elif amount > max_bid_amount:
+            raise InsufficientFundsError(
+                "Please lower the bid value, the maximum amount you can specify for this claim is {}"
+                .format(max_bid_amount))
 
         result = yield self.session.wallet.claim_new_channel(channel_name, amount)
         self.analytics_manager.send_new_channel()
@@ -2028,11 +2037,16 @@ class Daemon(AuthJSONRPCServer):
         if bid <= 0.0:
             raise ValueError("Bid value must be greater than 0.0")
 
-        amt = yield self.session.wallet.get_max_usable_balance_for_claim(name)
-        if bid > amt:
+        balance = yield self.session.wallet.get_max_usable_balance_for_claim(name)
+        max_bid_amount = balance - MAX_UPDATE_FEE_ESTIMATE
+        if balance <= MAX_UPDATE_FEE_ESTIMATE:
+            raise InsufficientFundsError(
+                "Insufficient funds, please deposit additional LBC. Minimum additional LBC needed {}"
+                .format(MAX_UPDATE_FEE_ESTIMATE - balance))
+        elif bid > max_bid_amount:
             raise InsufficientFundsError(
                 "Please lower the bid value, the maximum amount you can specify for this claim is {}"
-                .format(amt - MAX_UPDATE_FEE_ESTIMATE))
+                .format(max_bid_amount))
 
         metadata = metadata or {}
         if fee is not None: