diff --git a/silkaj/idty_tools.py b/silkaj/idty_tools.py
index e812cea188a2f87093b364e33693753774a4773c..92866a34c2251f30d1d8abb28c14a399fc5bafca 100644
--- a/silkaj/idty_tools.py
+++ b/silkaj/idty_tools.py
@@ -15,6 +15,7 @@
 
 import shutil
 import sys
+import urllib
 
 import click
 import pendulum
@@ -55,12 +56,14 @@ def check_many_identities(idty, doc_type="Identity"):
     Returns True if the same identity is found, False if not.
     """
     error_no_identical_id = f"{doc_type} document does not match any valid identity."
-    # if no id, exit is a bit rough...
+
     try:
         results_pubkey = wt.wot_lookup(idty.pubkey)
         results_uid = wt.wot_lookup(idty.uid)
-    except SystemExit as e:
-        sys.exit(f"{error_no_identical_id} Error: {e}")
+    except urllib.error.HTTPError as e:
+        sys.exit(
+            f"{error_no_identical_id}\nuid: {idty.uid}\npubkey: {display_pubkey_and_checksum(idty.pubkey)}"
+        )
 
     # get all matching identities
     lookup_ids = merge_ids_lists(results_pubkey, results_uid, idty.currency)
diff --git a/silkaj/network_tools.py b/silkaj/network_tools.py
index db1228693e35dc2c526a300d9d422e2bfba5d250..77427a3b27d756b2967dd21e3b4efcc4da1aea11 100644
--- a/silkaj/network_tools.py
+++ b/silkaj/network_tools.py
@@ -91,3 +91,14 @@ def send_document(bma_path, document):
         print(f"{doc_name} successfully sent")
     except urllib.error.HTTPError as e:
         sys.exit(f"Error while publishing {doc_name.lower()}: {e}")
+
+
+def exit_on_http_error(error, error_codes, message):
+    """
+    Nicely displays a message on an expected error code given in a list.
+    Else, displays the HTTP error message.
+    """
+    for code in error_codes:
+        if error.code == code:
+            sys.exit(message)
+    sys.exit(error)
diff --git a/silkaj/wot.py b/silkaj/wot.py
index d66bba6bbd2160db48c15ff10ceafb7e060aaf95..1d1957eaed68d4aa8a8b17c9ab8d5e58d2a83602 100644
--- a/silkaj/wot.py
+++ b/silkaj/wot.py
@@ -13,6 +13,8 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with Silkaj. If not, see <https://www.gnu.org/licenses/>.
 
+import sys
+import urllib
 from collections import OrderedDict
 
 import click
@@ -25,7 +27,7 @@ from silkaj import wot_tools as wt
 from silkaj.blockchain_tools import BlockchainParams
 from silkaj.constants import DATE
 from silkaj.crypto_tools import is_pubkey_and_check
-from silkaj.network_tools import ClientInstance
+from silkaj.network_tools import ClientInstance, exit_on_http_error
 from silkaj.tools import message_exit
 from silkaj.tui import display_pubkey_and_checksum
 
@@ -145,7 +147,11 @@ def id_pubkey_correspondence(uid_pubkey):
     if checked_pubkey:
         uid_pubkey = checked_pubkey
 
-    lookups = wt.wot_lookup(uid_pubkey)
+    try:
+        lookups = wt.wot_lookup(uid_pubkey)
+    except urllib.error.HTTPError as e:
+        exit_on_http_error(e, [404], f"No identity found for {uid_pubkey}")
+
     content = f"Public keys or user id found matching '{uid_pubkey}':\n"
     for lookup in lookups:
         for identity in lookup["uids"]:
@@ -161,7 +167,11 @@ def choose_identity(pubkey_uid):
     If there is one uid, returns it
     If there is multiple uids, prompt a selector
     """
-    lookups = wt.wot_lookup(pubkey_uid)
+
+    try:
+        lookups = wt.wot_lookup(pubkey_uid)
+    except urllib.error.HTTPError as e:
+        exit_on_http_error(e, [404], f"No identity found for {pubkey_uid}")
 
     # Generate table containing the choices
     identities_choices = {"id": [], "uid": [], "pubkey": [], "timestamp": []}
diff --git a/silkaj/wot_tools.py b/silkaj/wot_tools.py
index 958e6d8b09ae76c86cd33c571bb6c680dbaec24f..17a54d56bb277fa494888b7b444c77417fbc8282 100644
--- a/silkaj/wot_tools.py
+++ b/silkaj/wot_tools.py
@@ -14,7 +14,6 @@
 # along with Silkaj. If not, see <https://www.gnu.org/licenses/>.
 
 import sys
-import urllib
 
 from duniterpy.api.bma import wot
 from duniterpy.api.errors import DuniterError
@@ -53,13 +52,8 @@ def wot_lookup(identifier):
     if one identity found
     """
     client = ClientInstance().client
-    try:
-        results = client(wot.lookup, identifier)
-        return results["results"]
-    except DuniterError as e:
-        sys.exit(e.message)
-    except urllib.error.HTTPError as e:
-        sys.exit(e)
+    results = client(wot.lookup, identifier)
+    return results["results"]
 
 
 def identities_from_pubkeys(pubkeys, uids):