diff --git a/src/de/deadlocker8/budgetmaster/logic/serverconnection/ServerTagConnection.java b/src/de/deadlocker8/budgetmaster/logic/serverconnection/ServerTagConnection.java
index 01519a042b671216b908ae1a235ecd5e5d122089..80bb67a649515c3fda5b6f30bf6d9e94073ac326 100644
--- a/src/de/deadlocker8/budgetmaster/logic/serverconnection/ServerTagConnection.java
+++ b/src/de/deadlocker8/budgetmaster/logic/serverconnection/ServerTagConnection.java
@@ -19,6 +19,7 @@ import com.google.gson.reflect.TypeToken;
 import de.deadlocker8.budgetmaster.logic.Settings;
 import de.deadlocker8.budgetmaster.logic.payment.NormalPayment;
 import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment;
+import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry;
 import de.deadlocker8.budgetmaster.logic.tag.Tag;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import tools.Read;
@@ -267,7 +268,7 @@ public class ServerTagConnection
 		}
 	}
 	
-	public ArrayList<Tag> getAllTagsForRepeatingPayment(RepeatingPayment repeatingPayment) throws Exception
+	public ArrayList<Tag> getAllTagsForRepeatingPayment(RepeatingPaymentEntry repeatingPayment) throws Exception
 	{
 		URL url = new URL(settings.getUrl() + "/tag/match/all/normal?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&repeatingPaymentID=" + repeatingPayment.getID());
 		HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection();
diff --git a/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java b/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
index ceb6e3b849862c04c97d5f6c56fc5d306057c7c9..bcfac99f547d24be2b1457b0ac827c955ca70c1e 100644
--- a/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
+++ b/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
@@ -64,6 +64,7 @@ public class Strings
     public static final String TRUSTED_HOSTS_PLACEHOLDER = "trusted.hosts.placeholder";
     public static final String VERSION = "version";
     public static final String UNDEFINED = "undefined";
+    public static final String TAGFIELD_PLACEHOLDER = "tagfield.placeholder";
     
     //REPORT
     public static final String REPORT_POSITION = "report.position";
diff --git a/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties b/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties
index 75185156f695760796198000c8448d398c2eb36a..b2d1f24ad95864eb89c0a4f6ad1225a163b6093f 100644
--- a/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties
+++ b/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties
@@ -61,6 +61,7 @@ url.placeholder=z.B. https://yourdomain.de
 currency.placeholder=z.B. \u20AC, CHF, $
 trusted.hosts.placeholder=z.B. localhost
 undefined=unbekannt
+tagfield.placeholder=Neuen Tag hier eingeben
 
 # REPORT
 report.position=Nr.
diff --git a/src/de/deadlocker8/budgetmaster/resources/languages/_en.properties b/src/de/deadlocker8/budgetmaster/resources/languages/_en.properties
index a745d5d1334d8f85729df53d1eaea4fa88e13525..1a3ae52280c71dd084fe5a3dc25a22415769509f 100644
--- a/src/de/deadlocker8/budgetmaster/resources/languages/_en.properties
+++ b/src/de/deadlocker8/budgetmaster/resources/languages/_en.properties
@@ -61,6 +61,7 @@ url.placeholder=e.g. https://yourdomain.de
 currency.placeholder=e.g. \u20AC, CHF, $
 trusted.hosts.placeholder=e.g. localhost
 undefined=undefined
+tagfield.placeholder=Enter new Tag here
 
 # REPORT
 report.position=No.
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/NewPaymentController.java b/src/de/deadlocker8/budgetmaster/ui/controller/NewPaymentController.java
index ae9c0f5719908125c62c46e0aa1f4a105f7fafb8..cc3322caac9367190611e0d59ba08717c9cf3a1c 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/NewPaymentController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/NewPaymentController.java
@@ -13,6 +13,7 @@ import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerTagConnection;
+import de.deadlocker8.budgetmaster.logic.tag.Tag;
 import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import de.deadlocker8.budgetmaster.logic.utils.Strings;
@@ -75,6 +76,7 @@ public class NewPaymentController extends BaseController implements Styleable
 	private boolean edit;
 	private Payment payment;
 	private ButtonCategoryCell buttonCategoryCell;
+	private TagField tagField;
 	
 	public NewPaymentController(Stage parentStage, Controller controller, PaymentController paymentController, boolean isPayment, boolean edit, Payment payment)
 	{
@@ -113,35 +115,59 @@ public class NewPaymentController extends BaseController implements Styleable
 	
 	@Override
 	public void init()
-	{	
+	{		
 		vboxContent.prefWidthProperty().bind(scrollPane.widthProperty().subtract(25));
 		
-		applyStyle();
+		applyStyle();		
 		
-		SpinnerValueFactory<Integer> valueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 1000, 0);
-		spinnerRepeatingPeriod.setValueFactory(valueFactory);
-		spinnerRepeatingPeriod.setEditable(true);
-		spinnerRepeatingPeriod.focusedProperty().addListener((observable, oldValue, newValue) -> {
-			if(!newValue)
+		tagField = new TagField(new ArrayList<Tag>(), new ArrayList<Tag>());
+		hboxTags.getChildren().add(tagField);
+		tagField.maxWidthProperty().bind(hboxTags.widthProperty());
+		HBox.setHgrow(tagField, Priority.ALWAYS);
+		
+		initRepeatingArea();
+		
+		if(edit)
+		{
+			prefill();
+		}
+		else
+		{
+			comboBoxCategory.setValue(controller.getCategoryHandler().getCategory(1));
+			checkBoxRepeat.setSelected(false);
+			radioButtonPeriod.setSelected(true);
+			toggleRepeatingArea(false);			
+
+			//preselect correct month and year
+			DateTime currentDate = controller.getCurrentDate();		
+			if(DateTime.now().getDayOfMonth() > currentDate.dayOfMonth().withMaximumValue().getDayOfMonth())
 			{
-				spinnerRepeatingPeriod.increment(0); // won't change value, but will commit editor
+				currentDate = currentDate.dayOfMonth().withMaximumValue();				
+			}
+			
+			LocalDate currentLocalDate = LocalDate.now().withYear(currentDate.getYear())
+			.withMonth(currentDate.getMonthOfYear())
+			.withDayOfMonth(currentDate.getDayOfMonth());
+			datePicker.setValue(currentLocalDate);	
+			datePickerEnddate.setValue(currentLocalDate);
+			
+			try
+			{
+				ServerTagConnection serverTagConnection = new ServerTagConnection(controller.getSettings());
+				tagField.setAllTags(serverTagConnection.getTags());
+			}
+			catch(Exception e)
+			{
+				//ERRORHANDLING
+				Logger.error(e);
 			}
-		});
-
-		comboBoxRepeatingDay.setCellFactory((view) -> {
-			return new RepeatingDayCell();
-		});
-		ArrayList<Integer> days = new ArrayList<>();
-		for(int i = 1; i <= 31; i++)
-		{
-			days.add(i);
 		}
-		comboBoxRepeatingDay.getItems().addAll(days);
 		
-		comboBoxCategory.setCellFactory((view) -> {
-			return new SmallCategoryCell();
-		});
-		comboBoxRepeatingDay.setValue(1);
+		datePicker.setEditable(false);
+	}
+	
+	private void initComboBoxCategory()
+	{
 		buttonCategoryCell = new ButtonCategoryCell(Color.WHITE);
 		comboBoxCategory.setButtonCell(buttonCategoryCell);
 		comboBoxCategory.setStyle("-fx-border-color: #000000; -fx-border-width: 2; -fx-border-radius: 5; -fx-background-radius: 5;");
@@ -149,11 +175,10 @@ public class NewPaymentController extends BaseController implements Styleable
 			comboBoxCategory.setStyle("-fx-background-color: " + newValue.getColor() + "; -fx-border-color: #000000; -fx-border-width: 2; -fx-border-radius: 5; -fx-background-radius: 5;");
 			buttonCategoryCell.setColor(Color.web(newValue.getColor()));
 		});
-
-		checkBoxRepeat.selectedProperty().addListener((listener, oldValue, newValue) -> {
-			toggleRepeatingArea(newValue);
+		comboBoxCategory.setCellFactory((view) -> {
+			return new SmallCategoryCell();
 		});
-
+		
 		comboBoxCategory.getItems().clear();
 		try
 		{
@@ -167,8 +192,7 @@ public class NewPaymentController extends BaseController implements Styleable
 					{
 						comboBoxCategory.getItems().add(currentCategory);
 					}
-				}
-					
+				}					
 			}
 		}
 		catch(Exception e)
@@ -177,6 +201,17 @@ public class NewPaymentController extends BaseController implements Styleable
 			getStage().close();
 			return;
 		}
+	}
+	
+	private void initRepeatingArea() 
+	{
+		checkBoxRepeat.selectedProperty().addListener((listener, oldValue, newValue) -> {
+			toggleRepeatingArea(newValue);
+		});		
+		
+		initSpinnerRepeatingPeriod();
+		initComboBoxRepeatingDay();		
+		initComboBoxCategory();		
 
 		final ToggleGroup toggleGroup = new ToggleGroup();
 		radioButtonPeriod.setToggleGroup(toggleGroup);
@@ -198,22 +233,55 @@ public class NewPaymentController extends BaseController implements Styleable
 					setStyle("-fx-background-color: #ffc0cb;");
 				}
 			}
-		});	
+		});
+	}
+	
+	private void initSpinnerRepeatingPeriod()
+	{
+		SpinnerValueFactory<Integer> valueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 1000, 0);
+		spinnerRepeatingPeriod.setValueFactory(valueFactory);
+		spinnerRepeatingPeriod.setEditable(true);
+		spinnerRepeatingPeriod.focusedProperty().addListener((observable, oldValue, newValue) -> {
+			if(!newValue)
+			{
+				spinnerRepeatingPeriod.increment(0); // won't change value, but will commit editor
+			}
+		});		
+	}
+	
+	private void initComboBoxRepeatingDay()	
+	{		
+		comboBoxRepeatingDay.setCellFactory((view) -> {
+			return new RepeatingDayCell();
+		});
+		ArrayList<Integer> days = new ArrayList<>();
+		for(int i = 1; i <= 31; i++)
+		{
+			days.add(i);
+		}
+		comboBoxRepeatingDay.getItems().addAll(days);		
+		comboBoxRepeatingDay.setValue(1);		
+	}
+	
+	private void prefill()
+	{
+		textFieldName.setText(payment.getName());
+		textFieldAmount.setText(Helpers.NUMBER_FORMAT.format(Math.abs(payment.getAmount()/100.0)).replace(".", ","));		
+		comboBoxCategory.setValue(controller.getCategoryHandler().getCategory(payment.getCategoryID()));
+		datePicker.setValue(LocalDate.parse(payment.getDate()));
+		textArea.setText(payment.getDescription());
 		
-		if(edit)
+		try
 		{
-			//prefill
-			textFieldName.setText(payment.getName());
-			textFieldAmount.setText(Helpers.NUMBER_FORMAT.format(Math.abs(payment.getAmount()/100.0)).replace(".", ","));		
-			comboBoxCategory.setValue(controller.getCategoryHandler().getCategory(payment.getCategoryID()));
-			datePicker.setValue(LocalDate.parse(payment.getDate()));
-			textArea.setText(payment.getDescription());
-			
+			ServerTagConnection serverTagConnection = new ServerTagConnection(controller.getSettings());			
+			tagField.setAllTags(serverTagConnection.getTags());		
+		
 			if(payment instanceof RepeatingPaymentEntry)
-			{
+			{				
 				try
 				{					
 					RepeatingPaymentEntry currentPayment = (RepeatingPaymentEntry)payment;
+					tagField.setTags(serverTagConnection.getAllTagsForRepeatingPayment(currentPayment));
 					
 					ServerConnection connection = new ServerConnection(controller.getSettings());
 					RepeatingPayment repeatingPayment = connection.getRepeatingPayment(currentPayment.getRepeatingPaymentID());
@@ -247,50 +315,18 @@ public class NewPaymentController extends BaseController implements Styleable
 				}
 			}	
 			else
-			{				
+			{
+				tagField.setTags(serverTagConnection.getAllTagsForPayment((NormalPayment)payment));
 				checkBoxRepeat.setSelected(false);
 				radioButtonPeriod.setSelected(true);
 				toggleRepeatingArea(false);
-			}
-			
-			
-			ServerTagConnection s;
-			try
-			{
-				s = new ServerTagConnection(controller.getSettings());
-				TagField tagField = new TagField(s.getAllTagsForPayment((NormalPayment)payment), s.getTags());
-				hboxTags.getChildren().add(tagField);
-				tagField.maxWidthProperty().bind(hboxTags.widthProperty());
-				HBox.setHgrow(tagField, Priority.ALWAYS);
-			}
-			catch(Exception e)
-			{
-				//ERRORHANDLING
-				Logger.error(e);
-			}
-		}
-		else
+			}	
+		}		
+		catch(Exception e)
 		{
-			comboBoxCategory.setValue(controller.getCategoryHandler().getCategory(1));
-			checkBoxRepeat.setSelected(false);
-			radioButtonPeriod.setSelected(true);
-			toggleRepeatingArea(false);			
-
-			//preselect correct month and year
-			DateTime currentDate = controller.getCurrentDate();		
-			if(DateTime.now().getDayOfMonth() > currentDate.dayOfMonth().withMaximumValue().getDayOfMonth())
-			{
-				currentDate = currentDate.dayOfMonth().withMaximumValue();				
-			}
-			
-			LocalDate currentLocalDate = LocalDate.now().withYear(currentDate.getYear())
-			.withMonth(currentDate.getMonthOfYear())
-			.withDayOfMonth(currentDate.getDayOfMonth());
-			datePicker.setValue(currentLocalDate);	
-			datePickerEnddate.setValue(currentLocalDate);
+			//ERRORHANDLING
+			Logger.error(e);
 		}
-		
-		datePicker.setEditable(false);
 	}
 
 	public void save()
diff --git a/src/de/deadlocker8/budgetmaster/ui/tagField/TagField.java b/src/de/deadlocker8/budgetmaster/ui/tagField/TagField.java
index c62d2e588774473e2441502766cdf135b3f97189..a938861a0741d50680bb9e1072ff7cc170e94906 100644
--- a/src/de/deadlocker8/budgetmaster/ui/tagField/TagField.java
+++ b/src/de/deadlocker8/budgetmaster/ui/tagField/TagField.java
@@ -7,6 +7,7 @@ import org.controlsfx.control.textfield.TextFields;
 import de.deadlocker8.budgetmaster.logic.tag.Tag;
 import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import fontAwesome.FontIconType;
 import javafx.geometry.Insets;
 import javafx.geometry.Pos;
@@ -16,27 +17,55 @@ import javafx.scene.control.TextField;
 import javafx.scene.input.KeyCode;
 import javafx.scene.layout.FlowPane;
 import javafx.scene.layout.HBox;
+import javafx.scene.layout.VBox;
 import tools.ConvertTo;
+import tools.Localization;
 
-public class TagField extends FlowPane
+public class TagField extends VBox
 {
 	private ArrayList<Tag> tags;
 	private ArrayList<Tag> allTags;
+	private FlowPane flowPane;
+	private TextField textField;
 	
-	public TagField(ArrayList<Tag> tags, ArrayList<Tag> allTags)
+	public TagField(ArrayList<Tag> tags, ArrayList<Tag> allAvailableTags)
 	{
 		this.tags = tags;
-		this.allTags = allTags;
-		this.setVgap(5);
-		this.setHgap(5);
-		this.setPadding(new Insets(5));
+		this.allTags = allAvailableTags;
+		
+		this.flowPane = initFlowPane();	
+		this.getChildren().add(flowPane);
+		
+		textField = new TextField();
+		textField.setStyle("-fx-background-color: #FFFFFF; -fx-border-color: #000000; -fx-border-width: 1 0 0 0; -fx-background-radius: 5px;");		
+		textField.setPromptText(Localization.getString(Strings.TAGFIELD_PLACEHOLDER));
+		textField.setMaxWidth(Double.MAX_VALUE);
+		textField.setOnKeyPressed((event)->{
+            if(event.getCode().equals(KeyCode.ENTER))
+            {
+            	addTag(textField.getText().trim());
+            }
+	    });
+		TextFields.bindAutoCompletion(textField, param -> getCompletions(allTags));
+		this.getChildren().add(textField);		
+
 		this.setStyle("-fx-background-color: #FFFFFF; -fx-border-color: #000000; -fx-background-radius: 5px; -fx-border-radius: 5px");
+		this.setSpacing(5);
 		
 		refresh(false);
 	}
 	
-	private ArrayList<String> getCompletions(ArrayList<Tag> allTags)
+	private FlowPane initFlowPane() 
 	{
+		FlowPane flowPane = new FlowPane();
+		flowPane.setVgap(5);
+		flowPane.setHgap(5);
+		flowPane.setPadding(new Insets(5));
+		return flowPane;
+	}
+	
+	private ArrayList<String> getCompletions(ArrayList<Tag> allTags)
+	{		
 		ArrayList<String> newCompletions = new ArrayList<>();
 		for(Tag currentTag : allTags)
 		{
@@ -63,6 +92,18 @@ public class TagField extends FlowPane
 		return tags;
 	}
 	
+	public void setTags(ArrayList<Tag> tags)
+	{
+		this.tags = tags;
+		refresh(false);
+	}
+
+	public void setAllTags(ArrayList<Tag> allTags)
+	{
+		this.allTags = allTags;
+		refresh(false);
+	}
+
 	public void addTag(String tagName)
 	{
 		if(tagName.equals(""))
@@ -90,26 +131,16 @@ public class TagField extends FlowPane
 	
 	private void refresh(boolean requstFocus)
 	{
-		this.getChildren().clear();
+		flowPane.getChildren().clear();
 		
 		for(Tag currentTag : tags)
 		{
-			this.getChildren().add(generateTag(currentTag));
+			flowPane.getChildren().add(generateTag(currentTag));
 		}
 		
-		TextField textField = new TextField();
-		textField.setMaxWidth(Double.MAX_VALUE);
-		textField.setOnKeyPressed((event)->{
-            if(event.getCode().equals(KeyCode.ENTER))
-            {
-            	addTag(textField.getText().trim());
-            }
-	    });
-		TextFields.bindAutoCompletion(textField, getCompletions(allTags));
-		this.getChildren().add(textField);
-		
 		if(requstFocus)
 		{
+			textField.setText("");
 			textField.requestFocus();
 		}
 	}