diff --git a/setra_client/client.py b/setra_client/client.py
index 4e1663b824af847a85c18db48b0743e1513cd21a..bfe4c6cbc2b11f997a0659251def2a0f2a793e42 100644
--- a/setra_client/client.py
+++ b/setra_client/client.py
@@ -17,6 +17,7 @@ from setra_client.models import (
     Detail,
     AbwOrder,
     AbwOrderErrors,
+    ResponseStatusEnum,
 )
 
 logger = logging.getLogger(__name__)
@@ -367,11 +368,12 @@ class SetraClient(object):
             content = response.content
 
         if response.status_code == 202:
-            return 'Accepted', {}
+            return ResponseStatusEnum.ACCEPTED, {'code': 202, 'content': None}
         elif response.status_code == 409:
-            return 'Conflict', content
+            return ResponseStatusEnum.CONFLICT, {'code': 409, 'content': None}
         else:
-            return 'Unknown', {'code': response.status_code, 'content': content}
+            return ResponseStatusEnum.UNKNOWN, {
+                'code': response.status_code, 'content': content}
 
     def put_update_batch(self, batchdata: InputBatch):
         """
@@ -393,11 +395,12 @@ class SetraClient(object):
             content = response.content
 
         if response.status_code == 204:
-            return 'Accepted', {}
+            return ResponseStatusEnum.ACCEPTED, {'code': 204, 'content': None}
         elif response.status_code == 409:
-            return 'Conflict', content
+            return ResponseStatusEnum.CONFLICT, {'code': 409, 'content': None}
         else:
-            return 'Unknown', {'code': response.status_code, 'content': content}
+            return ResponseStatusEnum.UNKNOWN, {
+                'code': response.status_code, 'content': content}
 
     def get_batch_complete(self, batch_id: str):
         """
@@ -524,12 +527,17 @@ class SetraClient(object):
                              headers=headers,
                              return_response=True)
         if response.status_code == 202:
-            return response.content, 'Accepted'
+            return ResponseStatusEnum.ACCEPTED, {'code': 202, 'content': None}
         elif response.status_code == 409:
-            return response.content, "Conflict"
+            return ResponseStatusEnum.CONFLICT, {'code': 409, 'content': None}
         else:
+            try:
+                content = response.json()
+            except ValueError:
+                content = response.content
             response.raise_for_status()
-            return response
+            return ResponseStatusEnum.UNKNOWN, {
+                'code': response.status_code, 'content': content}
 
     def get_abw_order_errors(self, abw_order_id: str):
         """
diff --git a/setra_client/models.py b/setra_client/models.py
index 80b8fd2c013aa56b150e7033c9017c49cc58eab6..6cc9a3140ba9e8fe8f66a14ca0ffa607e55e7cea 100644
--- a/setra_client/models.py
+++ b/setra_client/models.py
@@ -44,6 +44,15 @@ class BatchProgressEnum(str, Enum):
         return str(self.value)
 
 
+class ResponseStatusEnum(str, Enum):
+    ACCEPTED = 'Accepted'
+    CONFLICT = 'Conflict'
+    UNKNOWN = 'Unknown'
+
+    def __str__(self):
+        return str(self.value)
+
+
 class Transaction(BaseModel):
     account: str
     amount: float