diff --git a/scipost_django/tasks/forms.py b/scipost_django/tasks/forms.py
index e9ad7289850650bc752681b18f70b4dd424f6c3c..80e28a668e8874f82c2a7689566fbe21faca8e18 100644
--- a/scipost_django/tasks/forms.py
+++ b/scipost_django/tasks/forms.py
@@ -19,7 +19,7 @@ class TaskListSearchForm(forms.Form):
         label="Order by",
         choices=[
             ("", "-----"),
-            ("kind__name", "Type"),
+            ("kind.name", "Kind"),
             ("title", "Title"),
             ("due_date", "Due date"),
         ],
@@ -65,6 +65,16 @@ class TaskListSearchForm(forms.Form):
                     self.fields[key].initial = None
 
     def search_results(self) -> Collection[Task]:
+        def recursive_get_attr(obj, attr):
+            """
+            Recursively get attributes from an object.
+            e.g. recursive_get_attr(obj, "a.b.c") is equivalent to obj.a.b.c
+            """
+            if "." in attr:
+                first, rest = attr.split(".", 1)
+                return recursive_get_attr(getattr(obj, first), rest)
+            return getattr(obj, attr)
+
         search_text = self.cleaned_data.get("search", "")
         orderby = self.cleaned_data.get("orderby", "")
         ordering = self.cleaned_data.get("ordering", "-")
@@ -75,4 +85,12 @@ class TaskListSearchForm(forms.Form):
             for task in task_kind.get_tasks(search_text)
         ]
 
+        reverse_ordering = ordering == "-"
+        if orderby:
+            tasks = sorted(
+                tasks,
+                key=lambda x: recursive_get_attr(x, orderby),
+                reverse=reverse_ordering,
+            )
+
         return tasks
diff --git a/scipost_django/tasks/tasks/task_kinds.py b/scipost_django/tasks/tasks/task_kinds.py
index 94326dad7031b863083de719b76e933ec49dc15a..d3a9568eb51cadd0a802f5275080f6092a6e7e4c 100644
--- a/scipost_django/tasks/tasks/task_kinds.py
+++ b/scipost_django/tasks/tasks/task_kinds.py
@@ -175,12 +175,15 @@ class SendSubsidyInvoiceTask(TaskKind):
         return (
             Subsidy.objects.all()
             .annotate(
-                due_date=Subquery(
-                    SubsidyPayment.objects.filter(
-                        subsidy=OuterRef("id"), proof_of_payment__isnull=True
-                    )
-                    .order_by("date_scheduled")
-                    .values("date_scheduled")[:1]
+                due_date=Cast(
+                    Subquery(
+                        SubsidyPayment.objects.filter(
+                            subsidy=OuterRef("id"), proof_of_payment__isnull=True
+                        )
+                        .order_by("date_scheduled")
+                        .values("date_scheduled")[:1]
+                    ),
+                    DateTimeField(),
                 )
             )
             .filter(