diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java
index a86521866788ed98b1e71dd2f34d5cfb4c589612..e4d62d73230c71ca65c21b2562b6f847948f500b 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java
@@ -4,11 +4,13 @@ import de.deadlocker8.budgetmaster.accounts.AccountService;
 import de.deadlocker8.budgetmaster.categories.CategoryService;
 import de.deadlocker8.budgetmaster.categories.CategoryType;
 import de.deadlocker8.budgetmaster.controller.BaseController;
-import de.deadlocker8.budgetmaster.services.DateFormatStyle;
 import de.deadlocker8.budgetmaster.services.HelpersService;
 import de.deadlocker8.budgetmaster.settings.SettingsService;
 import de.deadlocker8.budgetmaster.transactions.csvimport.*;
 import de.deadlocker8.budgetmaster.utils.Mappings;
+import de.deadlocker8.budgetmaster.utils.WebRequestUtils;
+import de.deadlocker8.budgetmaster.utils.notification.Notification;
+import de.deadlocker8.budgetmaster.utils.notification.NotificationType;
 import de.thecodelabs.utils.util.Localization;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -53,7 +55,6 @@ public class TransactionImportController extends BaseController
 		public static final String CSV_ROWS = "csvRows";
 		public static final String CSV_TRANSACTIONS = "csvTransactions";
 		public static final String ERROR_UPLOAD = "errorUpload";
-		public static final String ERROR_UPLOAD_FILE = "errorUploadFile";
 		public static final String ERRORS_COLUMN_SETTINGS = "errorsColumnSettings";
 
 	}
@@ -98,7 +99,9 @@ public class TransactionImportController extends BaseController
 	{
 		if(csvImport.file().isEmpty())
 		{
-			return ReturnValues.REDIRECT_CANCEL;
+			removeAllAttributes(request);
+			WebRequestUtils.putNotification(request, new Notification(Localization.getString("transactions.import.error.upload.empty"), NotificationType.ERROR));
+			return ReturnValues.REDIRECT_IMPORT;
 		}
 
 		if(!csvImport.isValidSeparator())
@@ -132,8 +135,7 @@ public class TransactionImportController extends BaseController
 		{
 			LOGGER.error("CSV upload failed", e);
 
-			// TODO: show in html
-			request.setAttribute(RequestAttributeNames.ERROR_UPLOAD_FILE, e.getMessage(), RequestAttributes.SCOPE_SESSION);
+			WebRequestUtils.putNotification(request, new Notification(Localization.getString("transactions.import.error.upload", e.getMessage()), NotificationType.ERROR));
 		}
 		return ReturnValues.REDIRECT_IMPORT;
 	}
@@ -294,7 +296,6 @@ public class TransactionImportController extends BaseController
 		request.removeAttribute(RequestAttributeNames.CSV_ROWS, RequestAttributes.SCOPE_SESSION);
 		request.removeAttribute(RequestAttributeNames.CSV_TRANSACTIONS, RequestAttributes.SCOPE_SESSION);
 		request.removeAttribute(RequestAttributeNames.ERROR_UPLOAD, RequestAttributes.SCOPE_SESSION);
-		request.removeAttribute(RequestAttributeNames.ERROR_UPLOAD_FILE, RequestAttributes.SCOPE_SESSION);
 		request.removeAttribute(RequestAttributeNames.ERRORS_COLUMN_SETTINGS, RequestAttributes.SCOPE_SESSION);
 	}
 
diff --git a/BudgetMasterServer/src/main/resources/languages/base_de.properties b/BudgetMasterServer/src/main/resources/languages/base_de.properties
index e95742ea57c553ec5da9a32654ed2c8478a3c33e..64d996e67e42d6316c99e362e0b49bf816f72455 100644
--- a/BudgetMasterServer/src/main/resources/languages/base_de.properties
+++ b/BudgetMasterServer/src/main/resources/languages/base_de.properties
@@ -170,7 +170,6 @@ info.text.update=Es ist ein Update für BudgetMaster verfügbar<br><br>Installie
 info.title.backup.reminder=Zeit für ein Backup
 info.text.backup.reminder=Schon mal über ein Backup nachgedacht?<br>Du solltest deine BudgetMaster Datenbank regelmäßig sichern.<br>Dies geht besonders einfach in den Einstellungen.<br>Du kannst auch ein automatisches Backup konfigurieren.<br><br>(Du wilst diese Erinnerung nicht jeden Monat sehen? Dann deaktiviere die Backuperinnerung in den Einstellungen.)
 info.button.backup.reminder=Zu den Einstellungen
-notification.settings.saved=Einstellungen gespeichert
 notification.settings.security.saved=Passwort gespeichert
 notification.settings.security.warning=Passwort entspricht bereits gespeicherten Passwort
 notification.settings.security.error=Fehler beim Speichern des Passworts
@@ -381,6 +380,8 @@ transactions.import.status.pending=ausstehend
 transactions.import.status.imported=importiert
 transactions.import.status.skipped=übersprungen
 transactions.import.actions=Aktionen
+transactions.import.error.upload=Fehler beim Hochladen: {0}
+transactions.import.error.upload.empty=Ungültige leere Datei
 transactions.import.error.column=Zugeordnete Spalten in Zeile {0} (Zählung beginnt relativ zu Anzahl übersprungener Zeilen) nicht gefunden: {1}
 transactions.import.error.parse.amount=Fehler beim Parsen des Betrags in Zeile {0} (Zählung beginnt relativ zu Anzahl übersprungener Zeilen)
 transactions.import.error.parse.date=Fehler beim Parsen des Datums in Zeile {0} (Zählung beginnt relativ zu Anzahl übersprungener Zeilen)<br>Wert "{1}" kann nicht mit Pattern "{2}" geparst werden.
diff --git a/BudgetMasterServer/src/main/resources/languages/base_en.properties b/BudgetMasterServer/src/main/resources/languages/base_en.properties
index d1a005c6ae0c54b573b52012ff6fe1d9ac6ae845..56d9d38d2e2d2ebdf6c80a556aeb6b2266d47ceb 100644
--- a/BudgetMasterServer/src/main/resources/languages/base_en.properties
+++ b/BudgetMasterServer/src/main/resources/languages/base_en.properties
@@ -170,7 +170,6 @@ info.text.update=An update for BudgetMaster is available<br><br>Installed: v{0}<
 info.title.backup.reminder=Time for a backup
 info.text.backup.reminder=Have you ever thought about a backup?<br>You should back up your BudgetMaster database regularly.<br>This can be done on the settings page.<br>You can also enable an automatic backup.<br><br>(You don''t want to see this reminder every month? Disable the backup reminder in the settings.)
 info.button.backup.reminder=To the settings
-notification.settings.saved=Settings saved
 notification.settings.security.saved=Password saved
 notification.settings.security.warning=Password equals already saved password
 notification.settings.security.error=Error saving password
@@ -380,6 +379,8 @@ transactions.import.status.pending=pending
 transactions.import.status.imported=imported
 transactions.import.status.skipped=skipped
 transactions.import.actions=Actions
+transactions.import.error.upload=Upload error: {0}
+transactions.import.error.upload.empty=Invalid empty file
 transactions.import.error.column=Associated columns not found in row {0} (counting starts relative to the number of skipped rows): {1}
 transactions.import.error.parse.amount=Error parsing the amount in line {0} (counting starts relative to number of skipped lines)
 transactions.import.error.parse.date=Error parsing the date in line {0} (counting starts relative to number of skipped lines)<br>Value "{1}" could not be parsed with pattern "{2}".