diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java
index 0f95e0d69398536d2cb0850f8a890c9d500856af..2668621bb91f488237d2287a410be65ba6468a80 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java
@@ -115,8 +115,15 @@ public class TransactionController extends BaseController
 	}
 
 	@GetMapping("/newTransaction/{type}")
-	public String newTransaction(Model model, @CookieValue("currentDate") String cookieDate, @PathVariable String type)
+	public String newTransaction(WebRequest request, Model model, @CookieValue("currentDate") String cookieDate, @PathVariable String type)
 	{
+		final AccountState accountState = helpers.getCurrentAccount().getAccountState();
+		if(accountState != AccountState.FULL_ACCESS)
+		{
+			WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.transaction.add.warning", Localization.getString(accountState.getLocalizationKey())), NotificationType.WARNING));
+			return "redirect:/transactions";
+		}
+
 		DateTime date = dateService.getDateTimeFromCookie(cookieDate);
 		Transaction emptyTransaction = new Transaction();
 		emptyTransaction.setCategory(categoryService.findByType(CategoryType.NONE));
diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties
index 20d448619f49ab9815979fa9b0b365e9c2b374e1..1a7e466f80fb81c492424027b31dcddcd29adfb3 100644
--- a/src/main/resources/languages/base_de.properties
+++ b/src/main/resources/languages/base_de.properties
@@ -151,6 +151,8 @@ upload.image.error.invalid.extension=Die Dateiendung "{0}" is nicht zugelassen f
 delete.image.success=Erfolgreich gelöscht
 delete.image.error.not.existing=Fehler: Bild mit ID {0} existiert nicht
 
+notification.transaction.add.warning=Konto mit Sichtbarkeit "{0}" erlaubt keine neuen Buchungen!
+
 # WARNING
 warning.text.account.delete=Das Konto "{0}" kann nicht gelöscht werden, da mindestens ein Konto existieren muss. Um dieses Konto zu löschen musst du zuerst ein neues anlegen.
 warning.account.edit.state=Für mindestens ein Konto muss die Sichtbarkeit auf "{0}" gesetzt sein!
diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties
index fee073554594d79783d7f516fbe6c9f5ef183b53..6093f8c2c87b85910d3de6e1085abae6cd6dcd20 100644
--- a/src/main/resources/languages/base_en.properties
+++ b/src/main/resources/languages/base_en.properties
@@ -151,6 +151,8 @@ upload.image.error.invalid.extension=File extension "{0}" is not allowed for ima
 delete.image.success=Successfully deleted
 delete.image.error.not.existing=Error: Image with ID {0} does not exist
 
+notification.transaction.add.warning=Account with visibility "{0}" does not allow new transactions!
+
 # WARNING
 warning.text.account.delete=The account "{0}" could not be deleted, because at least one account must exist at all time. You have to create a new account in order to delete this one.
 warning.account.edit.state=At least one account must have set it''s visibility to "{0}"!
diff --git a/src/main/resources/templates/transactions/transactionsMacros.ftl b/src/main/resources/templates/transactions/transactionsMacros.ftl
index 6ca95dbb1700c77c8bccfa12f34293774d393fa8..8fdaf57b20d71477352927cf8edc9b3b57752276 100644
--- a/src/main/resources/templates/transactions/transactionsMacros.ftl
+++ b/src/main/resources/templates/transactions/transactionsMacros.ftl
@@ -96,12 +96,18 @@
 
 <#macro buttons isFilterActive>
     <div class="row hide-on-small-only valign-wrapper">
-        <div class="col s6 right-align transactions-buttons-col">
-            <@buttonNew "new-transaction-button-list new-transaction-button-list-large"/>
-        </div>
-        <div class="col s6 left-align">
-            <@buttonFilter isFilterActive/>
-        </div>
+        <#if helpers.getCurrentAccount().getAccountState().name() == 'FULL_ACCESS'>
+            <div class="col s6 right-align transactions-buttons-col">
+                <@buttonNew "new-transaction-button-list new-transaction-button-list-large" helpers.getCurrentAccount()/>
+            </div>
+            <div class="col s6 left-align">
+                <@buttonFilter isFilterActive/>
+            </div>
+        <#else>
+            <div class="col s12 center-align">
+                <@buttonFilter isFilterActive/>
+            </div>
+        </#if>
     </div>
 
     <div class="hide-on-med-and-up center-align">
@@ -112,13 +118,17 @@
                 </div>
             </div>
             <div class="col s12 transactions-buttons-col">
-                <@buttonNew "new-transaction-button-list "/>
+                <@buttonNew "new-transaction-button-list " helpers.getCurrentAccount()/>
             </div>
         </div>
     </div>
 </#macro>
 
-<#macro buttonNew listClasses>
+<#macro buttonNew listClasses currentAccount>
+    <#if currentAccount.getAccountState().name() != 'FULL_ACCESS'>
+        <#return/>
+    </#if>
+
     <div class="fixed-action-btn new-transaction-button">
         <a class="btn-floating btn-large btn waves-effect waves-light background-blue" id="button-new-transaction">
             <i class="material-icons left">add</i>${locale.getString("title.transaction.new.short")}