diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/PaymentController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/PaymentController.java
index 041f565666a2f08c16bfe8e224823f1aacad5935..90d82fe8a274136b310ccc6fd4bdca24c861854e 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/controller/PaymentController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/controller/PaymentController.java
@@ -1,19 +1,24 @@
 package de.deadlocker8.budgetmaster.controller;
 
+import de.deadlocker8.budgetmaster.entities.Category;
 import de.deadlocker8.budgetmaster.entities.CategoryType;
 import de.deadlocker8.budgetmaster.entities.Payment;
 import de.deadlocker8.budgetmaster.entities.Settings;
+import de.deadlocker8.budgetmaster.repositories.CategoryRepository;
 import de.deadlocker8.budgetmaster.repositories.PaymentRepository;
 import de.deadlocker8.budgetmaster.repositories.SettingsRepository;
 import de.deadlocker8.budgetmaster.services.HelpersService;
+import de.deadlocker8.budgetmaster.utils.Colors;
+import de.deadlocker8.budgetmaster.validators.CategoryValidator;
+import de.deadlocker8.budgetmaster.validators.PaymentValidator;
 import org.joda.time.DateTime;
 import org.joda.time.format.DateTimeFormat;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.CookieValue;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import tools.ConvertTo;
 
 import java.util.List;
 
@@ -24,6 +29,9 @@ public class PaymentController extends BaseController
 	@Autowired
 	private PaymentRepository paymentRepository;
 
+	@Autowired
+	private CategoryRepository categoryRepository;
+
 	@Autowired
 	private SettingsRepository settingsRepository;
 
@@ -89,6 +97,35 @@ public class PaymentController extends BaseController
 		return "redirect:/payments";
 	}
 
+	@RequestMapping("/payments/newPayment")
+	public String newCategory(Model model)
+	{
+		Payment emptyPayment = new Payment();
+		model.addAttribute("categories", categoryRepository.findAllByOrderByNameAsc());
+		model.addAttribute("payment", emptyPayment);
+		return "payments/newPayment";
+	}
+
+	@RequestMapping(value = "/payments/newPayment", method = RequestMethod.POST)
+	public String post(Model model, @ModelAttribute("NewPayment") Payment payment, BindingResult bindingResult)
+	{
+		PaymentValidator userValidator = new PaymentValidator();
+		userValidator.validate(payment, bindingResult);
+
+		if(bindingResult.hasErrors())
+		{
+			model.addAttribute("error", bindingResult);
+			model.addAttribute("payment", payment);
+			return "payments/newPayment";
+		}
+		else
+		{
+			paymentRepository.save(payment);
+		}
+
+		return "redirect:/payments";
+	}
+
 	private boolean isDeletable(Integer ID)
 	{
 		Payment paymentToDelete = paymentRepository.getOne(ID);
diff --git a/src/main/java/de/deadlocker8/budgetmaster/entities/Payment.java b/src/main/java/de/deadlocker8/budgetmaster/entities/Payment.java
index 2066b4dab38a8bdf92f6636c46d399133e7a3900..3356c326a5ba7510c36701646123b307ef9cc029 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/entities/Payment.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/entities/Payment.java
@@ -19,6 +19,10 @@ public class Payment
 	private String description;
 //	private RepeatingDefinition repeatingDefinition;
 
+	public Payment()
+	{
+	}
+
 	public Integer getID()
 	{
 		return ID;
diff --git a/src/main/java/de/deadlocker8/budgetmaster/validators/PaymentValidator.java b/src/main/java/de/deadlocker8/budgetmaster/validators/PaymentValidator.java
new file mode 100644
index 0000000000000000000000000000000000000000..a9c632f7583ec212c8b894f2cf2b2a6aff7fd87d
--- /dev/null
+++ b/src/main/java/de/deadlocker8/budgetmaster/validators/PaymentValidator.java
@@ -0,0 +1,22 @@
+package de.deadlocker8.budgetmaster.validators;
+
+import de.deadlocker8.budgetmaster.entities.Payment;
+import de.deadlocker8.budgetmaster.utils.Strings;
+import org.springframework.validation.Errors;
+import org.springframework.validation.ValidationUtils;
+import org.springframework.validation.Validator;
+
+
+public class PaymentValidator implements Validator
+{
+	public boolean supports(Class clazz)
+	{
+		return Payment.class.equals(clazz);
+	}
+
+	public void validate(Object obj, Errors errors)
+	{
+		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", Strings.WARNING_EMPTY_PAYMENT_NAME);
+		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "amount", Strings.WARNING_PAYMENT_AMOUNT);
+	}
+}
\ No newline at end of file
diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties
index 71f48a474859b9ca5cda3584404cc5fa37e3e1e5..e75205f18d0babefe390e1650390e4c8a0b1e009 100644
--- a/src/main/resources/languages/_de.properties
+++ b/src/main/resources/languages/_de.properties
@@ -292,20 +292,14 @@ menu.logout=Logout
 
 category.new.label.name=Name
 
-payment.new.label.name=Name:
-payment.new.label.max.characters.name=(max. 150 Zeichen)
-payment.new.label.max.characters.description=(max. 200 Zeichen)
-payment.new.label.amount=Betrag:
-payment.new.label.category=Kategorie:
-payment.new.label.date=Datum:
-payment.new.label.description=Notiz:
-payment.new.label.tags=Tags:
-payment.new.label.repeating=Wiederholung:
-payment.new.label.repeating.all=Alle
-payment.new.label.repeating.days=Tage
-payment.new.label.repeating.monthday=jeden Monat am:
-payment.new.label.enddate=Enddatum:
-payment.new.button.save=Speichern
+payment.new.label.name=Name
+payment.new.label.amount=Betrag
+payment.new.label.category=Kategorie
+payment.new.label.date=Datum
+payment.new.label.description=Notiz
+payment.new.label.tags=Tags
+payment.new.label.repeating=Wiederholung
+
 
 paymenttab.button.filter=Filter
 paymenttab.label.filter.active=Filter aktiv
diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties
index 13c7e724279d1464eb686e70277fd0cb419ec52e..10f50b7de83911a22e121b6ce92fec589df3dba3 100644
--- a/src/main/resources/languages/_en.properties
+++ b/src/main/resources/languages/_en.properties
@@ -292,20 +292,13 @@ menu.logout=Logout
 
 category.new.label.name=Name
 
-payment.new.label.name=Name:
-payment.new.label.max.characters.name=(up to 150 characters)
-payment.new.label.max.characters.description=(up to 200 characters)
-payment.new.label.amount=Amount:
-payment.new.label.category=Category:
-payment.new.label.date=Date:
-payment.new.label.description=Description:
-payment.new.label.tags=Tags:
-payment.new.label.repeating=Repeating:
-payment.new.label.repeating.all=every
-payment.new.label.repeating.days=days
-payment.new.label.repeating.monthday=every month at:
-payment.new.label.enddate=Enddate:
-payment.new.button.save=Save
+payment.new.label.name=Name
+payment.new.label.amount=Amount
+payment.new.label.category=Category
+payment.new.label.date=Date
+payment.new.label.description=Description
+payment.new.label.tags=Tags
+payment.new.label.repeating=Repeating
 
 paymenttab.button.filter=Filter
 paymenttab.label.filter.active=Filter active
diff --git a/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css
index 5122a4997b45176751a25771e464a919a57ec8ef..c116eed68cf3a5f638e6fafa3afdc9212d29961f 100644
--- a/src/main/resources/static/css/style.css
+++ b/src/main/resources/static/css/style.css
@@ -253,6 +253,10 @@ ul.dropdown-content.select-dropdown li span {
     color: #2E79B9;
 }
 
+ul.dropdown-content.select-dropdown li.selected {
+    background-color: rgba(0, 0, 0, 0.15);
+}
+
 .hidden {
     display: none;
 }
diff --git a/src/main/resources/static/js/datePicker.js b/src/main/resources/static/js/datePicker.js
index 62eea54a7f6e7be5577dd32bbbb6caebcbb491f8..78044a363273eead7568180e49449432e45b2998 100644
--- a/src/main/resources/static/js/datePicker.js
+++ b/src/main/resources/static/js/datePicker.js
@@ -1,7 +1,5 @@
 $(document).ready(function () {
-    $(document).ready(function() {
-        $('select').material_select();
-    });
+    $('select').material_select();
 
     $("#buttonChooseDate").click(function () {
         var month = $("#selectMonth").val();
diff --git a/src/main/resources/static/js/payments.js b/src/main/resources/static/js/payments.js
index c0002d6fedb20c60a261fc0e2de54c03fec3420b..967ade61448d677f6e73a27c300e497391afb1ae 100644
--- a/src/main/resources/static/js/payments.js
+++ b/src/main/resources/static/js/payments.js
@@ -1,3 +1,5 @@
 $( document ).ready(function() {
     $('#modalConfirmDelete').modal('open');
+
+    $('select').material_select();
 });
\ No newline at end of file
diff --git a/src/main/resources/templates/categories/newCategory.ftl b/src/main/resources/templates/categories/newCategory.ftl
index c2fe4d2e41645f4ed4481a108f8f8ea0387be35e..aed5a0f300fe721235ec1844b15e00ee09157ff2 100644
--- a/src/main/resources/templates/categories/newCategory.ftl
+++ b/src/main/resources/templates/categories/newCategory.ftl
@@ -18,7 +18,7 @@
                     </div>
                 </div>
                 <div class="container">
-                     <#import "../validation.ftl" as validation>
+                    <#import "../validation.ftl" as validation>
                     <form name="NewCategory" action="/categories/newCategory" method="post">
                         <input type="hidden" name="ID" value="<#if category.getID()??>${category.getID()}</#if>">
                         <div class="row">
diff --git a/src/main/resources/templates/payments/newPayment.ftl b/src/main/resources/templates/payments/newPayment.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..a9f10fcc1437d4f5132432e3a8f9cae14481b242
--- /dev/null
+++ b/src/main/resources/templates/payments/newPayment.ftl
@@ -0,0 +1,96 @@
+<html>
+    <head>
+        <#import "../header.ftl" as header>
+        <@header.header/>
+        <#assign locale = static["tools.Localization"]>
+    </head>
+    <body class="budgetmaster-blue-light">
+        <#import "../navbar.ftl" as navbar>
+        <@navbar.navbar "payments"/>
+
+        <main>
+            <div class="card main-card">
+                <div class="container">
+                    <div class="section center-align">
+                        <div class="grey-text text-darken-4 headline"><#if payment.getID()??>${locale.getString("title.payment.edit")}<#else>${locale.getString("title.payment.new")}</#if></div>
+                    </div>
+                </div>
+                <div class="container">
+                    <#import "../validation.ftl" as validation>
+                    <form name="NewPayment" action="/payments/newPayment" method="post">
+                        <input type="hidden" name="ID" value="<#if payment.getID()??>${payment.getID()}</#if>">
+                        <div class="row">
+                            <div class="input-field col s12 m12 l8 offset-l2">
+                                <input id="payment-name" type="text" name="name" <@validation.validation "name"/> value="<#if payment.getName()??>${payment.getName()}</#if>">
+                                <label for="payment-name">${locale.getString("payment.new.label.name")}</label>
+                            </div>
+                        </div>
+                        <div class="row">
+                            <div class="input-field col s12 m12 l8 offset-l2">
+                                <input id="payment-amount" type="text" name="amount" <@validation.validation "amount"/> value="<#if payment.getAmount()??>${payment.getAmount()}</#if>">
+                                <label for="payment-amount">${locale.getString("payment.new.label.amount")}</label>
+                            </div>
+                        </div>
+                        <div class="row">
+                            <div class="input-field col s12 m12 l8 offset-l2">
+                                <select id="payment-amount" name="category" <@validation.validation "category"/>>
+                                    <#list categories as category>
+                                        <#if payment.getCategory()??>
+                                            <option selected value="${category.getID()}">${category.getName()}</option>
+                                        <#else>
+                                            <#if category.getType() == "NONE">
+                                                <option selected value="${category.getID()}">${category.getName()}</option>
+                                            <#else>
+                                                <option value="${category.getID()}">${category.getName()}</option>
+                                            </#if>
+                                        </#if>
+                                    </#list>
+                                </select>
+                                <label for="payment-amount">${locale.getString("payment.new.label.category")}</label>
+                            </div>
+                        </div>
+                        <div class="row">
+                            <div class="input-field col s12 m12 l8 offset-l2">
+                                <textarea id="payment-description" class="materialize-textarea" name="description" <@validation.validation "description"/>><#if payment.getDescription()??>${payment.getDescription()}</#if></textarea>
+                                <label for="payment-description">${locale.getString("payment.new.label.description")}</label>
+                            </div>
+                        </div>
+                        <br>
+                        <div class="row hide-on-small-only">
+                            <div class="col m6 l4 offset-l2 right-align">
+                                <a href="/payments" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">clear</i>${locale.getString("cancel")}</a>
+                            </div>
+
+                            <div class="col m6 l4 left-align">
+                                <button class="btn waves-effect waves-light budgetmaster-blue" type="submit" name="action">
+                                    <i class="material-icons left">save</i>${locale.getString("save")}
+                                </button>
+                            </div>
+                        </div>
+                        <div class="hide-on-med-and-up">
+                            <div class="row center-align">
+                                <div class="col s12">
+                                    <a href="/categories" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">clear</i>${locale.getString("cancel")}</a>
+                                </div>
+                            </div>
+                            <div class="row center-align">
+                                <div class="col s12">
+                                    <button class="btn waves-effect waves-light budgetmaster-blue" type="submit" name="buttonSave">
+                                        <i class="material-icons left">save</i>${locale.getString("save")}
+                                    </button>
+                                </div>
+                            </div>
+                        </div>
+                    </form>
+                </div>
+            </div>
+        </main>
+
+        <!-- Scripts-->
+        <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
+        <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js"></script>
+        <script src="/js/main.js"></script>
+        <script src="/js/spectrum.js"></script>
+        <script src="/js/payments.js"></script>
+    </body>
+</html>
\ No newline at end of file