diff --git a/src/de/deadlocker8/budgetmaster/logic/Helpers.java b/src/de/deadlocker8/budgetmaster/logic/Helpers.java
index 79ea1806e978a24e15787b5d9b3e7e6d72bd87f3..70c73e800a0427286edef8c3a3ec0f2cd228e647 100644
--- a/src/de/deadlocker8/budgetmaster/logic/Helpers.java
+++ b/src/de/deadlocker8/budgetmaster/logic/Helpers.java
@@ -24,7 +24,17 @@ public class Helpers
 	public static final String COLOR_INCOME = "#22BAD9";
 	public static final String COLOR_PAYMENT = "#F2612D";
 	public static final String SALT = "ny9/Y+G|WrJ,82|oIYQQ X %i-sq#4,uA-qKPtwFPnw+s(k2`rV)^-a1|t{D3Z>S";
+	
+	public static String getCurrencyString(int amount, String currency)
+	{
+		return String.valueOf(NUMBER_FORMAT.format(amount / 100.0).replace(".", ",")) + " " + currency;
+	}
 
+	public static String getCurrencyString(double amount, String currency)
+	{
+		return String.valueOf(NUMBER_FORMAT.format(amount).replace(".", ",")) + " " + currency;
+	}
+	
 	public static String getURLEncodedString(String input)
 	{
 		try
diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/BarChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/BarChartGenerator.java
index c3276887a3f8d70f7770ac4acf9f0b54c1e0fcb3..6517e261397357c889c00f751d45b7e27591a57c 100644
--- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/BarChartGenerator.java
+++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/BarChartGenerator.java
@@ -63,7 +63,7 @@ public class BarChartGenerator
 			{
 				Tooltip tooltip = new Tooltip();
 
-				tooltip.setText(Helpers.NUMBER_FORMAT.format(data.getYValue()).replace(".", ",") + currency);
+				tooltip.setText(Helpers.getCurrencyString(data.getYValue().doubleValue(), currency));
 				Tooltip.install(tool.getNode(), tooltip);
 				Node node = data.getNode();
 				node.setOnMouseEntered(new EventHandler<MouseEvent>()
diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java
index fb32bf947c888efa1445f71ac8671782c36bcac3..3949d23ecec76dccf24e5ec2804e1a1bf4314a2e 100644
--- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java
+++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java
@@ -71,7 +71,7 @@ public class CategoriesChartGenerator
 			currentPart.prefWidthProperty().bind(chart.widthProperty().multiply(percentage));
 
 			Tooltip tooltip = new Tooltip();
-			tooltip.setText(currentItem.getName() + "\n" + Helpers.NUMBER_FORMAT.format(percentage*100) + " %\n" + Helpers.NUMBER_FORMAT.format(value).replace(".", ",") + currency);//
+			tooltip.setText(currentItem.getName() + "\n" + Helpers.NUMBER_FORMAT.format(percentage*100) + " %\n" + Helpers.getCurrencyString(value, currency));//
 			currentPart.setTooltip(tooltip);
 		}
 
diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LineChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LineChartGenerator.java
index 8888a5bd140f83f962677215f344645f5326de5f..8b6bbb70461c24dcb1f8b23a05dac9becc2085fb 100644
--- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LineChartGenerator.java
+++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LineChartGenerator.java
@@ -62,7 +62,7 @@ public class LineChartGenerator
 			{
 				Tooltip tooltip = new Tooltip();
 
-				tooltip.setText(Helpers.NUMBER_FORMAT.format(data.getYValue()).replace(".", ",") + currency);
+				tooltip.setText(Helpers.getCurrencyString(data.getYValue().doubleValue(), currency));
 				Tooltip.install(tool.getNode(), tooltip);
 				Node node = data.getNode();
 				node.setOnMouseEntered(new EventHandler<MouseEvent>()
diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java
index 927397b202e0c486ab6b41e6d6037ca17e99f890..f4715f86cb7dbdf7c7916886320845cbba259030 100644
--- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java
+++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java
@@ -78,8 +78,9 @@ public class MonthChartGenerator
 
 	private VBox generateChart(ArrayList<CategoryInOutSum> categoryInOutSums, double total, boolean useBudgetIN)
 	{
-		VBox result = new VBox();									
-		Label labelAmount = new Label(Helpers.NUMBER_FORMAT.format(getTotal(categoryInOutSums, useBudgetIN)).replace(".", ",") + currency);
+		VBox result = new VBox();		
+		
+		Label labelAmount = new Label(Helpers.getCurrencyString(getTotal(categoryInOutSums, useBudgetIN), currency));
 		labelAmount.setStyle("-fx-font-size: 12; -fx-font-weight: bold;");
 		result.getChildren().add(labelAmount);
 		VBox.setMargin(labelAmount, new Insets(0, 0, 10, 0));
diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/PieChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/PieChartGenerator.java
index 382d0a77dfede19bc254cfa0f3f40387c2af5c5f..d2b527b77b141739d52773c39cf239369682fa6c 100644
--- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/PieChartGenerator.java
+++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/PieChartGenerator.java
@@ -97,7 +97,7 @@ public class PieChartGenerator
             String percent = String.valueOf(percentage);
             percent = percent.substring(0, percent.indexOf(".") + 2);
 
-            tooltip.setText(percent + " %\n" + Helpers.NUMBER_FORMAT.format(pieValue).replace(".", ",") + currency);
+            tooltip.setText(percent + " %\n" + Helpers.getCurrencyString(pieValue, currency));
             Tooltip.install(tool.getNode(), tooltip);
             Node node = tool.getNode();
             node.setOnMouseEntered(new EventHandler<MouseEvent>()
diff --git a/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java b/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java
index 31204a3c3505b7691805551d9a2da91839003059..85c912d33ba9a1437590788d616d9c90a4f007f3 100644
--- a/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java
+++ b/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java
@@ -23,11 +23,13 @@ import com.itextpdf.text.pdf.PdfPCell;
 import com.itextpdf.text.pdf.PdfPTable;
 import com.itextpdf.text.pdf.PdfWriter;
 
+import de.deadlocker8.budgetmaster.logic.CategoryBudget;
 import de.deadlocker8.budgetmaster.logic.Helpers;
 
 public class ReportGenerator
 {
 	private ArrayList<ReportItem> reportItems;
+	private ArrayList<CategoryBudget> categoryBudgets;
 	private ColumnOrder columnOrder;
 	private boolean splitTable;
 	private boolean includeCategoryBudgets;
@@ -35,9 +37,10 @@ public class ReportGenerator
 	private String currency;
 	private DateTime date;
 
-	public ReportGenerator(ArrayList<ReportItem> reportItems, ColumnOrder columnOrder, boolean splitTable, boolean includeCategoryBudgets, File savePath, String currency, DateTime date)
-	{
+	public ReportGenerator(ArrayList<ReportItem> reportItems, ArrayList<CategoryBudget> categoryBudgets, ColumnOrder columnOrder, boolean splitTable, boolean includeCategoryBudgets, File savePath, String currency, DateTime date)
+	{	
 		this.reportItems = reportItems;
+		this.categoryBudgets = categoryBudgets;
 		this.columnOrder = columnOrder;
 		this.splitTable = splitTable;
 		this.includeCategoryBudgets = includeCategoryBudgets;
@@ -78,11 +81,11 @@ public class ReportGenerator
 				cell.setHorizontalAlignment(Element.ALIGN_CENTER);
 				table.addCell(cell);
 			}
-			
+
 			for(ReportItem currentItem : reportItems)
 			{
 				if(currentItem.getAmount() > 0)
-				{					
+				{
 					totalIncome += currentItem.getAmount();
 					if(amountType == AmountType.PAYMENT)
 					{
@@ -97,7 +100,7 @@ public class ReportGenerator
 						continue;
 					}
 				}
-				
+
 				for(ColumnType column : columnOrder.getColumns())
 				{
 					PdfPCell cell = new PdfPCell(new Phrase(getProperty(currentItem, column), font));
@@ -105,27 +108,27 @@ public class ReportGenerator
 					cell.setHorizontalAlignment(Element.ALIGN_CENTER);
 					table.addCell(cell);
 				}
-			}		
-			
+			}
+
 			PdfPCell cellTotal;
 			String total = "";
 			switch(amountType)
 			{
 				case BOTH:
-					String totalIncomeString = String.valueOf(Helpers.NUMBER_FORMAT.format(totalIncome / 100.0).replace(".", ",")) + " " + currency;
-					String totalPaymentString = String.valueOf(Helpers.NUMBER_FORMAT.format(totalPayment / 100.0).replace(".", ",")) + " " + currency;
+					String totalIncomeString = Helpers.getCurrencyString(totalIncome, currency);
+					String totalPaymentString = Helpers.getCurrencyString(totalPayment, currency);
 					total = "Einnahmen: " + totalIncomeString + " / Ausgaben: " + totalPaymentString;
 					break;
 				case INCOME:
-					total = "Summe: " + String.valueOf(Helpers.NUMBER_FORMAT.format(totalIncome / 100.0).replace(".", ",")) + " " + currency;					
+					total = "Summe: " + Helpers.getCurrencyString(totalIncome, currency);
 					break;
 				case PAYMENT:
-					total = "Summe: " + String.valueOf(Helpers.NUMBER_FORMAT.format(totalPayment / 100.0).replace(".", ",")) + " " + currency;					
+					total = "Summe: " + Helpers.getCurrencyString(totalPayment, currency);
 					break;
 				default:
 					break;
 			}
-			
+
 			cellTotal = new PdfPCell(new Phrase(total, font));
 			cellTotal.setBackgroundColor(new BaseColor(Color.WHITE));
 			cellTotal.setColspan(numberOfColumns);
@@ -144,14 +147,13 @@ public class ReportGenerator
 		writer.setPageEvent(new HeaderFooterPageEvent());
 		document.open();
 		document.setMargins(50, 45, 50, 70);
+		Font paragraphFont = new Font(FontFamily.HELVETICA, 12, Font.NORMAL);
 
 		document.add(generateHeader());
 		document.add(Chunk.NEWLINE);
 
 		if(splitTable)
 		{
-			Font paragraphFont = new Font(FontFamily.HELVETICA, 12, Font.NORMAL);
-
 			document.add(new Paragraph("Einnahmen", paragraphFont));
 			document.add(Chunk.NEWLINE);
 			PdfPTable table = generateTable(100, AmountType.INCOME);
@@ -178,17 +180,71 @@ public class ReportGenerator
 			}
 		}
 
+		if(includeCategoryBudgets)
+		{
+			document.add(Chunk.NEWLINE);
+			document.add(new Paragraph("Verbrauch nach Kategorien", paragraphFont));
+			document.add(Chunk.NEWLINE);
+			PdfPTable table = generateCategoryBudgets();
+			if(table != null)
+			{
+				document.add(table);
+			}
+		}
+
 		document.close();
 	}
 
+	private PdfPTable generateCategoryBudgets()
+	{
+		PdfPTable table = new PdfPTable(2);
+		table.setWidthPercentage(100);
+		Font font = new Font(FontFamily.HELVETICA, 8, Font.NORMAL, GrayColor.BLACK);
+		
+		//header cells
+		PdfPCell cellHeaderCategory = new PdfPCell(new Phrase("Kategorie", font));
+		cellHeaderCategory.setBackgroundColor(GrayColor.LIGHT_GRAY);
+		cellHeaderCategory.setHorizontalAlignment(Element.ALIGN_CENTER);
+		table.addCell(cellHeaderCategory);
+		PdfPCell cellHeaderAmount = new PdfPCell(new Phrase("Betrag", font));
+		cellHeaderAmount.setBackgroundColor(GrayColor.LIGHT_GRAY);
+		cellHeaderAmount.setHorizontalAlignment(Element.ALIGN_CENTER);
+		table.addCell(cellHeaderAmount);		
+
+		for(CategoryBudget budget : categoryBudgets)
+		{			
+			String name = budget.getName();
+			if(name.equals("NONE"))
+			{
+				name = "Keine Kategorie";
+			}			
+			PdfPCell cellName = new PdfPCell(new Phrase(name, font));
+			cellName.setBackgroundColor(new BaseColor(Color.WHITE));
+			cellName.setHorizontalAlignment(Element.ALIGN_CENTER);
+			table.addCell(cellName);
+			
+			PdfPCell cellAmount = new PdfPCell(new Phrase(Helpers.getCurrencyString(budget.getBudget() / 100.0, currency), font));
+			cellAmount.setBackgroundColor(new BaseColor(Color.WHITE));
+			cellAmount.setHorizontalAlignment(Element.ALIGN_CENTER);
+			table.addCell(cellAmount);
+		}
+		
+		return table;
+	}
+
 	private String getProperty(ReportItem reportItem, ColumnType columnType)
 	{
 		switch(columnType)
 		{
 			case AMOUNT:
-				return String.valueOf(Helpers.NUMBER_FORMAT.format(reportItem.getAmount() / 100.0).replace(".", ",")) + " " + currency;
+				return Helpers.getCurrencyString(reportItem.getAmount(), currency);
 			case CATEGORY:
-				return reportItem.getCategory().getName();
+				String name = reportItem.getCategory().getName();
+				if(name.equals("NONE"))
+				{
+					name = "Keine Kategorie";
+				}			
+				return name;
 			case DATE:
 				return reportItem.getDate();
 			case DESCRIPTION:
diff --git a/src/de/deadlocker8/budgetmaster/ui/HomeController.java b/src/de/deadlocker8/budgetmaster/ui/HomeController.java
index a17c5d1effb508eaa3c5b2fafacf6e9ca34024ed..1cf7c0c4d6f4a93eee3ae601aa462b616955a67a 100644
--- a/src/de/deadlocker8/budgetmaster/ui/HomeController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/HomeController.java
@@ -82,7 +82,7 @@ public class HomeController implements Refreshable
 			{
 				currency = controller.getSettings().getCurrency();
 			}
-			labelBudget.setText(String.valueOf(Helpers.NUMBER_FORMAT.format(remaining).replace(".", ",")) + " " + currency);
+			labelBudget.setText(Helpers.getCurrencyString(remaining, currency));
 			if(remaining <= 0)
 			{
 				labelBudget.setStyle("-fx-text-fill: #CC0000");
@@ -91,7 +91,7 @@ public class HomeController implements Refreshable
 			{
 				labelBudget.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text"));
 			}
-			labelStartBudget.setText("von " + String.valueOf(Helpers.NUMBER_FORMAT.format(budget.getIncomeSum()).replace(".", ",")) + " " + currency + " verbleibend");
+			labelStartBudget.setText("von " + Helpers.getCurrencyString(budget.getIncomeSum(), currency) + " verbleibend");
 			
 			double factor = remaining / budget.getIncomeSum();
 			if(factor < 0)
diff --git a/src/de/deadlocker8/budgetmaster/ui/PaymentController.java b/src/de/deadlocker8/budgetmaster/ui/PaymentController.java
index d7e8ec416d92cfd23578c994f305809bf8b00c91..a1dc8834cb45e38fef892c6e8e22e7036105ae9c 100644
--- a/src/de/deadlocker8/budgetmaster/ui/PaymentController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/PaymentController.java
@@ -191,8 +191,8 @@ public class PaymentController implements Refreshable
 		{
 			currency = controller.getSettings().getCurrency();
 		}
-		labelIncomes.setText(String.valueOf(Helpers.NUMBER_FORMAT.format(budget.getIncomeSum()).replace(".", ",")) + " " + currency);
-		labelPayments.setText(String.valueOf(Helpers.NUMBER_FORMAT.format(budget.getPaymentSum()).replace(".", ",")) + " " + currency);
+		labelIncomes.setText(Helpers.getCurrencyString(budget.getIncomeSum(), currency));
+		labelPayments.setText(Helpers.getCurrencyString(budget.getPaymentSum(), currency));
 	}
 
 	public void deleteNormalPayment(NormalPayment payment)
diff --git a/src/de/deadlocker8/budgetmaster/ui/ReportController.java b/src/de/deadlocker8/budgetmaster/ui/ReportController.java
index 371df69e91f383f4a0bb65bfe3eb1435d299793a..0ed7c910a7ecbb887ad903ad77e746ff314b4712 100644
--- a/src/de/deadlocker8/budgetmaster/ui/ReportController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/ReportController.java
@@ -326,7 +326,7 @@ public class ReportController implements Refreshable
 			{
 				StringProperty value = new SimpleStringProperty();
 				double amount = param.getValue().getAmount() / 100.0;
-				value.set(String.valueOf(Helpers.NUMBER_FORMAT.format(amount).replace(".", ",")) + " " + controller.getSettings().getCurrency());
+				value.set(Helpers.getCurrencyString(amount, controller.getSettings().getCurrency()));
 				return value;
 			}
 		});
@@ -432,7 +432,8 @@ public class ReportController implements Refreshable
 		if(file != null)
 		{		
 			reportPath = file;
-			ReportGenerator reportGenerator = new ReportGenerator(new ArrayList<ReportItem>(tableView.getItems()),																
+			ReportGenerator reportGenerator = new ReportGenerator(new ArrayList<ReportItem>(tableView.getItems()),
+																controller.getCategoryBudgets(),
 																columnOrder,
 																checkBoxSplitTable.isSelected(), 
 																checkBoxIncludeCategoryBudgets.isSelected(),																
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java
index 2f768acb0a7fe3ded93c2ccfd5e7da0f5c745ff3..74b06681cef7c45b731bcd35cea41ac51accd526 100644
--- a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java
@@ -59,7 +59,7 @@ public class CategoryBudgetCell extends ListCell<CategoryBudget>
 			hbox.getChildren().add(r);
 			HBox.setHgrow(r, Priority.ALWAYS);
 
-			Label labelBudget = new Label(String.valueOf(Helpers.NUMBER_FORMAT.format(item.getBudget() / 100.0)).replace(".", ",") + " " + homeController.getController().getSettings().getCurrency());
+			Label labelBudget = new Label(Helpers.getCurrencyString(item.getBudget() / 100.0, homeController.getController().getSettings().getCurrency()));
 			labelBudget.setStyle("-fx-font-weight: bold; -fx-font-size: 16; -fx-text-fill: #247A2D;");
 			if(item.getBudget() > 0)
 			{
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java
index 528e2f1c019da5b1827537452c0aeb5966e357e4..ce20c31a7b82d563bd0d4d27887f20c0f21831a0 100644
--- a/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java
@@ -122,7 +122,7 @@ public class PaymentCell extends ListCell<Payment>
 			hbox.getChildren().add(r);
 			HBox.setHgrow(r, Priority.ALWAYS);
 
-			Label labelBudget = new Label(String.valueOf(Helpers.NUMBER_FORMAT.format(item.getAmount() / 100.0)).replace(".", ",") + " " + paymentController.getController().getSettings().getCurrency());
+			Label labelBudget = new Label(Helpers.getCurrencyString(item.getAmount(), paymentController.getController().getSettings().getCurrency()));
 			labelBudget.setPrefHeight(HEIGHT);
 			labelBudget.setStyle("-fx-font-weight: bold; -fx-font-size: 16; -fx-text-fill: #247A2D");
 			labelBudget.setAlignment(Pos.CENTER);