diff --git a/src/de/deadlocker8/budgetmaster/logic/report/ColumnType.java b/src/de/deadlocker8/budgetmaster/logic/report/ColumnType.java
index 313f400cee9784d5483e9fd0d8f11fca3be23902..5401e1ffbd82e4c39ba02803e3f3944c7646ae3f 100644
--- a/src/de/deadlocker8/budgetmaster/logic/report/ColumnType.java
+++ b/src/de/deadlocker8/budgetmaster/logic/report/ColumnType.java
@@ -11,6 +11,7 @@ public enum ColumnType
 	CATEGORY(Strings.REPORT_CATEGORY, 3),
 	NAME(Strings.REPORT_NAME, 3),
 	DESCRIPTION(Strings.REPORT_DESCRIPTION, 3), 
+	TAGS(Strings.REPORT_TAGS, 3),
 	RATING(Strings.REPORT_RATING, 1), 
 	AMOUNT(Strings.REPORT_AMOUNT, 2);
 	
diff --git a/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java b/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java
index 7bcd09a4d98c24979b7556dbb7c881ce2a3719d7..87cf2a616c0bece2b71068166d1b8dece2744be3 100644
--- a/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java
+++ b/src/de/deadlocker8/budgetmaster/logic/report/ReportGenerator.java
@@ -268,6 +268,8 @@ public class ReportGenerator
 				return DateTime.parse(reportItem.getDate(), DateTimeFormat.forPattern("YYYY-MM-dd")).toString("dd.MM.YYYY");
 			case DESCRIPTION:
 				return reportItem.getDescription();
+			case TAGS:
+				return reportItem.getTags();
 			case NAME:
 				return reportItem.getName();
 			case POSITION:
diff --git a/src/de/deadlocker8/budgetmaster/logic/report/ReportItem.java b/src/de/deadlocker8/budgetmaster/logic/report/ReportItem.java
index 65d9bc8b0c88674d64b1ab2b9e4ff034cf955b90..c26a6e4f6a0c93ccdb0bf935b59ecaa56fe24871 100644
--- a/src/de/deadlocker8/budgetmaster/logic/report/ReportItem.java
+++ b/src/de/deadlocker8/budgetmaster/logic/report/ReportItem.java
@@ -10,6 +10,7 @@ public class ReportItem
 	private Category category;
 	private String name;
 	private String description;
+	private String tags;
 	private boolean repeating;
 
 	public ReportItem()
@@ -75,6 +76,16 @@ public class ReportItem
 	public void setDescription(String description)
 	{
 		this.description = description;
+	}	
+
+	public String getTags()
+	{
+		return tags;
+	}
+
+	public void setTags(String tags)
+	{
+		this.tags = tags;
 	}
 
 	public boolean getRepeating()
@@ -90,6 +101,6 @@ public class ReportItem
 	@Override
 	public String toString()
 	{
-		return "ReportItem [position=" + position + ", amount=" + amount + ", date=" + date + ", category=" + category + ", name=" + name + ", description=" + description + ", isRepeating=" + repeating + "]";
+		return "ReportItem [position=" + position + ", amount=" + amount + ", date=" + date + ", category=" + category + ", name=" + name + ", description=" + description + ", tags=" + tags + ", repeating=" + repeating + "]";
 	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/tag/TagHandler.java b/src/de/deadlocker8/budgetmaster/logic/tag/TagHandler.java
index a82853ee7ca705209e1c6d1636edfe87967a9395..6ea0b5a8f66ef75e9d793912c78d345dd3f2f5b7 100644
--- a/src/de/deadlocker8/budgetmaster/logic/tag/TagHandler.java
+++ b/src/de/deadlocker8/budgetmaster/logic/tag/TagHandler.java
@@ -2,28 +2,52 @@ package de.deadlocker8.budgetmaster.logic.tag;
 
 import java.util.ArrayList;
 
+import de.deadlocker8.budgetmaster.logic.Settings;
+import de.deadlocker8.budgetmaster.logic.payment.NormalPayment;
+import de.deadlocker8.budgetmaster.logic.payment.Payment;
+import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry;
+import de.deadlocker8.budgetmaster.logic.serverconnection.ServerTagConnection;
+
 public class TagHandler
 {
-	private ArrayList<Tag> tags;
-
-	public TagHandler()
+	private Settings settings;
+	
+	public TagHandler(Settings settings)
 	{
-		this.tags = new ArrayList<>();
+		this.settings = settings;
 	}
 
-	public ArrayList<Tag> getTags()
+	public ArrayList<Tag> getTags(Payment payment) throws Exception
 	{
+		ArrayList<Tag> tags = new ArrayList<>();
+		
+		ServerTagConnection connection = new ServerTagConnection(settings);
+		
+		if(payment instanceof NormalPayment)
+		{
+			tags.addAll(connection.getAllTagsForPayment((NormalPayment)payment));
+		}
+		else
+		{
+			tags.addAll(connection.getAllTagsForRepeatingPayment(((RepeatingPaymentEntry)payment).getRepeatingPaymentID()));
+		}
+		
 		return tags;
 	}
-
-	public void setTags(ArrayList<Tag> tags)
-	{
-		this.tags = tags;
-	}
-
-	@Override
-	public String toString()
+	
+	public String getTagsAsString(Payment payment) throws Exception
 	{
-		return "TagHandler [tags=" + tags + "]";
+		ArrayList<Tag> tags = getTags(payment);
+		StringBuilder sb = new StringBuilder();
+		for(int i = 0; i < tags.size(); i++)
+		{
+			sb.append(tags.get(i).getName());
+			if(i != tags.size()-1)
+			{
+				sb.append(", ");
+			}
+		}
+		
+		return sb.toString();
 	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java b/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
index ff0d0d00bf64eacd665216289b3fb4c8cec33db5..06a0419cd16a62835ddeda8ed0ec1fc6d3069207 100644
--- a/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
+++ b/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
@@ -73,6 +73,7 @@ public class Strings
     public static final String REPORT_CATEGORY = "report.category";
     public static final String REPORT_NAME = "report.name";
     public static final String REPORT_DESCRIPTION = "report.description";
+    public static final String REPORT_TAGS = "report.tags";
     public static final String REPORT_RATING = "report.rating";
     public static final String REPORT_AMOUNT = "report.amount";
     public static final String REPORT_HEADLINE = "report.headline";
diff --git a/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties b/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties
index 47e6bcb32c01adcf18a5bd3b0c977522c6f861f7..f0205965630a2d181eede40e7fac8f4ed488514b 100644
--- a/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties
+++ b/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties
@@ -70,6 +70,7 @@ report.repeating=Wiederholend
 report.category=Kategorie
 report.name=Name
 report.description=Notiz
+report.tags=Tags
 report.rating=+/-
 report.amount=Betrag
 report.headline=Monatsbericht - {0}
diff --git a/src/de/deadlocker8/budgetmaster/resources/languages/_en.properties b/src/de/deadlocker8/budgetmaster/resources/languages/_en.properties
index c8cb26959e359919927bd97dcbaaed1eaafed534..44043f5565b72a6646cbc529e4414abad1e93429 100644
--- a/src/de/deadlocker8/budgetmaster/resources/languages/_en.properties
+++ b/src/de/deadlocker8/budgetmaster/resources/languages/_en.properties
@@ -70,6 +70,7 @@ report.repeating=Repeating
 report.category=Category
 report.name=Name
 report.description=Description
+report.tags=Tags
 report.rating=+/-
 report.amount=Amount
 report.headline=Month Report - {0}
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/ReportController.java b/src/de/deadlocker8/budgetmaster/ui/controller/ReportController.java
index 46f9665bfcedc594ebf520b88f565091efe13e30..be2ba945b634e6550799e6d97a7bfcbec1be36e6 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/ReportController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/ReportController.java
@@ -25,6 +25,7 @@ import de.deadlocker8.budgetmaster.logic.report.ReportGenerator;
 import de.deadlocker8.budgetmaster.logic.report.ReportItem;
 import de.deadlocker8.budgetmaster.logic.report.ReportPreferences;
 import de.deadlocker8.budgetmaster.logic.report.ReportSorting;
+import de.deadlocker8.budgetmaster.logic.tag.TagHandler;
 import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.FileHelper;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
@@ -89,6 +90,7 @@ public class ReportController implements Refreshable, Styleable
 	private TableColumn<ReportItem, String> columnCategory;
 	private TableColumn<ReportItem, Integer> columnName;
 	private TableColumn<ReportItem, String> columnDescription;
+	private TableColumn<ReportItem, String> columnTags;
 	private TableColumn<ReportItem, Integer> columnRating;
 	private TableColumn<ReportItem, String> columnAmount;
 
@@ -176,6 +178,15 @@ public class ReportController implements Refreshable, Styleable
 					tableView.getSortOrder().add(columnIsRepeating);
 				}
 				break;
+			case TAGS:
+				initColumnTags(activated);
+				toggleColumn(columnTags, activated);
+				if(sortType != null)
+				{
+					columnTags.setSortType(sortType);
+					tableView.getSortOrder().add(columnTags);
+				}
+				break;
 			default:
 				break;					
 		}
@@ -393,6 +404,31 @@ public class ReportController implements Refreshable, Styleable
         columnDescription.setGraphic(hboxColumnDescription);
         tableView.getColumns().add(columnDescription);
 	}
+
+	private void initColumnTags(boolean activated)
+	{
+	    columnTags = new TableColumn<>();
+	    columnTags.setUserData(ColumnType.TAGS);
+	    columnTags.setCellValueFactory(new PropertyValueFactory<ReportItem, String>("tags"));
+	    columnTags.setStyle("-fx-alignment: CENTER;");
+        
+        HBox hboxColumnTags = new HBox();
+        hboxColumnTags.setAlignment(Pos.CENTER);
+        hboxColumnTags.setSpacing(3); 
+        
+        CheckBox checkBoxTags = new CheckBox();
+        hboxColumnTags.getChildren().add(checkBoxTags);
+        
+        Label labelColumnTags = new Label(Localization.getString(Strings.REPORT_TAGS));
+        hboxColumnTags.getChildren().add(labelColumnTags);        
+        
+        checkBoxTags.selectedProperty().addListener((a, b, c)->{
+        	 toggleColumn(columnTags, c);
+        });
+        checkBoxTags.setSelected(activated);
+        columnTags.setGraphic(hboxColumnTags);
+        tableView.getColumns().add(columnTags);
+	}
 	
 	private void initColumnRating(boolean activated)
 	{
@@ -487,6 +523,8 @@ public class ReportController implements Refreshable, Styleable
 	private ArrayList<ReportItem> createReportItems(ArrayList<Payment> payments)
 	{
 		ArrayList<ReportItem> reportItems = new ArrayList<>();
+		TagHandler tagHander = new TagHandler(controller.getSettings());
+		
 		for(int i = 0; i < payments.size(); i++)
 		{
 			Payment currentPayment = payments.get(i);
@@ -494,10 +532,20 @@ public class ReportController implements Refreshable, Styleable
 			reportItem.setPosition(i + 1);
 			reportItem.setDate(currentPayment.getDate());
 			reportItem.setAmount(currentPayment.getAmount());
-			reportItem.setDescription(currentPayment.getDescription());
 			reportItem.setName(currentPayment.getName());
+			reportItem.setDescription(currentPayment.getDescription());
 			reportItem.setRepeating(currentPayment instanceof RepeatingPaymentEntry);
 			reportItem.setCategory(controller.getCategoryHandler().getCategory(currentPayment.getCategoryID()));
+			
+			try
+			{
+				reportItem.setTags(tagHander.getTagsAsString(currentPayment));
+			}
+			catch(Exception e)
+			{
+				Logger.error(e);
+				controller.showConnectionErrorAlert(Localization.getString(Strings.ERROR_SERVER_CONNECTION_WITH_DETAILS));
+			}
 
 			reportItems.add(reportItem);
 		}