diff --git a/src/pretix/base/models/event.py b/src/pretix/base/models/event.py
index 4b9c911467..faebf5f362 100644
--- a/src/pretix/base/models/event.py
+++ b/src/pretix/base/models/event.py
@@ -20,6 +20,7 @@
 from django.utils.crypto import get_random_string
 from django.utils.formats import date_format
 from django.utils.functional import cached_property
+from django.utils.html import format_html
 from django.utils.timezone import make_aware, now
 from django.utils.translation import gettext, gettext_lazy as _
 from django_scopes import ScopedManager, scopes_disabled
@@ -1205,26 +1206,20 @@ def live_issues(self):
                     )
                 )
 
-        billing_obj = OrganizerBillingModel.objects.filter(organizer=self.organizer).first()
-
-        if not billing_obj or not billing_obj.stripe_payment_method_id:
-            issues.append(
-                (
-                    "<a {a_attr}>"
-                    + gettext('You need to fill the billing information.')
-                    + "</a>"
-                ).format(
-                    a_attr='href="%s#tab-0-1-open"'
-                           % (
-                               reverse(
-                                   "control:organizer.settings.billing",
-                                   kwargs={
-                                       "organizer": self.organizer.slug,
-                                   },
-                               ),
-                           ),
+        gs = GlobalSettingsObject()
+        if gs.settings.get("billing_validation", True) is True:
+            billing_obj = OrganizerBillingModel.objects.filter(organizer=self.organizer).first()
+            if not billing_obj or not billing_obj.stripe_payment_method_id:
+                url = reverse(
+                    "control:organizer.settings.billing",
+                    kwargs={"organizer": self.organizer.slug}
                 )
-            )
+                issue = format_html(
+                    '<a href="{}#tab-0-1-open">{}</a>',
+                    url,
+                    gettext("You need to fill the billing information.")
+                )
+                issues.append(issue)
 
         responses = event_live_issues.send(self)
         for receiver, response in sorted(responses, key=lambda r: str(r[0])):
diff --git a/src/pretix/common/enums.py b/src/pretix/common/enums.py
new file mode 100644
index 0000000000..97f00350c0
--- /dev/null
+++ b/src/pretix/common/enums.py
@@ -0,0 +1,6 @@
+from enum import StrEnum
+
+
+class ValidStates(StrEnum):
+    DISABLED = 'disabled'
+    ENABLED = 'enabled'
diff --git a/src/pretix/control/navigation.py b/src/pretix/control/navigation.py
index 57a121c169..4ad8f09cbf 100644
--- a/src/pretix/control/navigation.py
+++ b/src/pretix/control/navigation.py
@@ -581,7 +581,12 @@ def get_admin_navigation(request):
                     'label': _('Social login settings'),
                     'url': reverse('plugins:socialauth:admin.global.social.auth.settings'),
                     'active': (url.url_name == 'admin.global.social.auth.settings')
-                }
+                },
+                {
+                    'label': _('Billing Validation'),
+                    'url': reverse('control:admin.toggle.billing.validation'),
+                    'active': (url.url_name == 'admin.toggle.billing.validation'),
+                },
             ]
         },
     ]
diff --git a/src/pretix/control/templates/pretixcontrol/toggle_billing_validation.html b/src/pretix/control/templates/pretixcontrol/toggle_billing_validation.html
new file mode 100644
index 0000000000..fa948366bd
--- /dev/null
+++ b/src/pretix/control/templates/pretixcontrol/toggle_billing_validation.html
@@ -0,0 +1,49 @@
+{% extends "pretixcontrol/admin/base.html" %}
+{% load i18n %}
+{% load bootstrap3 %}
+{% load rich_text %}
+
+{% block title %}{% trans "Enable or disable billing validation" %}{% endblock %}
+{% block content %}
+    <nav id="event-nav" class="header-nav">
+        <div class="navigation">
+            <div class="navigation-title">
+                <h1>{% trans "Enable or disable billing validation" %}</h1>
+            </div>
+            {% include "pretixcontrol/event/component_link.html" %}
+        </div>
+    </nav>
+    <form action="" method="post" class="form-horizontal form-plugins">
+        {% csrf_token %}
+        {% if "success" in request.GET %}
+            <div class="alert alert-success">
+                {% trans "Your changes have been saved." %}
+            </div>
+        {% endif %}
+        <div class="tabbed-form">
+            <fieldset>
+                <legend>{% trans "Enable or disable billing validation" %}</legend>
+                <div class="table-responsive">
+                    <table class="table">
+                        <tr class="{% if billing_validation %}success{% else %}default{% endif %}">
+                            <td>
+                                <strong>{% trans "Validate billing information" %}</strong>
+                            </td>
+                            <td class="text-right flip" width="20%">
+                                {% if billing_validation %}
+                                    <button class="btn btn-default btn-block" name="billing_validation" value="disabled">
+                                        {% trans "Disabled" %}
+                                    </button>
+                                {% else %}
+                                    <button class="btn btn-default btn-block" name="billing_validation" value="enabled">
+                                        {% trans "Enabled" %}
+                                    </button>
+                                {% endif %}
+                            </td>
+                        </tr>
+                    </table>
+                </div>
+            </fieldset>
+        </div>
+    </form>
+{% endblock %}
diff --git a/src/pretix/control/urls.py b/src/pretix/control/urls.py
index d54a1e8c22..5c49325a8a 100644
--- a/src/pretix/control/urls.py
+++ b/src/pretix/control/urls.py
@@ -347,6 +347,7 @@
         url(r'^global/settings/$', global_settings.GlobalSettingsView.as_view(), name='admin.global.settings'),
         url(r'^global/update/$', global_settings.UpdateCheckView.as_view(), name='admin.global.update'),
         url(r'^global/message/$', global_settings.MessageView.as_view(), name='admin.global.message'),
+        url(r'^global/billing_validation/$', global_settings.ToggleBillingValidationView.as_view(), name="admin.toggle.billing.validation"),
         url(r'^vouchers/$', admin.VoucherList.as_view(), name='admin.vouchers'),
         url(r'^vouchers/add$', admin.VoucherCreate.as_view(), name='admin.vouchers.add'),
         url(r'^vouchers/(?P<voucher>\d+)/$', admin.VoucherUpdate.as_view(), name='admin.voucher'),
diff --git a/src/pretix/control/views/global_settings.py b/src/pretix/control/views/global_settings.py
index 38618f724b..8a41860970 100644
--- a/src/pretix/control/views/global_settings.py
+++ b/src/pretix/control/views/global_settings.py
@@ -15,6 +15,7 @@
 from pretix.base.models import LogEntry, OrderPayment, OrderRefund
 from pretix.base.services.update_check import check_result_table, update_check
 from pretix.base.settings import GlobalSettingsObject
+from pretix.common.enums import ValidStates
 from pretix.control.forms.global_settings import (
     GlobalSettingsForm, SSOConfigForm, UpdateSettingsForm,
 )
@@ -158,3 +159,36 @@ class RefundDetailView(AdministratorPermissionRequiredMixin, View):
     def get(self, request, *args, **kwargs):
         p = get_object_or_404(OrderRefund, pk=request.GET.get('pk'))
         return JsonResponse({'data': p.info_data})
+
+
+class ToggleBillingValidationView(AdministratorPermissionRequiredMixin, TemplateView):
+    template_name = 'pretixcontrol/toggle_billing_validation.html'
+
+    def __init__(self, *args, **kwargs):
+        super().__init__(*args, **kwargs)
+        self.gs = GlobalSettingsObject()
+
+    def get_context_data(self, **kwargs):
+        context = super().get_context_data(**kwargs)
+        if self.gs.settings.get('billing_validation') is None:
+            self.gs.settings.set('billing_validation', True)
+        context['billing_validation'] = self.gs.settings.get('billing_validation')
+        return context
+
+    def post(self, request, *args, **kwargs):
+        value = request.POST.get('billing_validation', '').lower()
+
+        if value == ValidStates.DISABLED:
+            billing_validation = False
+        elif value == ValidStates.ENABLED:
+            billing_validation = True
+        else:
+            logger.error('Invalid value for billing validation: %s', value)
+            messages.error(request, _('Invalid value for billing validation!'))
+            return redirect(self.get_success_url())
+
+        self.gs.settings.set('billing_validation', billing_validation)
+        return redirect(self.get_success_url())
+
+    def get_success_url(self) -> str:
+        return reverse('control:admin.toggle.billing.validation')