diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/application/controller/TransactionController.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/application/controller/TransactionController.java
index 8057cd7b5a522bd8bf0aae91cac62c108f90b1d8..af908faf0d588d58dce85daa6baf617e1dae317c 100644
--- a/transaction-processor/src/main/java/cz/muni/pa165/banking/application/controller/TransactionController.java
+++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/application/controller/TransactionController.java
@@ -5,7 +5,6 @@ import cz.muni.pa165.banking.transaction.processor.TransactionApi;
 import cz.muni.pa165.banking.transaction.processor.dto.ProcessDetailDto;
 import cz.muni.pa165.banking.transaction.processor.dto.ProcessDto;
 import cz.muni.pa165.banking.transaction.processor.dto.TransactionDto;
-import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
@@ -32,11 +31,11 @@ public class TransactionController implements TransactionApi {
         ProcessDetailDto result = facade.getStatus(xProcessUuid);
         return ResponseEntity.ok(result);
     }
-    
+
     @Override
-    public ResponseEntity<Void> revertTransactionProcess(UUID xProcessUuid) {
-        facade.revertProcess(xProcessUuid);
-        return new ResponseEntity<>(HttpStatus.OK);
+    public ResponseEntity<ProcessDto> revertTransactionProcess(UUID xProcessUuid) {
+        ProcessDto revertingProcess = facade.revertProcess(xProcessUuid);
+        return ResponseEntity.ok(revertingProcess);
     }
 
 }
diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/application/facade/TransactionFacade.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/application/facade/TransactionFacade.java
index 13af297a947d7d6f212b617943286c2328db4779..56c784e7ab36b5e05ab54054812d9e9edc913c6b 100644
--- a/transaction-processor/src/main/java/cz/muni/pa165/banking/application/facade/TransactionFacade.java
+++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/application/facade/TransactionFacade.java
@@ -38,8 +38,8 @@ public class TransactionFacade {
         return mapper.map(process, processTransaction);
     }
     
-    public void revertProcess(UUID uuid) {
-        service.revertProcess(uuid);
+    public ProcessDto revertProcess(UUID uuid) {
+        return mapper.map(service.revertProcess(uuid));
     }
 
 }
diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/application/service/AccountServiceImpl.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/application/service/AccountServiceImpl.java
index 333e74d9a83f79960ac8c8501466db7714d39a0d..a65602e495288f5f6f501cd3534608dfd332ce10 100644
--- a/transaction-processor/src/main/java/cz/muni/pa165/banking/application/service/AccountServiceImpl.java
+++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/application/service/AccountServiceImpl.java
@@ -31,7 +31,7 @@ public class AccountServiceImpl implements AccountService {
     }
 
     @Override
-    public void publishAccountChange(UUID processUuid, TransactionType transactionType, BigDecimal amount, Account account) {
+    public void publishAccountChange(UUID processUuid, TransactionType transactionType, BigDecimal amount, Account account, String information) {
 
     }
 }
diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/application/service/TransactionProcessesService.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/application/service/TransactionProcessesService.java
index beb5fdf5e0b8331e0ee7e6ed3fd5e99b99563061..b161b366c0cc6e91198c81033f1e5a302dd9bdb3 100644
--- a/transaction-processor/src/main/java/cz/muni/pa165/banking/application/service/TransactionProcessesService.java
+++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/application/service/TransactionProcessesService.java
@@ -1,12 +1,18 @@
 package cz.muni.pa165.banking.application.service;
 
 import cz.muni.pa165.banking.application.messaging.ProcessProducer;
+import cz.muni.pa165.banking.domain.money.Money;
 import cz.muni.pa165.banking.domain.process.Process;
 import cz.muni.pa165.banking.domain.process.ProcessFactory;
 import cz.muni.pa165.banking.domain.process.ProcessTransaction;
 import cz.muni.pa165.banking.domain.process.repository.ProcessRepository;
+import cz.muni.pa165.banking.domain.process.status.Status;
 import cz.muni.pa165.banking.domain.transaction.Transaction;
 import cz.muni.pa165.banking.domain.process.repository.ProcessTransactionRepository;
+import cz.muni.pa165.banking.domain.transaction.TransactionType;
+import cz.muni.pa165.banking.exception.UnexpectedValueException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -15,6 +21,8 @@ import java.util.UUID;
 @Service
 public class TransactionProcessesService {
     
+    private final Logger LOGGER = LoggerFactory.getLogger(TransactionProcessesService.class);
+    
     private final ProcessTransactionRepository processTransactionRepository;
 
     private final ProcessRepository processRepository;
@@ -30,7 +38,11 @@ public class TransactionProcessesService {
     @Transactional(rollbackFor = Exception.class)
     public Process createProcessForTransaction(Transaction newTransaction) {
         ProcessFactory factory = new ProcessFactory(processTransactionRepository, processRepository);
-        return factory.create(newTransaction, processProducer);
+        Process process = factory.create(newTransaction, processProducer);
+        
+        LOGGER.info("[Create Process] %s" + process.uuid());
+        
+        return process;
     }
 
     @Transactional(readOnly = true)
@@ -44,8 +56,40 @@ public class TransactionProcessesService {
     }
     
     @Transactional(rollbackFor = Exception.class)
-    public void revertProcess(UUID uuid) {
+    public Process revertProcess(UUID uuid) {
+        Process process = processRepository.findById(uuid);
+        
+        if (!process.getStatus().equals(Status.PROCESSED)) {
+            LOGGER.error("[Revert Process] Process " + uuid + " not finalized successfully, unable to revert");
+            throw new UnexpectedValueException(
+                    "Unable to revert process, which is not successfully processed!",
+                    process.toString()
+            );
+        }
+        
+        ProcessTransaction processTransaction = processTransactionRepository.findTransactionByProcessId(uuid);
+        
+        if (!processTransaction.getType().equals(TransactionType.CROSS_ACCOUNT) || processTransaction.getType().equals(TransactionType.SCHEDULED)) {
+            LOGGER.error("[Revert Process] Process " + uuid + " not of type CROSS_ACCOUNT/SCHEDULED, unable to revert");
+            throw new UnexpectedValueException("Unable to revert transaction not type of CROSS_ACCOUNT or SCHEDULED!");
+        }
+
+        Money original = processTransaction.getMoney();
+        Money reverted = new Money(original.getAmount().negate(), original.getCurrency());
+        Transaction revertingTransaction = new Transaction(
+                processTransaction.getTarget(),
+                processTransaction.getSource(),
+                processTransaction.getType(),
+                reverted,
+                String.format("Admin reversal of executed %s transaction {%s}", processTransaction.getType(), uuid)
+        );
+        
+        ProcessFactory factory = new ProcessFactory(processTransactionRepository, processRepository);
+        Process revertingProcess = factory.create(revertingTransaction, processProducer);
+
+        LOGGER.info(String.format("[Revert Process] Created new process {%s} in order to revert process {%s}", revertingProcess.uuid(), uuid));   
         
+        return revertingProcess;
     }
     
 }
diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/CrossAccountHandler.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/CrossAccountHandler.java
index b1c8e20056e1155ee65d32bcc5a0156df855d5a6..58ef14865ba18d45f52c7e643a7c6e907a5e50c3 100644
--- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/CrossAccountHandler.java
+++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/CrossAccountHandler.java
@@ -50,8 +50,8 @@ public class CrossAccountHandler extends ProcessHandler {
             targetAmount = currencyConverter.convertTo(currency, targetAccountCurrency, targetAmount);
         }
         
-        accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.CROSS_ACCOUNT, sourceAmount, source);
-        accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.CROSS_ACCOUNT, targetAmount, target);
+        accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.CROSS_ACCOUNT, sourceAmount, source, processTransaction.getDetail());
+        accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.CROSS_ACCOUNT, targetAmount, target, processTransaction.getDetail());
     }
 
 }
diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/DepositHandler.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/DepositHandler.java
index f562cdd508d5f9735d6783a2d713998cd1fd748a..469593d837c4036b0bac5e119092ae3530356811 100644
--- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/DepositHandler.java
+++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/DepositHandler.java
@@ -30,7 +30,7 @@ class DepositHandler extends ProcessHandler {
         
         BigDecimal convertedAmount = currencyConverter.convertTo(money.getCurrency(), accountCurrency, money.getAmount());
         
-        accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.DEPOSIT, convertedAmount, account);
+        accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.DEPOSIT, convertedAmount, account, processTransaction.getDetail());
     }
 
 }
diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/ScheduledHandler.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/ScheduledHandler.java
index c03bc5ed4fcdc3027190d7effa2c57eb900467a6..cdf8e167b43f2ef707b12905d9d5e5d924b79779 100644
--- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/ScheduledHandler.java
+++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/ScheduledHandler.java
@@ -46,8 +46,8 @@ public class ScheduledHandler extends ProcessHandler {
             targetAmount = currencyConverter.convertTo(currency, targetAccountCurrency, targetAmount);
         }
 
-        accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.SCHEDULED, sourceAmount, source);
-        accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.SCHEDULED, targetAmount, target);
+        accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.SCHEDULED, sourceAmount, source, processTransaction.getDetail());
+        accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.SCHEDULED, targetAmount, target, processTransaction.getDetail());
     }
 
 }
diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/WithdrawHandler.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/WithdrawHandler.java
index f1b49666d791322de4ebf7394d02252ef8219a7d..1accd49f435e873505f73a190e31d85561e05fd6 100644
--- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/WithdrawHandler.java
+++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/WithdrawHandler.java
@@ -42,7 +42,7 @@ public class WithdrawHandler extends ProcessHandler {
         BigDecimal convertedAmount = currencyConverter.convertTo(money.getCurrency(), accountCurrency, money.getAmount());
         BigDecimal calculatedAmount = convertedAmount.multiply(BigDecimal.valueOf(-1L));
 
-        accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.WITHDRAW, calculatedAmount, account);
+        accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.WITHDRAW, calculatedAmount, account, processTransaction.getDetail());
     }
 
 }
diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/remote/AccountService.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/remote/AccountService.java
index 37ebc5d9ef9464705b43946fa18e10199835cd02..010f2731127f4ef98981d9f4f745a227cf1aa6ff 100644
--- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/remote/AccountService.java
+++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/remote/AccountService.java
@@ -30,6 +30,6 @@ public interface AccountService {
     /**
      *  Publish transaction results to update balance of account within processed transaction
      */
-    void publishAccountChange(UUID processUuid, TransactionType transactionType, BigDecimal amount, Account account);
+    void publishAccountChange(UUID processUuid, TransactionType transactionType, BigDecimal amount, Account account, String information);
     
 }
diff --git a/transaction-processor/src/main/resources/openapi.yaml b/transaction-processor/src/main/resources/openapi.yaml
index a4ba6e2fdb05c8af2cb2dc5694a455e54db4117e..f28a6e3fd226e1b5f1816b898d9eae49707dc6c4 100644
--- a/transaction-processor/src/main/resources/openapi.yaml
+++ b/transaction-processor/src/main/resources/openapi.yaml
@@ -54,7 +54,7 @@ paths:
           required: true
       responses: 
         '200':
-          description: xx
+          description: OK
           content:
             application/json:
               schema:
@@ -80,7 +80,11 @@ paths:
           required: true
       responses:
         '200':
-          description: Process found and reverted changes in account(s)
+          description: Process found and created new process reverting changes in accounts
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProcessDto'
         '400':
           description: Process found by UUID but not in expected state (PROCESSED)
         '404':