diff --git a/aleksis/apps/paweljong/schema/checkpoint.py b/aleksis/apps/paweljong/schema/checkpoint.py
index 5c1b03cabd3ad7fa016b38f01626eb11ba79071e..7b4c091911cd986a092f60ff512f27f298fcccaa 100644
--- a/aleksis/apps/paweljong/schema/checkpoint.py
+++ b/aleksis/apps/paweljong/schema/checkpoint.py
@@ -4,9 +4,9 @@ from django.utils import timezone
 import graphene
 from graphene_django import DjangoObjectType
 
+from aleksis.core.models import Person
 from aleksis.core.schema.base import PermissionsTypeMixin
 from aleksis.core.util.core_helpers import has_person
-from aleksis.core.models import Person
 
 from ..models import Checkpoint, Event
 
diff --git a/aleksis/apps/paweljong/schema/event_registration.py b/aleksis/apps/paweljong/schema/event_registration.py
index 66ece1aa73c8ceacf41a8dd9ab2b6f46766be501..8de044036d8e78ffa5d0ff54167c51244f7d192b 100644
--- a/aleksis/apps/paweljong/schema/event_registration.py
+++ b/aleksis/apps/paweljong/schema/event_registration.py
@@ -1,4 +1,6 @@
+from django.db import transaction
 from django.contrib.auth.models import User
+from django.core.exceptions import ValidationError
 from django.utils.text import slugify
 from django.utils.translation import gettext as _
 
@@ -50,11 +52,23 @@ class SendEventRegistrationMutation(graphene.Mutation):
 
     ok = graphene.Boolean()
 
+    @transaction.atomic
     def mutate(self, info, event: graphene.ID, event_registration: EventRegistrationInputType, **kwargs):
         event = Event.objects.get(pk=event)
 
         print(event_registration)
 
+        email = None
+
+        if event_registration["email"] is not None:
+            _mail_address = MailAddress.objects.create(
+                local_part=event_registration["email"]["local_part"],
+                domain=event_registration["email"]["domain"],
+            )
+            email = str(_mail_address)
+        elif event_registration["user"] is not None:
+            email = event_registration["user"]["email"]
+
         # Create user
         if event_registration is not None:
             user = User.objects.create(
@@ -69,7 +83,7 @@ class SendEventRegistrationMutation(graphene.Mutation):
         person, created = Person.objects.get_or_create(
             user=user,
             defaults={
-                "email": event_registration["person"]["email"],
+                "email": email,
                 "first_name": event_registration["person"]["first_name"],
                 "last_name": event_registration["person"]["last_name"],
             },
@@ -134,7 +148,7 @@ class SendEventRegistrationMutation(graphene.Mutation):
         registration.cost = event.cost
 
         if event.max_cost is not None and event.max_cost > 0:
-            amount = event_registration["payment"].amount
+            amount = event_registration["payment"]["amount"]
 
             if amount < event.cost:
                 voucher_amount = event.cost - amount
@@ -183,4 +197,5 @@ class SendEventRegistrationMutation(graphene.Mutation):
         if event_registration["retraction_consent"]:
             return SendEventRegistrationMutation(ok=True)
 
+        raise ValidationError(_("Retraction consent is required"))
         return SendEventRegistrationMutation(ok=False)