diff --git a/src/backoffice/templates/backoffice/assembly_badge.html b/src/backoffice/templates/backoffice/assembly_badge.html
index 22b6040e4d955fce2cdb5454b62b3b5f62c39ffa..0c62e1e5b9765d091f86143b0441d0cbed2f633e 100644
--- a/src/backoffice/templates/backoffice/assembly_badge.html
+++ b/src/backoffice/templates/backoffice/assembly_badge.html
@@ -177,12 +177,17 @@
         </div>
         <div class="card-body">
           {% for tok in valid_multiuse_tokens %}
-            <p><code>{{ tok.token }}</code>
-            <b>{{ tok.badge_class }}</b>
-            {% if tok.badge_class == 'limited' %}
-            <i> (Amount left: <code>{{ tok.limited_amount_left }}</code>)</i>
-            {% endif%}
-            </p>
+              <form class="form-inline"  action="{% url 'backoffice:assembly-badge-redeem-token-delete' assembly=assembly.id badge=badge.id pk=tok.pk %}" method="POST">
+                <p>
+                  <code>{{ tok.token }}</code>
+                  <b>{{ tok.badge_class }}</b>
+                  {% if tok.badge_class == 'limited' %}
+                    <i> (Amount left: <code>{{ tok.limited_amount_left }}</code>)</i>
+                  {% endif%}
+                  {% csrf_token %}
+                  <button type="submit" class="btn btn-sm btn-secondary">{% trans 'delete' %}</button>
+                </p>
+              </form>
           {% endfor %}
         </div>
       </form>
diff --git a/src/backoffice/urls.py b/src/backoffice/urls.py
index 9ec532ba2da83e277c38bcfadf48068228092bfd..6f7685c07cf6af000434e1d8e1ef4790e576bf0f 100644
--- a/src/backoffice/urls.py
+++ b/src/backoffice/urls.py
@@ -55,6 +55,8 @@ urlpatterns = [
     path('assembly/<uuid:assembly>/badge/<int:pk>/remove', assemblies.RemoveBadgeView.as_view(), name='assembly-badge-remove'),
     path('assembly/<uuid:assembly>/badge/<int:pk>/award', assemblies.AwardBadgeView.as_view(), name='assembly-badge-award'),
     path('assembly/<uuid:assembly>/badge/<int:pk>/redeem_token', assemblies.RedeemTokenBadgeView.as_view(), name='assembly-badge-redeem-token'),
+    path('assembly/<uuid:assembly>/badge/<int:badge>/redeem_token/<str:pk>/delete',
+         assemblies.RemoveBadgeTokenView.as_view(), name='assembly-badge-redeem-token-delete'),
     path('assembly/<uuid:assembly>/badge/<int:pk>/redeem_token/<str:badge_class>',
          assemblies.RedeemTokenBadgeView.as_view(), name='assembly-badge-redeem-token'),
 
diff --git a/src/backoffice/views/assemblies.py b/src/backoffice/views/assemblies.py
index 9a12292bc70b1588f784e5b3c46847f2c136bc39..33f156714cef9bacbf1f8819f5dfe7bc180c5aab 100644
--- a/src/backoffice/views/assemblies.py
+++ b/src/backoffice/views/assemblies.py
@@ -609,6 +609,21 @@ class RedeemTokenBadgeView(AssemblyMixin, View):
         return render(self.request, 'backoffice/assembly_badge_redeem_token.html', ctx)
 
 
+class RemoveBadgeTokenView(AssemblyMixin, DeleteView):
+    assembly_url_param = 'assembly'
+    assembly_management = True
+    model = BadgeToken
+
+    def delete(self, *args, **kwargs):
+        result = super().delete(*args, **kwargs)
+        messages.success(self.request, _('removed'))
+        logger.info(f'BadgeToken {self.object} removed by {self.request.user}')
+        return result
+
+    def get_success_url(self, *args, **kwargs):
+        return reverse('backoffice:assembly-badge', kwargs={'assembly': self.assembly.pk, 'pk': self.kwargs['badge']})
+
+
 class RemoveBadgeView(AssemblyMixin, DeleteView):
     assembly_url_param = 'assembly'
     assembly_management = True
diff --git a/src/plainui/jinja2/plainui/world.html b/src/plainui/jinja2/plainui/world.html
index 10ed585004800b9a6784d1169f1725db17bfbba7..19f841a3d399781cdd565e5eb35a3b8a12437305 100644
--- a/src/plainui/jinja2/plainui/world.html
+++ b/src/plainui/jinja2/plainui/world.html
@@ -17,4 +17,7 @@
 
         {{ markdownMacro.markdown(markdown=page.rendered_body|safe) }}
     </article>
+
+    <hr class="my-8">
+
 {% endblock %}