diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSearchSpecifications.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSearchSpecifications.java
index 4da6e8dabcbf7ecbd0bef17b8ba729cfe8764ad8..ed3afbb43e66fdf343f1dcbf2c5e9400a1f2cc87 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSearchSpecifications.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSearchSpecifications.java
@@ -1,5 +1,6 @@
 package de.deadlocker8.budgetmaster.transactions;
 
+import de.deadlocker8.budgetmaster.accounts.AccountState;
 import de.deadlocker8.budgetmaster.categories.Category;
 import de.deadlocker8.budgetmaster.search.Search;
 import de.deadlocker8.budgetmaster.tags.Tag;
@@ -47,9 +48,13 @@ public class TransactionSearchSpecifications
 				predicates.add(builder.like(builder.lower(tagJoin.get(Tag_.name).as(String.class)), pattern));
 			}
 
-			query.orderBy(builder.desc(transaction.get(Transaction_.date)));
 			Predicate[] predicatesArray = new Predicate[predicates.size()];
-			return builder.or(predicates.toArray(predicatesArray));
+			Predicate predicatesCombined = builder.or(predicates.toArray(predicatesArray));
+
+			Predicate accountStatePredicate = transaction.get(Transaction_.account).get("accountState").in(List.of(AccountState.FULL_ACCESS, AccountState.READ_ONLY));
+
+			query.orderBy(builder.desc(transaction.get(Transaction_.date)));
+			return builder.and(accountStatePredicate, predicatesCombined);
 		};
 	}
 }
diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java b/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java
index 40e281d69b1f9665503a04f8423b6bf4572bd329..3443d602576d82a34a847c0a96ca6f46df50d89e 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java
@@ -2,6 +2,7 @@ package de.deadlocker8.budgetmaster.unit;
 
 import de.deadlocker8.budgetmaster.accounts.Account;
 import de.deadlocker8.budgetmaster.accounts.AccountRepository;
+import de.deadlocker8.budgetmaster.accounts.AccountState;
 import de.deadlocker8.budgetmaster.accounts.AccountType;
 import de.deadlocker8.budgetmaster.categories.Category;
 import de.deadlocker8.budgetmaster.categories.CategoryRepository;
@@ -41,6 +42,7 @@ public class TransactionSearchSpecificationsTest
 	private Transaction transaction2;
 	private Transaction repeatingTransaction;
 	private Transaction transferTransaction;
+	private Transaction transactionFromHiddenAccount;
 
 	@Autowired
 	private CategoryRepository categoryRepository;
@@ -51,6 +53,7 @@ public class TransactionSearchSpecificationsTest
 	private AccountRepository accountRepository;
 	private Account account;
 	private Account account2;
+	private Account accountHidden;
 
 	@Autowired
 	private TagRepository tagRepository;
@@ -66,6 +69,8 @@ public class TransactionSearchSpecificationsTest
 	{
 		account = accountRepository.save(new Account("TestAccount", AccountType.CUSTOM));
 		account2 = accountRepository.save(new Account("TestAccount2", AccountType.CUSTOM));
+		accountHidden = accountRepository.save(new Account("Hidden account", AccountType.CUSTOM));
+		accountHidden.setAccountState(AccountState.HIDDEN);
 
 		category1 = categoryRepository.save(new Category("Category1", "#ff0000", CategoryType.CUSTOM));
 		category2 = categoryRepository.save(new Category("xxx", "#ff0000", CategoryType.CUSTOM));
@@ -121,6 +126,14 @@ public class TransactionSearchSpecificationsTest
 		transferTransaction.setAccount(account);
 		transferTransaction.setTransferAccount(account2);
 		transferTransaction = transactionRepository.save(transferTransaction);
+
+		transactionFromHiddenAccount = new Transaction();
+		transactionFromHiddenAccount.setName("inside hidden account");
+		transactionFromHiddenAccount.setAmount(-525);
+		transactionFromHiddenAccount.setDate(new DateTime(2018, 11, 3, 12, 0, 0, 0));
+		transactionFromHiddenAccount.setCategory(category2);
+		transactionFromHiddenAccount.setAccount(accountHidden);
+		transactionFromHiddenAccount = transactionRepository.save(transactionFromHiddenAccount);
 	}
 
 	@Test
@@ -247,4 +260,14 @@ public class TransactionSearchSpecificationsTest
 		assertThat(results).hasSize(1)
 				.contains(transaction1);
 	}
+
+	@Test
+	public void getMatches_IgnoreTransactionsFromHiddenAccounts()
+	{
+		Search search = new Search("hidden", true, false, false, false, 0);
+		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
+
+		List<Transaction> results = transactionRepository.findAll(spec);
+		assertThat(results).isEmpty();
+	}
 }
\ No newline at end of file