diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java
index ddd726cdddf51ced3d584c014a27adc2c62544a0..7bc9edd4f3834a2e79c8e6e8b626b409e1d06726 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountService.java
@@ -7,6 +7,7 @@ import de.deadlocker8.budgetmaster.icon.IconService;
 import de.deadlocker8.budgetmaster.services.AccessAllEntities;
 import de.deadlocker8.budgetmaster.services.AccessEntityByID;
 import de.deadlocker8.budgetmaster.services.Resettable;
+import de.deadlocker8.budgetmaster.templates.TemplateService;
 import de.deadlocker8.budgetmaster.transactions.TransactionService;
 import de.deadlocker8.budgetmaster.utils.Strings;
 import de.thecodelabs.utils.util.Localization;
@@ -31,14 +32,16 @@ public class AccountService implements Resettable, AccessAllEntities<Account>, A
 
 	private final AccountRepository accountRepository;
 	private final TransactionService transactionService;
+	private final TemplateService templateService;
 	private final UserRepository userRepository;
 	private final IconService iconService;
 
 	@Autowired
-	public AccountService(AccountRepository accountRepository, TransactionService transactionService, UserRepository userRepository, IconService iconService)
+	public AccountService(AccountRepository accountRepository, TransactionService transactionService, TemplateService templateService, UserRepository userRepository, IconService iconService)
 	{
 		this.accountRepository = accountRepository;
 		this.transactionService = transactionService;
+		this.templateService = templateService;
 		this.userRepository = userRepository;
 		this.iconService = iconService;
 
@@ -95,6 +98,8 @@ public class AccountService implements Resettable, AccessAllEntities<Account>, A
 		transactionService.deleteTransactionsWithAccount(accountToDelete);
 		accountToDelete.setReferringTransactions(new ArrayList<>());
 
+		templateService.unsetTemplatesWithAccount(accountToDelete);
+
 		// select "all accounts" as selected account
 		selectAccount(accountRepository.findAllByType(AccountType.ALL).get(0).getID());
 
diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java
index a868be082e11acf518d3c0dada5e7f7a5c897448..8e8dfe510355a4bd8ae02ae20403eab619d51538 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateController.java
@@ -155,7 +155,7 @@ public class TemplateController extends BaseController
 		newTransaction.setTags(template.getTags());
 		newTransaction.setIsExpenditure(template.isExpenditure());
 
-		templateService.prepareTemplateForNewTransaction(newTransaction, true);
+		templateService.prepareTemplateForNewTransaction(newTransaction, true, accountService.getSelectedAccountOrDefaultAsFallback());
 
 		if(newTransaction.getAmount() == null && newTransaction.isExpenditure() == null)
 		{
@@ -176,7 +176,7 @@ public class TemplateController extends BaseController
 	public String newTemplate(Model model)
 	{
 		final Template emptyTemplate = new Template();
-		templateService.prepareTemplateForNewTransaction(emptyTemplate, false);
+		templateService.prepareTemplateForNewTransaction(emptyTemplate, false, accountService.getSelectedAccountOrDefaultAsFallback());
 		templateService.prepareModelNewOrEdit(model, false, emptyTemplate, accountService.getAllActivatedAccountsAsc());
 		return ReturnValues.NEW_ENTITY;
 	}
@@ -260,7 +260,7 @@ public class TemplateController extends BaseController
 		}
 
 		Template template = templateOptional.get();
-		templateService.prepareTemplateForNewTransaction(template, false);
+		templateService.prepareTemplateForNewTransaction(template, false, accountService.getSelectedAccountOrDefaultAsFallback());
 		templateService.prepareModelNewOrEdit(model, true, template, accountService.getAllActivatedAccountsAsc());
 
 		return ReturnValues.NEW_ENTITY;
diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateRepository.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateRepository.java
index 854f8e4a0df44a702da3f82eb6cc6a907be8a2da..9b0607e1c7abeeda64cec06a7c0e7d033369acd3 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateRepository.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateRepository.java
@@ -1,6 +1,8 @@
 package de.deadlocker8.budgetmaster.templates;
 
+import de.deadlocker8.budgetmaster.accounts.Account;
 import de.deadlocker8.budgetmaster.tags.Tag;
+import de.deadlocker8.budgetmaster.transactions.Transaction;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 
@@ -12,4 +14,8 @@ public interface TemplateRepository extends JpaRepository<Template, Integer>, Jp
 	List<Template> findAllByOrderByTemplateNameAsc();
 
 	List<Template> findAllByTagsContaining(Tag tag);
+
+	List<Template> findAllByAccount(Account account);
+
+	List<Template> findAllByTransferAccount(Account account);
 }
\ No newline at end of file
diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java
index 75a80443d83f6186e68570ff8aba6c86f1e76d5a..d5a19fcfd968fa36f48d1f8ae209d795f03f0da5 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java
@@ -3,7 +3,6 @@ package de.deadlocker8.budgetmaster.templates;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import de.deadlocker8.budgetmaster.accounts.Account;
-import de.deadlocker8.budgetmaster.accounts.AccountService;
 import de.deadlocker8.budgetmaster.accounts.AccountState;
 import de.deadlocker8.budgetmaster.categories.CategoryService;
 import de.deadlocker8.budgetmaster.categories.CategoryType;
@@ -37,15 +36,13 @@ public class TemplateService implements Resettable, AccessAllEntities<Template>,
 			.create();
 
 	private final TemplateRepository templateRepository;
-	private final AccountService accountService;
 	private final CategoryService categoryService;
 	private final TemplateGroupService templateGroupService;
 
 	@Autowired
-	public TemplateService(TemplateRepository templateRepository, AccountService accountService, CategoryService categoryService, TemplateGroupService templateGroupService)
+	public TemplateService(TemplateRepository templateRepository, CategoryService categoryService, TemplateGroupService templateGroupService)
 	{
 		this.templateRepository = templateRepository;
-		this.accountService = accountService;
 		this.categoryService = categoryService;
 		this.templateGroupService = templateGroupService;
 
@@ -107,7 +104,7 @@ public class TemplateService implements Resettable, AccessAllEntities<Template>,
 		return getRepository().save(template);
 	}
 
-	public void prepareTemplateForNewTransaction(TransactionBase template, boolean prepareAccount)
+	public void prepareTemplateForNewTransaction(TransactionBase template, boolean prepareAccount, Account selectedOrFallbackAccount)
 	{
 		if(template.getCategory() == null)
 		{
@@ -116,19 +113,19 @@ public class TemplateService implements Resettable, AccessAllEntities<Template>,
 
 		if(prepareAccount && template.getAccount() == null)
 		{
-			template.setAccount(accountService.getSelectedAccountOrDefaultAsFallback());
+			template.setAccount(selectedOrFallbackAccount);
 		}
 
 		final Account account = template.getAccount();
 		if(account != null && account.getAccountState() != AccountState.FULL_ACCESS)
 		{
-			template.setAccount(accountService.getSelectedAccountOrDefaultAsFallback());
+			template.setAccount(selectedOrFallbackAccount);
 		}
 
 		final Account transferAccount = template.getTransferAccount();
 		if(transferAccount != null && transferAccount.getAccountState() != AccountState.FULL_ACCESS)
 		{
-			template.setTransferAccount(accountService.getSelectedAccountOrDefaultAsFallback());
+			template.setTransferAccount(selectedOrFallbackAccount);
 		}
 	}
 
@@ -162,4 +159,19 @@ public class TemplateService implements Resettable, AccessAllEntities<Template>,
 	{
 		return templateRepository.findById(ID);
 	}
+
+	public void unsetTemplatesWithAccount(Account account)
+	{
+		for(Template referringTemplate : templateRepository.findAllByAccount(account))
+		{
+			referringTemplate.setAccount(null);
+			templateRepository.save(referringTemplate);
+		}
+
+		for(Template referringTemplate : templateRepository.findAllByTransferAccount(account))
+		{
+			referringTemplate.setTransferAccount(null);
+			templateRepository.save(referringTemplate);
+		}
+	}
 }
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/AccountServiceTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/AccountServiceTest.java
index 9ee585404b22966445552366ac6b6455e7b5bee5..09f67e20a3f8b3ba8220984507ac3d2836b7309c 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/AccountServiceTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/AccountServiceTest.java
@@ -5,6 +5,7 @@ import de.deadlocker8.budgetmaster.authentication.UserRepository;
 import de.deadlocker8.budgetmaster.icon.Icon;
 import de.deadlocker8.budgetmaster.icon.IconRepository;
 import de.deadlocker8.budgetmaster.icon.IconService;
+import de.deadlocker8.budgetmaster.templates.TemplateService;
 import de.deadlocker8.budgetmaster.transactions.TransactionService;
 import de.deadlocker8.budgetmaster.unit.helpers.LocalizedTest;
 import de.deadlocker8.budgetmaster.utils.Strings;
@@ -32,6 +33,9 @@ class AccountServiceTest
 	@Mock
 	private TransactionService transactionService;
 
+	@Mock
+	private TemplateService templateService;
+
 	@Mock
 	private UserRepository userRepository;
 
@@ -82,7 +86,7 @@ class AccountServiceTest
 		Mockito.when(iconService.getRepository()).thenReturn(iconRepository);
 		Mockito.when(iconRepository.save(new Icon("fas fa-landmark", null))).thenReturn(ICON_PLACEHOLDER);
 
-		accountService = new AccountService(accountRepository, transactionService, userRepository, iconService);
+		accountService = new AccountService(accountRepository, transactionService, templateService, userRepository, iconService);
 	}
 
 	@Test
@@ -152,6 +156,7 @@ class AccountServiceTest
 		accountService.deleteAccount(15);
 
 		Mockito.verify(transactionService, Mockito.atLeast(1)).deleteTransactionsWithAccount(Mockito.any());
+		Mockito.verify(templateService, Mockito.atLeast(1)).unsetTemplatesWithAccount(Mockito.any());
 
 		// placeholder account is set as selected account
 		final Account accountSelected = new Account("Placeholder", AccountType.ALL);
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TemplateServiceTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TemplateServiceTest.java
index aaea2240b58658153eb751d7caac167e7cc5f2e2..fb8711816cc3190d73b556d6e3f50464ce17ccf6 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TemplateServiceTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TemplateServiceTest.java
@@ -58,7 +58,7 @@ class TemplateServiceTest
 		final Template expectedTemplate = new Template();
 		expectedTemplate.setCategory(CATEGORY_NONE);
 
-		templateService.prepareTemplateForNewTransaction(template, false);
+		templateService.prepareTemplateForNewTransaction(template, false, new Account("my account", AccountType.CUSTOM));
 		assertThat(template).isEqualTo(expectedTemplate);
 	}
 
@@ -76,7 +76,7 @@ class TemplateServiceTest
 		expectedTemplate.setCategory(CATEGORY_NONE);
 		expectedTemplate.setAccount(account);
 
-		templateService.prepareTemplateForNewTransaction(template, false);
+		templateService.prepareTemplateForNewTransaction(template, false, account);
 		assertThat(template).isEqualTo(expectedTemplate);
 	}
 
@@ -97,7 +97,7 @@ class TemplateServiceTest
 		expectedTemplate.setCategory(CATEGORY_NONE);
 		expectedTemplate.setAccount(ACCOUNT_SELECTED);
 
-		templateService.prepareTemplateForNewTransaction(template, false);
+		templateService.prepareTemplateForNewTransaction(template, false, ACCOUNT_SELECTED);
 		assertThat(template).isEqualTo(expectedTemplate);
 	}
 
@@ -120,7 +120,7 @@ class TemplateServiceTest
 		expectedTemplate.setAccount(account);
 		expectedTemplate.setTransferAccount(transferAccount);
 
-		templateService.prepareTemplateForNewTransaction(template, false);
+		templateService.prepareTemplateForNewTransaction(template, false, account);
 		assertThat(template).isEqualTo(expectedTemplate);
 	}
 
@@ -146,7 +146,7 @@ class TemplateServiceTest
 		expectedTemplate.setAccount(account);
 		expectedTemplate.setTransferAccount(ACCOUNT_SELECTED);
 
-		templateService.prepareTemplateForNewTransaction(template, false);
+		templateService.prepareTemplateForNewTransaction(template, false, ACCOUNT_SELECTED);
 		assertThat(template).isEqualTo(expectedTemplate);
 	}
 
@@ -163,7 +163,7 @@ class TemplateServiceTest
 		expectedTemplate.setCategory(CATEGORY_NONE);
 		expectedTemplate.setAccount(ACCOUNT_SELECTED);
 
-		templateService.prepareTemplateForNewTransaction(template, true);
+		templateService.prepareTemplateForNewTransaction(template, true, ACCOUNT_SELECTED);
 		assertThat(template).isEqualTo(expectedTemplate);
 	}
 }