diff --git a/scipost_django/finances/forms.py b/scipost_django/finances/forms.py
index e39525574949ea434d161c79b628752144ea3e75..b74540c8776753602a97a6e59542cdc68e91b0bf 100644
--- a/scipost_django/finances/forms.py
+++ b/scipost_django/finances/forms.py
@@ -6,6 +6,7 @@ import re
 
 from django import forms
 from django.contrib.auth import get_user_model
+from django.urls import reverse_lazy
 from django.utils.dates import MONTHS
 from django.db.models import Q, Case, DateField, Max, Min, Sum, Value, When, F
 from django.utils import timezone
@@ -36,6 +37,14 @@ class SubsidyForm(forms.ModelForm):
         ),
     )
 
+    renewal_of = forms.ModelChoiceField(
+        queryset=Subsidy.objects.all(),
+        widget=autocomplete.ModelSelect2(
+            url=reverse_lazy("finances:subsidy_autocomplete")
+        ),
+        help_text=("Start typing, and select from the popup."),
+    )
+
     class Meta:
         model = Subsidy
         fields = [
@@ -453,11 +462,13 @@ class LogsFilterForm(forms.Form):
 
                 if self.cleaned_data["hourly_rate"]:
                     salary_per_month = [
-                        duration.total_seconds()
-                        / 3600  # Convert to hours
-                        * self.cleaned_data["hourly_rate"]
-                        if duration is not None
-                        else 0
+                        (
+                            duration.total_seconds()
+                            / 3600  # Convert to hours
+                            * self.cleaned_data["hourly_rate"]
+                            if duration is not None
+                            else 0
+                        )
                         for duration in total_time_per_month
                     ]
                 else:
diff --git a/scipost_django/finances/urls.py b/scipost_django/finances/urls.py
index 371cbb6f451a4ef3642db57eba18b67a7207154c..dd9ff61282502773ddaa6f43a11e50ca393f8314 100644
--- a/scipost_django/finances/urls.py
+++ b/scipost_django/finances/urls.py
@@ -101,6 +101,11 @@ urlpatterns = [
         views.SubsidyDeleteView.as_view(),
         name="subsidy_delete",
     ),
+    path(
+        "subsidies/autocomplete/",
+        views.SubsidyAutocompleteView.as_view(),
+        name="subsidy_autocomplete",
+    ),
     path(
         "subsidies/<int:pk>/", views.SubsidyDetailView.as_view(), name="subsidy_details"
     ),
diff --git a/scipost_django/finances/views.py b/scipost_django/finances/views.py
index 1774b925080766f627f4280f8121d0fcb06ada11..7a641eac0034cee91e88ad1d356ad04a5dcaec68 100644
--- a/scipost_django/finances/views.py
+++ b/scipost_django/finances/views.py
@@ -4,8 +4,9 @@ __license__ = "AGPL v3"
 
 import datetime
 from itertools import accumulate
-import mimetypes
+from dal import autocomplete
 
+from django.db.models import Q
 import matplotlib
 
 matplotlib.use("Agg")
@@ -290,6 +291,30 @@ class SubsidyDeleteView(PermissionsMixin, DeleteView):
     success_url = reverse_lazy("finances:subsidies")
 
 
+class SubsidyAutocompleteView(autocomplete.Select2QuerySetView):
+    """
+    Autocomplete for Subsidy, meant to be used with Select2.
+    Will only show subsidies whose amounts are publicly visible
+    for users without the 'can_manage_subsidies' permission.
+    """
+
+    def get_queryset(self):
+        qs = Subsidy.objects.all()
+        if not self.request.user.has_perm("scipost.can_manage_subsidies"):
+            qs = qs.filter(amount_publicly_shown=True)
+        if self.q:
+            qs = qs.filter(
+                Q(organization__name__unaccent__icontains=self.q)
+                | Q(organization__name_original__unaccent__icontains=self.q)
+                | Q(organization__acronym__unaccent__icontains=self.q)
+                | Q(amount__icontains=self.q)
+                | Q(description__icontains=self.q)
+                | Q(date_from__year__icontains=self.q)
+                | Q(date_until__year__icontains=self.q)
+            )
+        return qs
+
+
 class SubsidyListView(ListView):
     model = Subsidy
     template_name = "finances/subsidy_list_old.html"