diff --git a/ucoinpy/api/bma/__init__.py b/ucoinpy/api/bma/__init__.py
index 67f0e2d76d26789f74cafc57926561d91a07c557..68763a4b3100df3dea2872e0ce8b3dc35e5283df 100644
--- a/ucoinpy/api/bma/__init__.py
+++ b/ucoinpy/api/bma/__init__.py
@@ -26,5 +26,5 @@ import logging
 logger = logging.getLogger("ucoin")
 
 
-from .api import API, ConnectionHandler
+from .api import API, ConnectionHandler, UcoinError
 from . import network, blockchain, tx, wot, node, ud, ws
\ No newline at end of file
diff --git a/ucoinpy/api/bma/api.py b/ucoinpy/api/bma/api.py
index ae0b885129d092e92bc5e103a2374cc5b4ddd33a..2afa98d66c25a7475f2d8c35f162067c0eb8e176 100644
--- a/ucoinpy/api/bma/api.py
+++ b/ucoinpy/api/bma/api.py
@@ -23,6 +23,15 @@ import aiohttp, json, logging, jsonschema
 logger = logging.getLogger("ucoin")
 
 
+class UcoinError(Exception):
+    """
+    UCoin error
+    """
+    def __init__(self, data):
+        super().__init__("Error code {0} - {1}".format(data["ucode"], data["message"]))
+        self.error = data
+
+
 class ConnectionHandler(object):
     """Helper class used by other API classes to ease passing server connection information."""
 
@@ -162,7 +171,11 @@ class API(object):
         with aiohttp.Timeout(15):
             response = await session.get(self.reverse_url("http", path), params=kwargs,headers=self.headers)
             if response.status != 200:
-                raise ValueError('status code != 200 => %d (%s)' % (response.status, (await response.text())))
+                try:
+                    error_data = self.parse_error(await response.text())
+                    raise UcoinError(error_data)
+                except TypeError:
+                    raise ValueError('status code != 200 => %d (%s)' % (response.status, (await response.text())))
 
             return response