diff --git a/src/de/deadlocker8/budgetmaster/logic/NormalPayment.java b/src/de/deadlocker8/budgetmaster/logic/NormalPayment.java
index 7441eae7f2051e7c8a0d69ba17d6935b4e7fefa4..1f4bf8cff6d1c102858758857b63032d6c777bf4 100644
--- a/src/de/deadlocker8/budgetmaster/logic/NormalPayment.java
+++ b/src/de/deadlocker8/budgetmaster/logic/NormalPayment.java
@@ -2,14 +2,14 @@ package de.deadlocker8.budgetmaster.logic;
 
 public class NormalPayment extends Payment
 {	
-	public NormalPayment(int ID, int amount, String date, int categoryID, String name)
+	public NormalPayment(int ID, int amount, String date, int categoryID, String name, String description)
 	{		
-		super(ID, amount, date, categoryID, name);
+		super(ID, amount, date, categoryID, name, description);
 	}
 	
 	@Override
 	public String toString()
 	{
-		return "Payment [ID=" + super.getID() + ", amount=" + super.getAmount() + ", date=" + super.getDate() + ", categoryID=" + super.getCategoryID() + ", name=" + super.getName() + "]";
+		return "Payment [ID=" + super.getID() + ", amount=" + super.getAmount() + ", date=" + super.getDate() + ", categoryID=" + super.getCategoryID() + ", name=" + super.getName() + ", description=" + super.getDescription() + "]";
 	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/Payment.java b/src/de/deadlocker8/budgetmaster/logic/Payment.java
index 38e72ccab692209e7b26135dae8e7665f7bc98e4..8097353c2780fda914849ee9031330f372e379e3 100644
--- a/src/de/deadlocker8/budgetmaster/logic/Payment.java
+++ b/src/de/deadlocker8/budgetmaster/logic/Payment.java
@@ -7,14 +7,16 @@ public abstract class Payment
 	private String date;
 	private int categoryID;
 	private String name;
+	private String description;
 	
-	public Payment(int ID, int amount, String date, int categoryID, String name)
+	public Payment(int ID, int amount, String date, int categoryID, String name, String description)
 	{		
 		this.ID = ID;
 		this.amount = amount;
 		this.date = date;
 		this.categoryID = categoryID;
 		this.name = name;
+		this.description = description;
 	}
 
 	public int getID()
@@ -67,6 +69,16 @@ public abstract class Payment
 		this.name = name;
 	}
 	
+	public String getDescription()
+	{
+		return description;
+	}
+
+	public void setDescription(String description)
+	{
+		this.description = description;
+	}
+
 	public boolean isIncome()
 	{
 		return amount > 0;
diff --git a/src/de/deadlocker8/budgetmaster/logic/RepeatingPayment.java b/src/de/deadlocker8/budgetmaster/logic/RepeatingPayment.java
index 1bc6195f8692dcd027cbc2965e7262c5fd7815fc..c3d2cee8b79e5cd61b539be0a43073a4841fcf28 100644
--- a/src/de/deadlocker8/budgetmaster/logic/RepeatingPayment.java
+++ b/src/de/deadlocker8/budgetmaster/logic/RepeatingPayment.java
@@ -6,9 +6,9 @@ public class RepeatingPayment extends Payment
 	private String repeatEndDate;
 	private int repeatMonthDay;
 
-	public RepeatingPayment(int ID, int amount, String date, int categoryID, String name, int repeatInterval, String repeatEndDate, int repeatMonthDay)
+	public RepeatingPayment(int ID, int amount, String date, int categoryID, String name, String description, int repeatInterval, String repeatEndDate, int repeatMonthDay)
 	{
-		super(ID, amount, date, categoryID, name);
+		super(ID, amount, date, categoryID, name, description);
 		this.repeatInterval = repeatInterval;
 		this.repeatEndDate = repeatEndDate;
 		this.repeatMonthDay = repeatMonthDay;
@@ -47,7 +47,7 @@ public class RepeatingPayment extends Payment
 	@Override
 	public String toString()
 	{
-		return "RepeatingPayment [ID=" + super.getID() + ", amount=" + super.getAmount() + ", date=" + super.getDate() + ", categoryID=" + super.getCategoryID() + ", name=" + super.getName() + ", repeatInterval=" + repeatInterval + ", repeatEndDate=" + repeatEndDate + ", repeatMonthDay=" + repeatMonthDay + "]";
+		return "RepeatingPayment [ID=" + super.getID() + ", amount=" + super.getAmount() + ", date=" + super.getDate() + ", categoryID=" + super.getCategoryID() + ", name=" + super.getName() + ", description=" + super.getDescription() + ", repeatInterval=" + repeatInterval + ", repeatEndDate=" + repeatEndDate + ", repeatMonthDay=" + repeatMonthDay + "]";
 	}
 	
 	@Override
diff --git a/src/de/deadlocker8/budgetmaster/logic/RepeatingPaymentEntry.java b/src/de/deadlocker8/budgetmaster/logic/RepeatingPaymentEntry.java
index 5527764bd283903271d28884dbde18365fd31e2d..001f213c6cf9cc57eea73b5f8cab8c5c9997c671 100644
--- a/src/de/deadlocker8/budgetmaster/logic/RepeatingPaymentEntry.java
+++ b/src/de/deadlocker8/budgetmaster/logic/RepeatingPaymentEntry.java
@@ -7,9 +7,9 @@ public class RepeatingPaymentEntry extends Payment
 	private String repeatEndDate;
 	private int repeatMonthDay;
 	
-	public RepeatingPaymentEntry(int ID, int repeatingPaymentID, String date, int amount, int categoryID, String name, int repeatInterval, String repeatEndDate, int repeatMonthDay)
+	public RepeatingPaymentEntry(int ID, int repeatingPaymentID, String date, int amount, int categoryID, String name, String description,  int repeatInterval, String repeatEndDate, int repeatMonthDay)
 	{
-		super(ID, amount, date, categoryID, name);		
+		super(ID, amount, date, categoryID, name, description);		
 		this.repeatingPaymentID = repeatingPaymentID;	
 		this.repeatInterval = repeatInterval;
 		this.repeatEndDate = repeatEndDate;
@@ -39,7 +39,7 @@ public class RepeatingPaymentEntry extends Payment
 	@Override
 	public String toString()
 	{
-		return "RepeatingPaymentEntry [ID=" + super.getID() + ", repeatingPaymentID=" + repeatingPaymentID + ", date=" + super.getDate() + ", amount=" + super.getAmount() + ", categoryID=" + super.getCategoryID() + ", name=" + super.getName() + ", repeatInterval=" + repeatInterval + ", repeatEndDate=" + repeatEndDate + ", repeatMonthDay="
+		return "RepeatingPaymentEntry [ID=" + super.getID() + ", repeatingPaymentID=" + repeatingPaymentID + ", date=" + super.getDate() + ", amount=" + super.getAmount() + ", categoryID=" + super.getCategoryID() + ", name=" + super.getName() + ", description=" + super.getDescription() + ", repeatInterval=" + repeatInterval + ", repeatEndDate=" + repeatEndDate + ", repeatMonthDay="
 				+ repeatMonthDay + "]";
 	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/ServerConnection.java b/src/de/deadlocker8/budgetmaster/logic/ServerConnection.java
index 1792a896e1fe7e43e739e90eb4739fffa4744cc3..b6a04d740c68c6fb6e90fed593d980613061aa22 100644
--- a/src/de/deadlocker8/budgetmaster/logic/ServerConnection.java
+++ b/src/de/deadlocker8/budgetmaster/logic/ServerConnection.java
@@ -87,7 +87,6 @@ public class ServerConnection
 		if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK)
 		{
 			String result = Read.getStringFromInputStream(httpsCon.getInputStream());
-			System.out.println(result);
 			return gson.fromJson(result, Category.class);
 		}
 		else
@@ -196,7 +195,12 @@ public class ServerConnection
 
 	public void addNormalPayment(NormalPayment payment) throws Exception
 	{
-		URL url = new URL(settings.getUrl() + "/payment?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&amount=" + payment.getAmount() + "&date=" + payment.getDate() + "&categoryID=" + payment.getCategoryID() + "&name=" + Helpers.getURLEncodedString(payment.getName()));
+		URL url = new URL(settings.getUrl() + "/payment?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + 
+				"&amount=" + payment.getAmount() + 
+				"&date=" + payment.getDate() + 
+				"&categoryID=" + payment.getCategoryID() + 
+				"&name=" + Helpers.getURLEncodedString(payment.getName()) + 
+				"&description=" + Helpers.getURLEncodedString(payment.getDescription()));
 		HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection();
 		httpsCon.setRequestMethod("POST");
 		httpsCon.setDoInput(true);
@@ -207,7 +211,13 @@ public class ServerConnection
 
 	public void updateNormalPayment(NormalPayment payment) throws Exception
 	{
-		 URL url = new URL(settings.getUrl() + "/payment?secret=" + settings.getSecret() + "&id=" + payment.getID() + "&amount=" + payment.getAmount() + "&date=" + payment.getDate() + "&categoryID=" + payment.getCategoryID() + "&name=" + Helpers.getURLEncodedString(payment.getName()));
+		 URL url = new URL(settings.getUrl() + "/payment?secret=" + settings.getSecret() + 
+				 "&id=" + payment.getID() + 
+				 "&amount=" + payment.getAmount() + 
+				 "&date=" + payment.getDate() +
+				 "&categoryID=" + payment.getCategoryID() + 
+				 "&name=" + Helpers.getURLEncodedString(payment.getName()) +
+				 "&description=" + Helpers.getURLEncodedString(payment.getDescription()));
 		 HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection();
 		 httpsCon.setRequestMethod("PUT");
 		 httpsCon.setDoInput(true);
@@ -225,8 +235,15 @@ public class ServerConnection
 			repeatEndDate = "A";
 		}
 
-		URL url = new URL(settings.getUrl() + "/repeatingpayment?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&amount=" + payment.getAmount() + "&date=" + payment.getDate() + "&categoryID=" + payment.getCategoryID() + "&name=" + Helpers.getURLEncodedString(payment.getName())
-				+ "&repeatInterval=" + payment.getRepeatInterval() + "&repeatEndDate=" + repeatEndDate + "&repeatMonthDay=" + payment.getRepeatMonthDay());
+		URL url = new URL(settings.getUrl() + "/repeatingpayment?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + 
+				"&amount=" + payment.getAmount() + 
+				"&date=" + payment.getDate() + 
+				"&categoryID=" + payment.getCategoryID() + 
+				"&name=" + Helpers.getURLEncodedString(payment.getName()) + 
+				"&repeatInterval=" + payment.getRepeatInterval() +
+				"&repeatEndDate=" + repeatEndDate + 
+				"&repeatMonthDay=" + payment.getRepeatMonthDay() +
+				"&description=" + Helpers.getURLEncodedString(payment.getDescription()));				
 		HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection();
 		httpsCon.setRequestMethod("POST");
 		httpsCon.setDoInput(true);
diff --git a/src/de/deadlocker8/budgetmaster/ui/Controller.java b/src/de/deadlocker8/budgetmaster/ui/Controller.java
index c6b59b2e80a6b1f7af5632cb08b3b642b67abef1..c70f4fd819f9fcafa3eade3d5e5b974c086aa11a 100644
--- a/src/de/deadlocker8/budgetmaster/ui/Controller.java
+++ b/src/de/deadlocker8/budgetmaster/ui/Controller.java
@@ -295,7 +295,7 @@ public class Controller implements Refreshable
 			{
 				int rest = connection.getRestForAllPreviousMonths(currentDate.getYear(), currentDate.getMonthOfYear());
 				//categoryID 2 = Rest
-				payments.add(new NormalPayment(-1, rest, currentDate.withDayOfMonth(1).toString("yyyy-MM-dd"), 2, "Übertrag"));				
+				payments.add(new NormalPayment(-1, rest, currentDate.withDayOfMonth(1).toString("yyyy-MM-dd"), 2, "Übertrag", ""));				
 			}
 			
 			categoryHandler = new CategoryHandler(connection.getCategories());
diff --git a/src/de/deadlocker8/budgetmaster/ui/NewPaymentController.java b/src/de/deadlocker8/budgetmaster/ui/NewPaymentController.java
index 86b7357c0e8e11b66a04c1bb902d2e5abaae5a4f..433905634a0d40161be6e58ff583f32e3dff53bf 100644
--- a/src/de/deadlocker8/budgetmaster/ui/NewPaymentController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/NewPaymentController.java
@@ -26,6 +26,7 @@ import javafx.scene.control.Label;
 import javafx.scene.control.RadioButton;
 import javafx.scene.control.Spinner;
 import javafx.scene.control.SpinnerValueFactory;
+import javafx.scene.control.TextArea;
 import javafx.scene.control.TextField;
 import javafx.scene.control.ToggleGroup;
 import javafx.scene.paint.Color;
@@ -49,6 +50,7 @@ public class NewPaymentController
 	@FXML private RadioButton radioButtonPeriod;
 	@FXML private RadioButton radioButtonDay;
 	@FXML private Label labelText1, labelText2, labelText3;
+	@FXML private TextArea textArea;
 
 	private Stage stage;
 	private Controller controller;
@@ -121,7 +123,14 @@ public class NewPaymentController
 			ArrayList<Category> categories = connection.getCategories();
 			if(categories != null)
 			{
-				comboBoxCategory.getItems().addAll(categories);
+				for(Category currentCategory : categories)
+				{
+					if(currentCategory.getID() != 2)
+					{
+						comboBoxCategory.getItems().add(currentCategory);
+					}
+				}
+					
 			}
 		}
 		catch(Exception e)
@@ -160,6 +169,7 @@ public class NewPaymentController
 			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(payment instanceof RepeatingPaymentEntry)
 			{
@@ -230,6 +240,13 @@ public class NewPaymentController
 		{
 			amount = -amount;
 		}
+		
+		String description = textArea.getText();
+		if(description.length() > 150)
+		{
+			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Die Notiz darf maximal 150 Zeichen lang sein.", controller.getIcon(), controller.getStage(), null, false);
+			return;
+		}
 
 		int repeatingInterval = 0;
 		int repeatingDay = 0;
@@ -254,13 +271,13 @@ public class NewPaymentController
 			{
 				AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Das Enddatum darf zeitlich nicht vor dem Datum der Zahlung liegen.", controller.getIcon(), controller.getStage(), null, false);
 				return;
-			}
+			}			
 
 			if(edit)
 			{				
 				try
 				{		
-					RepeatingPayment newPayment = new RepeatingPayment(-1, amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name, repeatingInterval, Helpers.getDateString(datePickerEnddate.getValue()), repeatingDay);
+					RepeatingPayment newPayment = new RepeatingPayment(-1, amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name, description, repeatingInterval, Helpers.getDateString(datePickerEnddate.getValue()), repeatingDay);
 							
 					ServerConnection connection = new ServerConnection(controller.getSettings());
 					if(payment instanceof NormalPayment)
@@ -281,7 +298,7 @@ public class NewPaymentController
 			}
 			else
 			{
-				RepeatingPayment newPayment = new RepeatingPayment(-1, amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name, repeatingInterval,Helpers.getDateString(datePickerEnddate.getValue()), repeatingDay);
+				RepeatingPayment newPayment = new RepeatingPayment(-1, amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name, description, repeatingInterval,Helpers.getDateString(datePickerEnddate.getValue()), repeatingDay);
 				try
 				{
 					ServerConnection connection = new ServerConnection(controller.getSettings());
@@ -298,7 +315,7 @@ public class NewPaymentController
 		{
 			if(edit)
 			{
-				NormalPayment newPayment = new NormalPayment(payment.getID(), amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name);
+				NormalPayment newPayment = new NormalPayment(payment.getID(), amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name, description);
 				try
 				{
 					ServerConnection connection = new ServerConnection(controller.getSettings());
@@ -321,7 +338,7 @@ public class NewPaymentController
 			}
 			else
 			{
-				NormalPayment newPayment = new NormalPayment(-1, amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name);
+				NormalPayment newPayment = new NormalPayment(-1, amount, Helpers.getDateString(date), comboBoxCategory.getValue().getID(), name, description);
 				try
 				{
 					ServerConnection connection = new ServerConnection(controller.getSettings());
@@ -380,6 +397,4 @@ public class NewPaymentController
 		comboBoxRepeatingDay.setDisable(selected);
 		labelText3.setDisable(selected);
 	}
-
-	
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/ui/NewPaymentGUI.fxml b/src/de/deadlocker8/budgetmaster/ui/NewPaymentGUI.fxml
index 2ea7a4d4dbdc220d59a969c037b3b7b372539c74..9235231a6402291bd989eb171cb5cfe6d0d201aa 100644
--- a/src/de/deadlocker8/budgetmaster/ui/NewPaymentGUI.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/NewPaymentGUI.fxml
@@ -9,15 +9,16 @@
 <?import javafx.scene.control.RadioButton?>
 <?import javafx.scene.control.Separator?>
 <?import javafx.scene.control.Spinner?>
+<?import javafx.scene.control.TextArea?>
 <?import javafx.scene.control.TextField?>
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.layout.HBox?>
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane prefHeight="356.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.NewPaymentController">
+<AnchorPane prefHeight="600.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.NewPaymentController">
    <children>
-      <VBox prefHeight="273.0" prefWidth="465.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
+      <VBox prefHeight="273.0" prefWidth="465.0" spacing="20.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
          <children>
             <HBox alignment="CENTER_LEFT" prefHeight="30.0" prefWidth="465.0">
                <children>
@@ -73,7 +74,26 @@
                   <DatePicker fx:id="datePicker" maxWidth="1.7976931348623157E308" prefHeight="29.0" HBox.hgrow="ALWAYS" />
                </children>
             </HBox>
-            <VBox spacing="20.0">
+            <HBox alignment="CENTER_LEFT" maxHeight="1.7976931348623157E308" prefWidth="422.0" VBox.vgrow="ALWAYS">
+               <children>
+                  <VBox alignment="CENTER_LEFT">
+                     <children>
+                        <Label prefHeight="29.0" prefWidth="125.0" text="Notiz:">
+                           <font>
+                              <Font name="System Bold" size="14.0" />
+                           </font>
+                        </Label>
+                        <Label prefHeight="29.0" prefWidth="125.0" text="(max. 150 Zeichen)">
+                           <font>
+                              <Font size="11.0" />
+                           </font>
+                        </Label>
+                     </children>
+                  </VBox>
+                  <TextArea fx:id="textArea" maxWidth="1.7976931348623157E308" prefHeight="37.0" prefWidth="240.0" HBox.hgrow="ALWAYS" />
+               </children>
+            </HBox>
+            <VBox prefHeight="214.0" prefWidth="422.0" spacing="20.0">
                <children>
                   <HBox alignment="CENTER">
                      <children>
diff --git a/src/de/deadlocker8/budgetmaster/ui/PaymentController.java b/src/de/deadlocker8/budgetmaster/ui/PaymentController.java
index 69defde608fa9665d63054ff4e7470e4cf49522e..291ea648251df9d0b62faa172097dbb2ec20252c 100644
--- a/src/de/deadlocker8/budgetmaster/ui/PaymentController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/PaymentController.java
@@ -217,7 +217,7 @@ public class PaymentController implements Refreshable
 		{
 			ServerConnection connection = new ServerConnection(controller.getSettings());
 			RepeatingPayment oldRepeatingPayment = connection.getRepeatingPayment(payment.getRepeatingPaymentID());
-			RepeatingPayment newRepeatingPayment = new RepeatingPayment(payment.getID(), payment.getAmount(), oldRepeatingPayment.getDate(), payment.getCategoryID(), payment.getName(), payment.getRepeatInterval(), payment.getDate(), payment.getRepeatMonthDay());
+			RepeatingPayment newRepeatingPayment = new RepeatingPayment(payment.getID(), payment.getAmount(), oldRepeatingPayment.getDate(), payment.getCategoryID(), payment.getName(), payment.getDescription(), payment.getRepeatInterval(), payment.getDate(), payment.getRepeatMonthDay());
 			connection.deleteRepeatingPayment(payment);
 			connection.addRepeatingPayment(newRepeatingPayment);
 
diff --git a/src/de/deadlocker8/budgetmasterserver/main/DatabaseCreator.java b/src/de/deadlocker8/budgetmasterserver/main/DatabaseCreator.java
index 18f8cb2ad37ab1c6db132b0c8dfca68a1e1a4db9..7a512f12e66f69b9d9b4a4a98e7a0794ad959f34 100644
--- a/src/de/deadlocker8/budgetmasterserver/main/DatabaseCreator.java
+++ b/src/de/deadlocker8/budgetmasterserver/main/DatabaseCreator.java
@@ -112,7 +112,8 @@ public class DatabaseCreator
 					 "`Name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'payment name (description)'," +
 					 "`CategoryID` int(11) DEFAULT NULL COMMENT 'category ID'," +
 					 "`Amount` int(11) DEFAULT NULL COMMENT 'amount in cents'," +
-					 "`Date` date DEFAULT NULL COMMENT 'payment date'" +
+					 "`Date` date DEFAULT NULL COMMENT 'payment date',"	 +
+					 "`Description` varchar(150) DEFAULT NULL COMMENT 'optional description'" +
 					 ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";			
 		String query2 = "ALTER TABLE `payment` ADD PRIMARY KEY (`ID`);";		
 		String query3 = "ALTER TABLE `payment` MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID';";	
@@ -193,6 +194,7 @@ public class DatabaseCreator
 					  "`CategoryID` int(11) DEFAULT NULL COMMENT 'category ID'," +
 					  "`Amount` int(11) DEFAULT NULL COMMENT 'amount in cents'," +
 					  "`Date` date DEFAULT NULL COMMENT 'payment date'," +
+					  "`Description` varchar(150) DEFAULT NULL COMMENT 'optional description'," +
 					  "`RepeatInterval` int(11) DEFAULT NULL COMMENT 'repeat interval in days'," +
 					  "`RepeatEndDate` date DEFAULT NULL COMMENT 'repeat end date'," +
 					  "`RepeatMonthDay` int(11) DEFAULT NULL COMMENT 'day in month on which payment repeats'" +
diff --git a/src/de/deadlocker8/budgetmasterserver/main/DatabaseHandler.java b/src/de/deadlocker8/budgetmasterserver/main/DatabaseHandler.java
index 266ad33db08358eaa25ce89cc61f74eb9f3bc7ab..61b8ee0401aa153b527c1fd2b34190075e333a88 100644
--- a/src/de/deadlocker8/budgetmasterserver/main/DatabaseHandler.java
+++ b/src/de/deadlocker8/budgetmasterserver/main/DatabaseHandler.java
@@ -263,8 +263,9 @@ public class DatabaseHandler
 				int amount = rs.getInt("amount");
 				String date = rs.getString("Date");
 				int categoryID = rs.getInt("CategoryID");
+				String description = rs.getString("Description");
 
-				return new NormalPayment(resultID, amount, date, categoryID, name);
+				return new NormalPayment(resultID, amount, date, categoryID, name, description);
 			}
 		}
 		catch(SQLException e)
@@ -306,8 +307,9 @@ public class DatabaseHandler
 				int amount = rs.getInt("amount");
 				String date = rs.getString("Date");				
 				int categoryID = rs.getInt("CategoryID");
+				String description = rs.getString("Description");
 			
-				results.add(new NormalPayment(resultID, amount, date, categoryID, name));
+				results.add(new NormalPayment(resultID, amount, date, categoryID, name, description));
 			}
 		}
 		catch(SQLException e)
@@ -334,7 +336,7 @@ public class DatabaseHandler
 	public ArrayList<RepeatingPaymentEntry> getRepeatingPayments(int year, int month)
 	{
 		Statement stmt = null;
-		String query = "SELECT repeating_entry.ID, repeating_entry.RepeatingPaymentID, repeating_entry.Date, repeating_payment.Name, repeating_payment.CategoryID, repeating_payment.Amount, repeating_payment.RepeatInterval, repeating_payment.RepeatEndDate, repeating_payment.RepeatMonthDay FROM repeating_entry, repeating_payment WHERE repeating_entry.RepeatingPaymentID = repeating_payment.ID AND YEAR(repeating_entry.Date) = " + year + " AND MONTH(repeating_entry.Date) = " + month;
+		String query = "SELECT repeating_entry.ID, repeating_entry.RepeatingPaymentID, repeating_entry.Date, repeating_payment.Name, repeating_payment.CategoryID, repeating_payment.Amount, repeating_payment.RepeatInterval, repeating_payment.RepeatEndDate, repeating_payment.RepeatMonthDay, repeating_payment.Description FROM repeating_entry, repeating_payment WHERE repeating_entry.RepeatingPaymentID = repeating_payment.ID AND YEAR(repeating_entry.Date) = " + year + " AND MONTH(repeating_entry.Date) = " + month;
 
 		ArrayList<RepeatingPaymentEntry> results = new ArrayList<>();
 		try
@@ -347,6 +349,7 @@ public class DatabaseHandler
 				int resultID = rs.getInt("ID");
 				int repeatingPaymentID = rs.getInt("repeatingPaymentID");				
 				String name = rs.getString("Name");
+				String description = rs.getString("Description");
 				int amount = rs.getInt("amount");
 				String date = rs.getString("Date");				
 				int categoryID = rs.getInt("CategoryID");
@@ -354,7 +357,7 @@ public class DatabaseHandler
 				String repeatEndDate = rs.getString("RepeatEndDate");
 				int repeatMonthDay = rs.getInt("RepeatMonthDay");		
 			
-				results.add(new RepeatingPaymentEntry(resultID, repeatingPaymentID, date, amount, categoryID, name, repeatInterval, repeatEndDate, repeatMonthDay));
+				results.add(new RepeatingPaymentEntry(resultID, repeatingPaymentID, date, amount, categoryID, name, description,repeatInterval, repeatEndDate, repeatMonthDay));
 			}
 		}
 		catch(SQLException e)
@@ -394,13 +397,14 @@ public class DatabaseHandler
 				int resultID = rs.getInt("ID");				
 				String name = rs.getString("Name");
 				int amount = rs.getInt("amount");
-				String date = rs.getString("Date");				
+				String date = rs.getString("Date");		
+				String description = rs.getString("Description");
 				int categoryID = rs.getInt("CategoryID");
 				int repeatInterval = rs.getInt("RepeatInterval");
 				String repeatEndDate = rs.getString("RepeatEndDate");
 				int repeatMonthDay = rs.getInt("RepeatMonthDay");			
 
-				results.add(new RepeatingPayment(resultID, amount, date, categoryID, name, repeatInterval, repeatEndDate, repeatMonthDay));
+				results.add(new RepeatingPayment(resultID, amount, date, categoryID, name, description, repeatInterval, repeatEndDate, repeatMonthDay));
 			}
 		}
 		catch(SQLException e)
@@ -481,11 +485,12 @@ public class DatabaseHandler
 				String date = rs.getString("Date");
 				int categoryID = rs.getInt("CategoryID");
 				String name = rs.getString("Name");
+				String description = rs.getString("Description");
 				int repeatInterval = rs.getInt("repeatInterval");
 				String repeatEndDate = rs.getString("repeatEndDate");
 				int repeatMonthDay = rs.getInt("repeatMonthDay");
 
-				result = new RepeatingPayment(id, amount, date, categoryID, name, repeatInterval, repeatEndDate, repeatMonthDay);
+				result = new RepeatingPayment(id, amount, date, categoryID, name, description, repeatInterval, repeatEndDate, repeatMonthDay);
 			}
 		}
 		catch(SQLException e)
@@ -627,10 +632,10 @@ public class DatabaseHandler
 		}
 	}
 
-	public void addNormalPayment(int amount, String date, int categoryID, String name)
+	public void addNormalPayment(int amount, String date, int categoryID, String name, String description)
 	{
 		Statement stmt = null;
-		String query = "INSERT INTO payment (Amount, Date, CategoryID, Name) VALUES('" + amount + "' , '" + date + "' , '" + categoryID + "' , '" + name + "');";
+		String query = "INSERT INTO payment (Amount, Date, CategoryID, Name, Description) VALUES('" + amount + "' , '" + date + "' , '" + categoryID + "' , '" + name + "' , '" + description + "');";
 		try
 		{
 			stmt = connection.createStatement();
@@ -655,19 +660,18 @@ public class DatabaseHandler
 		}
 	}
 	
-	public void addRepeatingPayment(int amount, String date, int categoryID, String name, int repeatInterval, String repeatEndDate, int repeatMonthDay)
+	public void addRepeatingPayment(int amount, String date, int categoryID, String name, String description, int repeatInterval, String repeatEndDate, int repeatMonthDay)
 	{
 		Statement stmt = null;
 		String query;		
 		//A is placeholder for empty repeatEndDate
 		if(repeatEndDate.equals("A") || repeatEndDate == null)
-		{
-			
-			query = "INSERT INTO repeating_payment (Amount, Date, CategoryID, Name, RepeatInterval, RepeatEndDate, RepeatMonthDay) VALUES('" + amount + "' , '" + date + "' , '" + categoryID + "' , '" + name + "' , '" + repeatInterval + "' , NULL , '" + repeatMonthDay + "');";
+		{			
+			query = "INSERT INTO repeating_payment (Amount, Date, CategoryID, Name, RepeatInterval, RepeatEndDate, RepeatMonthDay, Description) VALUES('" + amount + "' , '" + date + "' , '" + categoryID + "' , '" + name + "' , '" + repeatInterval + "' , NULL , '" + repeatMonthDay + "' , '" + description + "');";
 		}
 		else
 		{
-			query = "INSERT INTO repeating_payment (Amount, Date, CategoryID, Name, RepeatInterval, RepeatEndDate, RepeatMonthDay) VALUES('" + amount + "' , '" + date + "' , '" + categoryID + "' , '" + name + "' , '" + repeatInterval + "' , '" + repeatEndDate + "' , '" + repeatMonthDay + "');";
+			query = "INSERT INTO repeating_payment (Amount, Date, CategoryID, Name, RepeatInterval, RepeatEndDate, RepeatMonthDay, Description) VALUES('" + amount + "' , '" + date + "' , '" + categoryID + "' , '" + name + "' , '" + repeatInterval + "' , '" + repeatEndDate + "' , '" + repeatMonthDay + "' , '" + description + "');";
 		}
 		
 		try
@@ -754,10 +758,10 @@ public class DatabaseHandler
 		}
 	}	
 	
-	public void updateNormalPayment(int ID, int amount, String date, int categoryID, String name)
+	public void updateNormalPayment(int ID, int amount, String date, int categoryID, String name, String description)
 	{
 		Statement stmt = null;
-		String query = "UPDATE payment SET amount = '" + amount + "', date='" + date + "', categoryID='" + categoryID + "', name='" + name + "' WHERE ID = " + ID + ";";
+		String query = "UPDATE payment SET amount = '" + amount + "', date='" + date + "', categoryID='" + categoryID + "', name='" + name + "', description='" + description + "' WHERE ID = " + ID + ";";
 		try
 		{
 			stmt = connection.createStatement();
diff --git a/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentAdd.java b/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentAdd.java
index 07fdabe48fea944786f0033cbbacbd7f29f2baa6..7a6bd99a68ba75c9e2a2f1f9d63ee63724359c7d 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentAdd.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentAdd.java
@@ -19,7 +19,11 @@ public class PaymentAdd implements Route
 	@Override
 	public Object handle(Request req, Response res) throws Exception
 	{
-		if(!req.queryParams().contains("amount") || !req.queryParams().contains("date") || !req.queryParams().contains("categoryID") || !req.queryParams().contains("name"))
+		if(!req.queryParams().contains("amount") || 
+			!req.queryParams().contains("date") || 
+			!req.queryParams().contains("categoryID") || 
+			!req.queryParams().contains("name") || 
+			!req.queryParams().contains("description"))
 		{				
 			halt(400, "Bad Request");
 		}	
@@ -34,7 +38,11 @@ public class PaymentAdd implements Route
 			
 			try
 			{			
-				handler.addNormalPayment(amount, req.queryMap("date").value(), categoryID, req.queryMap("name").value());			
+				handler.addNormalPayment(amount, 
+										req.queryMap("date").value(),
+										categoryID, 
+										req.queryMap("name").value(), 
+										req.queryMap("description").value());			
 
 				return "";
 			}
diff --git a/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentUpdate.java b/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentUpdate.java
index 36e8368dd55fd1c5bd9a6661bb685981157d1b2c..6eb56285f87f075493cb671996ad1b5f9a54de4c 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentUpdate.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentUpdate.java
@@ -19,7 +19,12 @@ public class PaymentUpdate implements Route
 	@Override
 	public Object handle(Request req, Response res) throws Exception
 	{
-		if(!req.queryParams().contains("id") ||!req.queryParams().contains("amount") || !req.queryParams().contains("date") || !req.queryParams().contains("categoryID") || !req.queryParams().contains("name"))
+		if(!req.queryParams().contains("id") ||
+			!req.queryParams().contains("amount") || 
+			!req.queryParams().contains("date") || 
+			!req.queryParams().contains("categoryID") || 
+			!req.queryParams().contains("name") || 
+			!req.queryParams().contains("description"))
 		{
 			halt(400, "Bad Request");
 		}	
@@ -41,7 +46,12 @@ public class PaymentUpdate implements Route
 			
 			try
 			{				
-				handler.updateNormalPayment(id, amount, req.queryMap("date").value(), categoryID, req.queryMap("name").value());			
+				handler.updateNormalPayment(id, 
+											amount, 
+											req.queryMap("date").value(), 
+											categoryID, 
+											req.queryMap("name").value(), 
+											req.queryMap("description").value());			
 
 				return "";
 			}
diff --git a/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentAdd.java b/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentAdd.java
index 9480cb85c99e48bcee789d5c160c99d8f0ecd49b..e55598dcfccac3b03bde656273124e49fca3fbf1 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentAdd.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentAdd.java
@@ -19,7 +19,14 @@ public class RepeatingPaymentAdd implements Route
 	@Override
 	public Object handle(Request req, Response res) throws Exception
 	{
-		if(!req.queryParams().contains("amount") || !req.queryParams().contains("date") || !req.queryParams().contains("categoryID") || !req.queryParams().contains("name") || !req.queryParams().contains("repeatInterval") || !req.queryParams().contains("repeatEndDate") || !req.queryParams().contains("repeatMonthDay"))
+		if(!req.queryParams().contains("amount") ||
+			!req.queryParams().contains("date") || 
+			!req.queryParams().contains("categoryID") || 
+			!req.queryParams().contains("name") || 
+			!req.queryParams().contains("repeatInterval") || 
+			!req.queryParams().contains("repeatEndDate") || 
+			!req.queryParams().contains("repeatMonthDay") || 
+			!req.queryParams().contains("description"))
 		{				
 			halt(400, "Bad Request");
 		}	
@@ -38,7 +45,14 @@ public class RepeatingPaymentAdd implements Route
 			
 			try
 			{				
-				handler.addRepeatingPayment(amount, req.queryMap("date").value(), categoryID, req.queryMap("name").value(), repeatInterval, req.queryMap("repeatEndDate").value(), repeatMonthDay);			
+				handler.addRepeatingPayment(amount, 
+											req.queryMap("date").value(), 
+											categoryID, 
+											req.queryMap("name").value(), 
+											req.queryMap("description").value(), 
+											repeatInterval, 
+											req.queryMap("repeatEndDate").value(), 
+											repeatMonthDay);			
 
 				return "";
 			}