diff --git a/areas/users/user_service.py b/areas/users/user_service.py
index a0abfda465e30f181a6f7669be3d41723e2fe453..2ad5a7380db539312d689cd087567b4767542a74 100644
--- a/areas/users/user_service.py
+++ b/areas/users/user_service.py
@@ -5,6 +5,8 @@ from helpers import KratosApi
 
 from flask import current_app
 
+from helpers.error_handler import KratosError
+
 
 class UserService:
     no_access_role_id = 3
@@ -101,21 +103,44 @@ class UserService:
         # for every item in array call Kratos - check if there can be batch create on Kratos
         # - if yes, what happens with the batch if there is at least one existing email
         created_users = []
-        not_created_users = []
+        existing_users = []
+        creation_failed_users = []
 
         for user_data in data['users']:
-            user_mail = user_data["email"]
-            if not user_mail:
+            user_email = user_data["email"]
+            if not user_email:
                 return
             try:
-                user = UserService.post_user(user_data)
-                current_app.logger.info(f"Batch create user: {user_mail}")
-                created_users.append(user)
+                UserService.post_user(user_data)
+                current_app.logger.info(f"Batch create user: {user_email}")
+                created_users.append(user_email)
+            except KratosError as err:
+                status_code = err.args[1]
+                if status_code == 409:
+                    existing_users.append(user_email)
+                elif status_code == 400:
+                    creation_failed_users.append(user_email)
+                current_app.logger.error(
+                    f"Exception calling Kratos: {err} on creating user: {user_email} {status_code}")
             except Exception as error:
-                current_app.logger.error(f"Exception calling Kratos: {error} on creating user: {user_mail}")
-                not_created_users.append(user_mail)
-
-        return {"created_users": created_users, "not_created_users": not_created_users}
+                current_app.logger.error(
+                    f"Exception: {error} on creating user: {user_email}")
+                creation_failed_users.append(user_email)
+
+        success_response = {}
+        existing_response = {}
+        failed_response = {}
+        if created_users:
+            success_response = {"users": created_users,
+                                "message": f"{len(created_users)} users created"}
+        if existing_users:
+            existing_response = {
+                "users": existing_users, "message": f"{len(existing_users)} users already exist: {', '.join(existing_users)}"}
+        if creation_failed_users:
+            failed_response = {"users": creation_failed_users,
+                               "message": f"{len(creation_failed_users)} users failed to create: {', '.join(creation_failed_users)}"}
+
+        return {"success": success_response, "existing": existing_response, "failed": failed_response}
 
     @staticmethod
     def __insertAppRoleToUser(userId, userRes):