diff --git a/aleksis/apps/paweljong/forms.py b/aleksis/apps/paweljong/forms.py
index 901f6d6dea786c29c0a7a18269e276de3ce30d8f..adf6bd10ca84bb4102d3c713a3fb0a0e19991882 100644
--- a/aleksis/apps/paweljong/forms.py
+++ b/aleksis/apps/paweljong/forms.py
@@ -8,6 +8,7 @@ from django_select2.forms import ModelSelect2MultipleWidget, ModelSelect2Widget
 from material import Fieldset, Layout, Row
 from phonenumber_field.formfields import PhoneNumberField
 
+from aleksis.apps.tezor.models.base import Client
 from aleksis.apps.tezor.models.invoice import InvoiceGroup
 from aleksis.core.mixins import ExtensibleForm
 from aleksis.core.models import Group, Person
@@ -349,9 +350,17 @@ class RegisterEventFinancial(ExtensibleForm):
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
 
-        self.fields["payment_method"].choices = InvoiceGroup.objects.get(
-            name="Hack'n'Fun-Veranstaltungen"
-        ).get_variant_choices()
+        # FIXME Maybe do not hard-code this
+        client, __ = Client.objects.get_or_create(name="Teckids e.V.")
+        group, __ = InvoiceGroup.objects.get_or_create(
+            name="Hack'n'Fun-Veranstaltungen",
+            client=client,
+            defaults={
+                "template_name": "paweljong/invoice_pdf.html",
+            },
+        )
+
+        self.fields["payment_method"].choices = group.get_variant_choices()
 
     class Meta:
         model = EventRegistration
diff --git a/aleksis/apps/paweljong/migrations/0027_paweljongglobalpermissions.py b/aleksis/apps/paweljong/migrations/0027_paweljongglobalpermissions.py
new file mode 100644
index 0000000000000000000000000000000000000000..3f366678270ffdb6ea457fbb2eef21cdd4f096e0
--- /dev/null
+++ b/aleksis/apps/paweljong/migrations/0027_paweljongglobalpermissions.py
@@ -0,0 +1,33 @@
+# Generated by Django 4.2.10 on 2024-03-03 16:20
+
+import colorfield.fields
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("paweljong", "0026_drop_sites"),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name="PaweljongGlobalPermissions",
+            fields=[
+                (
+                    "id",
+                    models.BigAutoField(
+                        auto_created=True,
+                        primary_key=True,
+                        serialize=False,
+                        verbose_name="ID",
+                    ),
+                ),
+            ],
+            options={
+                "permissions": (
+                    ("generate_lists", "Can generate lists of participants of a group"),
+                ),
+                "managed": False,
+            },
+        ),
+    ]
diff --git a/aleksis/apps/paweljong/models.py b/aleksis/apps/paweljong/models.py
index 584560172d1ca1b7f806da7b90de1945069c4be3..8f6d10b29393488b3d9cd8346eed94895b7eeae4 100644
--- a/aleksis/apps/paweljong/models.py
+++ b/aleksis/apps/paweljong/models.py
@@ -15,7 +15,7 @@ from payments import PurchasedItem
 
 from aleksis.apps.tezor.models.base import Client
 from aleksis.apps.tezor.models.invoice import Invoice, InvoiceGroup
-from aleksis.core.mixins import ExtensibleModel
+from aleksis.core.mixins import ExtensibleModel, GlobalPermissionModel
 from aleksis.core.models import Group, Person
 from aleksis.core.util.core_helpers import generate_random_code, get_site_preferences
 from aleksis.core.util.email import send_email
@@ -460,3 +460,11 @@ class Checkpoint(ExtensibleModel):
     lon = models.DecimalField(
         max_digits=11, decimal_places=8, verbose_name=_("Longitude of check"), blank=True, null=True
     )
+
+
+class PaweljongGlobalPermissions(GlobalPermissionModel):
+    class Meta:
+        managed = False
+        permissions = (
+            ("generate_lists", _("Can generate lists of participants of a group")),
+        )
diff --git a/aleksis/apps/paweljong/rules.py b/aleksis/apps/paweljong/rules.py
index c74b3263f7ddce3f91480298cbbd0585fb54341f..a5564586145b6333537a90e97258cc50ef145887 100644
--- a/aleksis/apps/paweljong/rules.py
+++ b/aleksis/apps/paweljong/rules.py
@@ -238,6 +238,12 @@ create_registration_states_predicate = has_person & (
 )
 rules.add_perm("paweljong.create_registration_states_rule", create_registration_states_predicate)
 
+# Generate lists
+generate_lists_predicate = has_person & (
+    has_global_perm("paweljong.generate_lists")
+)
+rules.add_perm("paweljong.generate_lists_rule", generate_lists_predicate)
+
 # View menu
 can_view_menu_predicate = (
     has_person