diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/TransactionTestHelper.java b/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/TransactionTestHelper.java
index 71c8393076264846b46943e2f8f71a8ec8bec9d6..f8268f3e8904daff978c20e3661826cd94d9aa0e 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/TransactionTestHelper.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/TransactionTestHelper.java
@@ -24,7 +24,7 @@ public class TransactionTestHelper
 
 		// icon
 		final List<WebElement> icons = columns.get(2).findElements(By.tagName("i"));
-		assertThat(icons).hasSize(1);
+		assertThat(icons).hasSize(determineNumberOfTransactionTypeIcons(repeatIconVisible, transferIconIsVisible));
 		assertThat(icons.get(0).isDisplayed()).isEqualTo(repeatIconVisible || transferIconIsVisible);
 		if(repeatIconVisible)
 		{
@@ -47,6 +47,21 @@ public class TransactionTestHelper
 		assertThat(columns.get(4).getText()).contains(amount);
 	}
 
+	private static int determineNumberOfTransactionTypeIcons(boolean repeatIconVisible, boolean transferIconIsVisible)
+	{
+		int numberOfIcons = 0;
+		if(repeatIconVisible)
+		{
+			numberOfIcons++;
+		}
+		if(transferIconIsVisible)
+		{
+			numberOfIcons++;
+		}
+
+		return numberOfIcons;
+	}
+
 	public static void selectOptionFromDropdown(WebDriver driver, By selectLocator, String nameToSelect)
 	{
 		WebElement select = driver.findElement(selectLocator);
@@ -74,4 +89,13 @@ public class TransactionTestHelper
 				.filter(webElement -> webElement.getText().equals(accountName))
 				.findFirst().orElseThrow().click();
 	}
+
+	public static void selectTransferAccountByName(WebDriver driver, String transferAccountName)
+	{
+		final WebElement categorySelect = driver.findElement(By.cssSelector(".transfer-account-select-wrapper .custom-select"));
+		categorySelect.click();
+		driver.findElements(By.cssSelector(".transfer-account-select-wrapper .custom-select-item-name")).stream()
+				.filter(webElement -> webElement.getText().equals(transferAccountName))
+				.findFirst().orElseThrow().click();
+	}
 }
diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java
index 19c85fff9ae6340641175bf8e10a092e6ec25097..7b3fb0566dbe8515f8a80f838de1d084b45846d9 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java
@@ -46,17 +46,23 @@ class NewTransactionRecurringTest extends SeleniumTestBase
 		final Account account2 = new Account("Account2", AccountType.CUSTOM);
 
 		helper.uploadDatabase(path, Arrays.asList("DefaultAccount0815", "sfsdf"), List.of(account1, account2));
-		// open transactions page
+
+		openNewTransactionPage("Transaction");
+	}
+
+	private void openNewTransactionPage(String type)
+	{
 		driver.get(helper.getUrl() + "/transactions");
+
 		driver.findElement(By.id("button-new-transaction")).click();
 
 		WebDriverWait wait = new WebDriverWait(driver, 5);
-		final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]");
+		final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'" + type + "')]");
 		wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
 		driver.findElement(locator).click();
 
 		wait = new WebDriverWait(driver, 5);
-		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transaction"));
+		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New " + type));
 	}
 
 	@Test
@@ -195,6 +201,82 @@ class NewTransactionRecurringTest extends SeleniumTestBase
 		TransactionTestHelper.assertTransactionColumns(columns, dateString, categoryName, "rgb(46, 124, 43)", true, false, name, description, "-" + amount);
 	}
 
+	@Test
+	void test_newTransaction_transfer()
+	{
+		openNewTransactionPage("Transfer");
+
+		String name = "My recurring transfer";
+		String amount = "30.00";
+		String description = "sit amet";
+		String categoryName = "sdfdsf";
+		String repeatingModifier = "1";
+		String repeatingModifierType = "Days";
+		String transferAccountName = "Account2";
+
+		// fill form
+		driver.findElement(By.id("transaction-name")).sendKeys(name);
+		driver.findElement(By.id("transaction-amount")).sendKeys(amount);
+		driver.findElement(By.id("transaction-description")).sendKeys(description);
+		TransactionTestHelper.selectCategoryByName(driver, categoryName);
+		TransactionTestHelper.selectTransferAccountByName(driver, transferAccountName);
+
+		driver.findElement(By.id("button-transaction-add-repeating-option")).click();
+		WebDriverWait wait = new WebDriverWait(driver, 5);
+		wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("button-transaction-remove-repeating-option"))));
+
+		// fill repeating options
+		driver.findElement(By.id("transaction-repeating-modifier")).sendKeys(repeatingModifier);
+		TransactionTestHelper.selectOptionFromDropdown(driver, By.cssSelector("#transaction-repeating-modifier-row"), repeatingModifierType);
+
+		// fill date
+		driver.findElement(By.id("transaction-datepicker")).click();
+		List<WebElement> datePickerCells = driver.findElements(By.cssSelector(".datepicker-table td"));
+		for(WebElement cell : datePickerCells)
+		{
+			if(cell.getText().equals("3"))
+			{
+				cell.click();
+				driver.findElement(By.cssSelector(".datepicker-done")).click();
+				break;
+			}
+		}
+
+		wait = new WebDriverWait(driver, 5);
+		wait.until(ExpectedConditions.invisibilityOfAllElements(driver.findElements(By.cssSelector(".modal-overlay"))));
+
+		// submit form
+		wait = new WebDriverWait(driver, 5);
+		wait.until(ExpectedConditions.invisibilityOfElementLocated(By.className("modal-overlay")));
+
+		WebElement submitButton = driver.findElement(By.id("button-save-transaction"));
+		((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", submitButton);
+
+		submitButton.click();
+
+		wait = new WebDriverWait(driver, 5);
+		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
+
+		// assert
+		assertThat(driver.getCurrentUrl()).endsWith("/transactions");
+
+		List<WebElement> transactionsRows = driver.findElements(By.cssSelector(".transaction-container .hide-on-med-and-down.transaction-row-top"));
+		assertThat(transactionsRows).hasSizeGreaterThan(2);
+
+		final WebElement row = transactionsRows.get(transactionsRows.size() - 2);
+		final List<WebElement> columns = row.findElements(By.className("col"));
+		assertThat(columns).hasSize(6);
+
+		// check columns
+		final String dateString = new SimpleDateFormat("03.MM.").format(new Date());
+		TransactionTestHelper.assertTransactionColumns(columns, dateString, categoryName, "rgb(46, 124, 43)", true, true, name, description, amount);
+
+		driver.get(helper.getUrl() + "/transactions/26/edit");
+
+		assertThat(driver.findElement(By.cssSelector(".account-select-wrapper .custom-select-selected-item .category-circle")).getAttribute("data-value")).isEqualTo("2");
+		assertThat(driver.findElement(By.cssSelector(".transfer-account-select-wrapper .custom-select-selected-item .category-circle")).getAttribute("data-value")).isEqualTo("4");
+	}
+
 	@Test
 	void test_edit()
 	{
@@ -218,5 +300,23 @@ class NewTransactionRecurringTest extends SeleniumTestBase
 
 		assertThat(driver.findElement(By.id("repeating-end-after-x-times")).isSelected()).isTrue();
 		assertThat(driver.findElement(By.id("transaction-repeating-end-after-x-times-input")).getAttribute("value")).isEqualTo("20");
+
+		assertThat(driver.findElement(By.id("button-transaction-remove-repeating-option")).isDisplayed()).isFalse();
+	}
+
+	@Test
+	void test_new_removeRepeatingOption()
+	{
+		driver.findElement(By.id("button-transaction-add-repeating-option")).click();
+		WebDriverWait wait = new WebDriverWait(driver, 5);
+		wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("button-transaction-remove-repeating-option"))));
+
+		assertThat(driver.findElement(By.id("button-transaction-remove-repeating-option")).isDisplayed()).isTrue();
+
+		driver.findElement(By.id("button-transaction-remove-repeating-option")).click();
+		wait = new WebDriverWait(driver, 5);
+		wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("button-transaction-add-repeating-option"))));
+
+		assertThat(driver.findElement(By.id("button-transaction-remove-repeating-option")).isDisplayed()).isFalse();
 	}
 }
\ No newline at end of file