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 5677e13cad27a873a2ea07ac243bc21391f589fa..a86521866788ed98b1e71dd2f34d5cfb4c589612 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java
@@ -185,10 +185,10 @@ public class TransactionImportController extends BaseController
 	private CsvTransaction createCsvTransactionFromCsvRow(CsvRow csvRow, CsvColumnSettings csvColumnSettings, Integer index) throws CsvTransactionParseException
 	{
 		final String date = csvRow.getColumns().get(csvColumnSettings.columnDate() - 1);
-		final Optional<LocalDate> parsedDateOptional = DateParser.parse(date, DateFormatStyle.LONG.getKey(), settingsService.getSettings().getLanguage().getLocale());
+		final Optional<LocalDate> parsedDateOptional = DateParser.parse(date, csvColumnSettings.getDatePattern(), settingsService.getSettings().getLanguage().getLocale());
 		if(parsedDateOptional.isEmpty())
 		{
-			throw new CsvTransactionParseException(Localization.getString("transactions.import.error.parse.date", index, csvRow));
+			throw new CsvTransactionParseException(Localization.getString("transactions.import.error.parse.date", index + 1, date, csvColumnSettings.getDatePattern()));
 		}
 
 		final String name = csvRow.getColumns().get(csvColumnSettings.columnName() - 1);
@@ -198,7 +198,7 @@ public class TransactionImportController extends BaseController
 		final Optional<Integer> parsedAmountOptional = AmountParser.parse(amount);
 		if(parsedAmountOptional.isEmpty())
 		{
-			throw new CsvTransactionParseException(Localization.getString("transactions.import.error.parse.amount", index, csvRow));
+			throw new CsvTransactionParseException(Localization.getString("transactions.import.error.parse.amount", index + 1));
 		}
 
 		return new CsvTransaction(parsedDateOptional.get(), name, parsedAmountOptional.get(), description, CsvTransactionStatus.PENDING);
diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/CsvColumnSettings.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/CsvColumnSettings.java
index 4affb3e24f370e3cae5690c32dde8c0b4c94f732..bae02c77575cbad24808baf13f3bc0f398039803 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/CsvColumnSettings.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/csvimport/CsvColumnSettings.java
@@ -1,5 +1,78 @@
 package de.deadlocker8.budgetmaster.transactions.csvimport;
 
-public record CsvColumnSettings(int columnDate, int columnName, int columnAmount, int columnDescription)
+import java.util.Objects;
+
+public final class CsvColumnSettings
 {
+	private final int columnDate;
+	private String datePattern;
+	private final int columnName;
+	private final int columnAmount;
+	private final int columnDescription;
+
+	public CsvColumnSettings(int columnDate, String datePattern, int columnName, int columnAmount, int columnDescription)
+	{
+		this.columnDate = columnDate;
+		this.datePattern = datePattern;
+		this.columnName = columnName;
+		this.columnAmount = columnAmount;
+		this.columnDescription = columnDescription;
+	}
+
+	public int columnDate()
+	{
+		return columnDate;
+	}
+
+	public String getDatePattern()
+	{
+		return datePattern;
+	}
+
+	public void setDatePattern(String datePattern)
+	{
+		this.datePattern = datePattern;
+	}
+
+	public int columnName()
+	{
+		return columnName;
+	}
+
+	public int columnAmount()
+	{
+		return columnAmount;
+	}
+
+	public int columnDescription()
+	{
+		return columnDescription;
+	}
+
+	@Override
+	public boolean equals(Object o)
+	{
+		if(this == o) return true;
+		if(o == null || getClass() != o.getClass()) return false;
+		CsvColumnSettings that = (CsvColumnSettings) o;
+		return columnDate == that.columnDate && columnName == that.columnName && columnAmount == that.columnAmount && columnDescription == that.columnDescription && Objects.equals(datePattern, that.datePattern);
+	}
+
+	@Override
+	public int hashCode()
+	{
+		return Objects.hash(columnDate, datePattern, columnName, columnAmount, columnDescription);
+	}
+
+	@Override
+	public String toString()
+	{
+		return "CsvColumnSettings{" +
+				"columnDate=" + columnDate +
+				", datePattern='" + datePattern + '\'' +
+				", columnName=" + columnName +
+				", columnAmount=" + columnAmount +
+				", columnDescription=" + columnDescription +
+				'}';
+	}
 }
diff --git a/BudgetMasterServer/src/main/resources/languages/base_de.properties b/BudgetMasterServer/src/main/resources/languages/base_de.properties
index 9de7181377868ed2ab88f2d443436df526c7ac12..e95742ea57c553ec5da9a32654ed2c8478a3c33e 100644
--- a/BudgetMasterServer/src/main/resources/languages/base_de.properties
+++ b/BudgetMasterServer/src/main/resources/languages/base_de.properties
@@ -375,6 +375,7 @@ transactions.import.column=Spalte
 transactions.import.separator=Trennzeichen
 transactions.import.encoding=Kodierung
 transactions.import.numberOfLinesToSkip=Zeilen überspringen
+transactions.import.datePattern=Datumsformat
 transactions.import.status=Status
 transactions.import.status.pending=ausstehend
 transactions.import.status.imported=importiert
@@ -382,7 +383,7 @@ transactions.import.status.skipped=übersprungen
 transactions.import.actions=Aktionen
 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)
+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.
 
 repeating.button.add=Wiederholung hinzufügen
 repeating.button.remove=Wiederholung entfernen
diff --git a/BudgetMasterServer/src/main/resources/languages/base_en.properties b/BudgetMasterServer/src/main/resources/languages/base_en.properties
index f54cefd9576a9c637423ace87ca160573d89f953..d1a005c6ae0c54b573b52012ff6fe1d9ac6ae845 100644
--- a/BudgetMasterServer/src/main/resources/languages/base_en.properties
+++ b/BudgetMasterServer/src/main/resources/languages/base_en.properties
@@ -374,6 +374,7 @@ transactions.import.column=Column
 transactions.import.separator=Separator
 transactions.import.encoding=Encoding
 transactions.import.numberOfLinesToSkip=Skip lines
+transactions.import.datePattern=Date pattern
 transactions.import.status=Status
 transactions.import.status.pending=pending
 transactions.import.status.imported=imported
@@ -381,7 +382,7 @@ transactions.import.status.skipped=skipped
 transactions.import.actions=Actions
 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)
+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}".
 
 repeating.button.add=Add repetition
 repeating.button.remove=Remove repetition
diff --git a/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl b/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl
index 275b9afa822e63a39855c4e6f43037dfcce2c9d8..e848d9ef3fabac5b6bfa18883d1f1985cf68af39 100644
--- a/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl
+++ b/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl
@@ -129,6 +129,16 @@
                     <label class="input-label" for="columnDate">${locale.getString("transactions.import.column")}</label>
                 </div>
             </div>
+            <div class="row">
+                <div class="input-field col s5 offset-s6 m3 offset-m6 l3 offset-l6 no-margin-top no-margin-bottom">
+                    <input id="datePattern" type="text" required name="datePattern" <@validation.validation "datePattern"/> value="<#if csvColumnSettings??>${csvColumnSettings.datePattern()}<#else>dd.MM.yyyy</#if>">
+                    <label class="input-label" for="datePattern">${locale.getString("transactions.import.datePattern")}</label>
+                </div>
+                <div class="col s1 m1 l1">
+                    <@header.buttonFlat url='https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html' icon='help_outline' localizationKey='' target='_blank' classes='text-default'/>
+                </div>
+            </div>
+
             <div class="row">
                 <div class="col s6 m4 offset-m2 l3 offset-l3">
                     <div class="transaction-import-text-with-icon">