diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java
index f07261a57ebab61f383e003064f60a821bcfec57..4edf2e672b0dfdafd2ef8b90ab12a0694d66e42d 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java
@@ -65,10 +65,7 @@ public class TemplateController extends BaseController
 	@GetMapping("/templates/fromTransactionModal")
 	public String fromTransactionModal(Model model)
 	{
-		final List<String> templateNames = templateService.getRepository().findAll().stream()
-				.map(Template::getTemplateName)
-				.collect(Collectors.toList());
-		model.addAttribute("existingTemplateNames", GSON.toJson(templateNames));
+		model.addAttribute("existingTemplateNames", GSON.toJson(templateService.getExistingTemplateNames()));
 		return "templates/createFromTransactionModal";
 	}
 
@@ -158,7 +155,7 @@ public class TemplateController extends BaseController
 					   @RequestParam(value = "isPayment", required = false) boolean isPayment)
 	{
 
-		TemplateValidator templateValidator = new TemplateValidator();
+		TemplateValidator templateValidator = new TemplateValidator(templateService.getExistingTemplateNames());
 		templateValidator.validate(template, bindingResult);
 
 		transactionService.handleAmount(template, isPayment);
diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java
index 45c6149030cca1bca229612fbd608ccc9d177e63..d4b4768ea131fda6855786114e0af9381fd0228a 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java
@@ -99,4 +99,11 @@ public class TemplateService implements Resetable
 		model.addAttribute("isPayment", isPayment);
 		model.addAttribute("suggestionsJSON", GSON.toJson(new ArrayList<String>()));
 	}
+
+	public List<String> getExistingTemplateNames()
+	{
+		return getRepository().findAll().stream()
+				.map(Template::getTemplateName)
+				.collect(Collectors.toList());
+	}
 }
diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateValidator.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateValidator.java
index 39e12581c6914006a1bdd6bab12c22053ea7d2e8..be1effcdc7763e47a6bbb9f6ebb65b257640f341 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateValidator.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateValidator.java
@@ -6,9 +6,18 @@ import org.springframework.validation.Errors;
 import org.springframework.validation.ValidationUtils;
 import org.springframework.validation.Validator;
 
+import java.util.List;
+
 
 public class TemplateValidator implements Validator
 {
+	private List<String> existingTemplateNames;
+
+	public TemplateValidator(List<String> existingTemplateNames)
+	{
+		this.existingTemplateNames = existingTemplateNames;
+	}
+
 	public boolean supports(Class clazz)
 	{
 		return Transaction.class.equals(clazz);
@@ -17,5 +26,13 @@ public class TemplateValidator implements Validator
 	public void validate(Object obj, Errors errors)
 	{
 		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "templateName", Strings.WARNING_EMPTY_TRANSACTION_NAME);
+
+		Template template = (Template)obj;
+
+		boolean isNameAlreadyUsed = this.existingTemplateNames.stream().anyMatch(template.getTemplateName()::equalsIgnoreCase);
+		if(isNameAlreadyUsed)
+		{
+			errors.rejectValue("templateName", Strings.WARNING_DUPLICATE_TEMPLATE_NAME);
+		}
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java b/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java
index 2fc6204d21563bfe54a75fcecc6e21e12c571350..0cd2a8311a77cae81c0509fff056d3ed00ea3715 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java
@@ -28,6 +28,7 @@ public class Strings
 	public static final String WARNING_EMPTY_CHART_SCRIPT = "warning.empty.chart.script";
 	public static final String WARNING_EMPTY_NUMBER = "warning.empty.number";
 	public static final String WARNING_EMPTY_NUMBER_ZERO_ALLOWED = "warning.empty.number.zero.allowed";
+	public static final String WARNING_DUPLICATE_TEMPLATE_NAME = "warning.duplicate.template.name";
 
 	//REPORT
 	public static final String REPORT_FOOTER_LEFT = "report.footer.left";