diff --git a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java
index 7ab44329cbc54662b1f799062c2e839a916348b6..dcd09c14234d5529f015332de5c408a8c53d8fbc 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/templates/TemplateService.java
@@ -121,8 +121,7 @@ public class TemplateService implements Resettable, AccessAllEntities<Template>,
 
 		if(prepareAccount && template.getAccount() == null)
 		{
-			final Account selectedAccount = accountService.getRepository().findByIsSelected(true);
-			template.setAccount(selectedAccount);
+			template.setAccount(accountService.getRepository().findByIsDefault(true));
 		}
 
 		final Account account = template.getAccount();
diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/TemplateServiceTest.java b/src/test/java/de/deadlocker8/budgetmaster/unit/TemplateServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..8f56442b3eb41674be158b8215dc134f8b4b5788
--- /dev/null
+++ b/src/test/java/de/deadlocker8/budgetmaster/unit/TemplateServiceTest.java
@@ -0,0 +1,169 @@
+package de.deadlocker8.budgetmaster.unit;
+
+import de.deadlocker8.budgetmaster.accounts.*;
+import de.deadlocker8.budgetmaster.categories.Category;
+import de.deadlocker8.budgetmaster.categories.CategoryService;
+import de.deadlocker8.budgetmaster.categories.CategoryType;
+import de.deadlocker8.budgetmaster.icon.IconService;
+import de.deadlocker8.budgetmaster.images.ImageService;
+import de.deadlocker8.budgetmaster.templates.Template;
+import de.deadlocker8.budgetmaster.templates.TemplateRepository;
+import de.deadlocker8.budgetmaster.templates.TemplateService;
+import de.deadlocker8.budgetmaster.unit.helpers.LocalizedTest;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+@ExtendWith(SpringExtension.class)
+@LocalizedTest
+class TemplateServiceTest
+{
+	private static final Category CATEGORY_NONE = new Category("No category", "#FFFFFF", CategoryType.NONE);
+
+	private static final Account ACCOUNT_DEFAULT = new Account("Default Account", AccountType.CUSTOM);
+
+	@Mock
+	private TemplateRepository templateRepository;
+
+	@Mock
+	private AccountService accountService;
+
+	@Mock
+	private AccountRepository accountRepository;
+
+	@Mock
+	private CategoryService categoryService;
+
+	@Mock
+	private ImageService imageService;
+
+	@Mock
+	private IconService iconService;
+
+	@InjectMocks
+	private TemplateService templateService;
+
+	@Test
+	void test_prepareTemplateForNewTransaction_noCategory()
+	{
+		final Template template = new Template();
+
+		Mockito.when(categoryService.findByType(CategoryType.NONE)).thenReturn(CATEGORY_NONE);
+
+		final Template expectedTemplate = new Template();
+		expectedTemplate.setCategory(CATEGORY_NONE);
+
+		templateService.prepareTemplateForNewTransaction(template, false);
+		assertThat(template).isEqualTo(expectedTemplate);
+	}
+
+	@Test
+	void test_prepareTemplateForNewTransaction_accountIsFullAccess_noPreparation()
+	{
+		final Account account = new Account("Account", AccountType.CUSTOM);
+		account.setAccountState(AccountState.FULL_ACCESS);
+
+		final Template template = new Template();
+		template.setCategory(CATEGORY_NONE);
+		template.setAccount(account);
+
+		final Template expectedTemplate = new Template();
+		expectedTemplate.setCategory(CATEGORY_NONE);
+		expectedTemplate.setAccount(account);
+
+		templateService.prepareTemplateForNewTransaction(template, false);
+		assertThat(template).isEqualTo(expectedTemplate);
+	}
+
+	@Test
+	void test_prepareTemplateForNewTransaction_accountIsNotFullAccess_noPreparation()
+	{
+		final Account account = new Account("Account", AccountType.CUSTOM);
+		account.setAccountState(AccountState.READ_ONLY);
+
+		final Template template = new Template();
+		template.setCategory(CATEGORY_NONE);
+		template.setAccount(account);
+
+		Mockito.when(accountService.getRepository()).thenReturn(accountRepository);
+		Mockito.when(accountRepository.findByIsDefault(true)).thenReturn(ACCOUNT_DEFAULT);
+
+		final Template expectedTemplate = new Template();
+		expectedTemplate.setCategory(CATEGORY_NONE);
+		expectedTemplate.setAccount(ACCOUNT_DEFAULT);
+
+		templateService.prepareTemplateForNewTransaction(template, false);
+		assertThat(template).isEqualTo(expectedTemplate);
+	}
+
+	@Test
+	void test_prepareTemplateForNewTransaction_transferAccountIsFullAccess_noPreparation()
+	{
+		final Account account = new Account("Account", AccountType.CUSTOM);
+		account.setAccountState(AccountState.FULL_ACCESS);
+
+		final Account transferAccount = new Account("Transfer Account", AccountType.CUSTOM);
+		transferAccount.setAccountState(AccountState.FULL_ACCESS);
+
+		final Template template = new Template();
+		template.setCategory(CATEGORY_NONE);
+		template.setAccount(account);
+		template.setTransferAccount(transferAccount);
+
+		final Template expectedTemplate = new Template();
+		expectedTemplate.setCategory(CATEGORY_NONE);
+		expectedTemplate.setAccount(account);
+		expectedTemplate.setTransferAccount(transferAccount);
+
+		templateService.prepareTemplateForNewTransaction(template, false);
+		assertThat(template).isEqualTo(expectedTemplate);
+	}
+
+	@Test
+	void test_prepareTemplateForNewTransaction_transferAccountIsNotFullAccess_noPreparation()
+	{
+		final Account account = new Account("Account", AccountType.CUSTOM);
+		account.setAccountState(AccountState.FULL_ACCESS);
+
+		final Account transferAccount = new Account("Transfer Account", AccountType.CUSTOM);
+		transferAccount.setAccountState(AccountState.READ_ONLY);
+
+		final Template template = new Template();
+		template.setCategory(CATEGORY_NONE);
+		template.setAccount(account);
+		template.setTransferAccount(transferAccount);
+
+		Mockito.when(accountService.getRepository()).thenReturn(accountRepository);
+		Mockito.when(accountRepository.findByIsDefault(true)).thenReturn(ACCOUNT_DEFAULT);
+
+		final Template expectedTemplate = new Template();
+		expectedTemplate.setCategory(CATEGORY_NONE);
+		expectedTemplate.setAccount(account);
+		expectedTemplate.setTransferAccount(ACCOUNT_DEFAULT);
+
+		templateService.prepareTemplateForNewTransaction(template, false);
+		assertThat(template).isEqualTo(expectedTemplate);
+	}
+
+	@Test
+	void test_prepareTemplateForNewTransaction_noAccount_withPreparation()
+	{
+		final Template template = new Template();
+		template.setCategory(CATEGORY_NONE);
+
+		Mockito.when(accountService.getRepository()).thenReturn(accountRepository);
+		Mockito.when(accountRepository.findByIsDefault(true)).thenReturn(ACCOUNT_DEFAULT);
+
+		final Template expectedTemplate = new Template();
+		expectedTemplate.setCategory(CATEGORY_NONE);
+		expectedTemplate.setAccount(ACCOUNT_DEFAULT);
+
+		templateService.prepareTemplateForNewTransaction(template, true);
+		assertThat(template).isEqualTo(expectedTemplate);
+	}
+}