diff --git a/src/rpc/net.cpp b/src/rpc/net.cpp
--- a/src/rpc/net.cpp
+++ b/src/rpc/net.cpp
@@ -356,7 +356,8 @@
     } else if ((strCommand == "remove") &&
                (!node.connman->RemoveAddedNode(strNode))) {
         throw JSONRPCError(RPC_CLIENT_NODE_NOT_ADDED,
-                           "Error: Node has not been added.");
+                           "Error: Node could not be removed. It has not been "
+                           "added previously.");
     }
 
     return NullUniValue;
diff --git a/test/functional/rpc_net.py b/test/functional/rpc_net.py
--- a/test/functional/rpc_net.py
+++ b/test/functional/rpc_net.py
@@ -156,6 +156,21 @@
         added_nodes = self.nodes[0].getaddednodeinfo(ip_port)
         assert_equal(len(added_nodes), 1)
         assert_equal(added_nodes[0]['addednode'], ip_port)
+        # check that node cannot be added again
+        assert_raises_rpc_error(-23,
+                                "Node already added",
+                                self.nodes[0].addnode,
+                                node=ip_port,
+                                command='add')
+        # check that node can be removed
+        self.nodes[0].addnode(node=ip_port, command='remove')
+        assert_equal(self.nodes[0].getaddednodeinfo(), [])
+        # check that trying to remove the node again returns an error
+        assert_raises_rpc_error(-24,
+                                "Node could not be removed",
+                                self.nodes[0].addnode,
+                                node=ip_port,
+                                command='remove')
         # check that a non-existent node returns an error
         assert_raises_rpc_error(-24, "Node has not been added",
                                 self.nodes[0].getaddednodeinfo, '1.1.1.1')