diff --git a/stripe_checkout/stripe_checkout/management/commands/processevents.py b/stripe_checkout/stripe_checkout/management/commands/processevents.py
index 9cdc7e0512fbc54240886ad1466f8e696fa8a4d7..36fcf1675365f6615e24f5a42ce2fab83967c56f 100644
--- a/stripe_checkout/stripe_checkout/management/commands/processevents.py
+++ b/stripe_checkout/stripe_checkout/management/commands/processevents.py
@@ -16,7 +16,7 @@ VALID_EVENTS = [
     PAYMENT_INTENT_CANCELED,
 ]
 
-RAISE_EXCEPTIONS = True
+RAISE_EXCEPTIONS = False
 
 UNPROCESSED_PAYMENT_EMAIL_TEMPLATE = """\
 A payment was made in Stripe that could not be linked to a Visitor. Please process this
@@ -43,11 +43,11 @@ class Command(BaseCommand):
                     else:
                         msg = self.style.SUCCESS(f"{prefix} success!")
                 except Exception:
-                    msg = self.style.ERROR(f"{prefix} error!")
+                    self.stdout.write(self.style.ERROR(f"{prefix} error!"))
                     if RAISE_EXCEPTIONS:
                         raise
                     traceback.print_exc()
-                finally:
+                else:
                     event.handled = True
                     event.save()
                     self.stdout.write(msg)
@@ -77,7 +77,11 @@ class Command(BaseCommand):
         if order is None:
             return self._notify_unprocessed_payment(payment_intent)
         api = VisitorAPI()
-        visitor = api.get_visitor(order.visitor_id)
+        visitor = api.get_visitor_or_none(order.visitor_id)
+        if visitor is None:
+            self.stdout.write(self.style.ERROR("Visitor not found!"))
+            return self._notify_unprocessed_payment(payment_intent)
+
         for item in order.items.all():
             if item.kind == ItemKind.REGISTRATION_TYPE:
                 visitor.paid = True
@@ -94,7 +98,12 @@ class Command(BaseCommand):
         if order is None:
             return False
         api = VisitorAPI()
-        visitor = api.get_visitor(order.visitor_id)
+        visitor = api.get_visitor_or_none(order.visitor_id)
+        if visitor is None:
+            self.stdout.write(
+                self.style.ERROR("Visitor not found! Not processing cancellation")
+            )
+            return
         visitor.canceled = True
         api.update_visitor(visitor)
         order.canceled = True
diff --git a/stripe_checkout/stripe_checkout/visit.py b/stripe_checkout/stripe_checkout/visit.py
index fb0df5005d8c5b99c1fc48f981b2509b1486525e..2751cc436bc9720f6df4b1f0cd7feb35b604fec7 100644
--- a/stripe_checkout/stripe_checkout/visit.py
+++ b/stripe_checkout/stripe_checkout/visit.py
@@ -76,6 +76,14 @@ class VisitorAPI:
             raise Http404()
         return Visitor.from_api(result)
 
+    def get_visitor_or_none(
+        self, visitor_id: str, allow_deleted=False
+    ) -> Optional[Visitor]:
+        try:
+            return self.get_visitor(visitor_id, allow_deleted)
+        except Http404:
+            return None
+
     def update_visitor(
         self, visitor: Union[str, Visitor], payload: Optional[dict] = None
     ):