diff --git a/smash/web/templates/appointments/edit.html b/smash/web/templates/appointments/edit.html
index 029dcca76dde7d0688eed472d96c3b2ea6a0a7e9..d87475c2b2e8403a4e619da027ff9c7b53db6ace 100644
--- a/smash/web/templates/appointments/edit.html
+++ b/smash/web/templates/appointments/edit.html
@@ -89,18 +89,26 @@
                     </fieldset>
                 {% endif %}
                 <div class="box-footer">
-                    <div class="col-sm-4">
+                    <div class="col-sm-3">
                         <button type="submit" class="btn btn-block btn-success">Save</button>
                     </div>
-                    <div class="col-sm-4">
+                    <div class="col-sm-3">
                         <button id="save-and-continue" type="button" class="btn btn-block btn-success">Save and
                             Continue
                         </button>
                     </div>
-                    <div class="col-sm-4">
+                    <div class="col-sm-3">
                         <a href="{% url 'web.views.appointments' %}" class="btn btn-block btn-default"
                            onclick="history.back()">Cancel</a>
                     </div>
+                    {% if not appointment.visit %}
+                        {% ifequal appointment.status  "SCHEDULED" %}
+                            <div class="col-sm-3">
+                                <a href="{% url 'web.views.appointment_delete' appointment.id %}"
+                                   class="btn btn-block btn-danger">Delete</a>
+                            </div>
+                        {% endifequal %}
+                    {% endif %}
                 </div><!-- /.box-footer -->
             </form>
         </div>
@@ -111,8 +119,6 @@
     {% endblock %}
 
 
-
-
 {% endblock maincontent %}
 
 {% block scripts %}
diff --git a/smash/web/tests/view/test_appointments.py b/smash/web/tests/view/test_appointments.py
index f3e269fe2e139a33baf831f42e33aebdae427653..239fb666b8b039fe5a5c0bc3783fe65105ec23db 100644
--- a/smash/web/tests/view/test_appointments.py
+++ b/smash/web/tests/view/test_appointments.py
@@ -150,3 +150,19 @@ class AppointmentsViewTests(LoggedInTestCase):
 
         updated_subject = Subject.objects.get(id=subject.id)
         self.assertIsNotNone(updated_subject.flying_team)
+
+    def test_delete_appointment(self):
+        appointment = create_appointment()
+        appointment.visit = None
+        appointment.save()
+
+        self.client.post(reverse('web.views.appointment_delete', kwargs={'appointment_id': appointment.id}))
+
+        self.assertEqual(0, Appointment.objects.all().count())
+
+    def test_delete_invalid_appointment_with_visit(self):
+        appointment = create_appointment()
+
+        self.client.post(reverse('web.views.appointment_delete', kwargs={'appointment_id': appointment.id}))
+
+        self.assertEqual(1, Appointment.objects.all().count())
diff --git a/smash/web/urls.py b/smash/web/urls.py
index 984f6ca1e978d64565f016b2baa8e6df94d3d0ec..6376c8d2a6300e3a9beaea96528ec2e919ec5d5d 100644
--- a/smash/web/urls.py
+++ b/smash/web/urls.py
@@ -45,6 +45,8 @@ urlpatterns = [
     url(r'^appointments/add/(?P<visit_id>\d+)$', views.appointment.appointment_add, name='web.views.appointment_add'),
     url(r'^appointments/add/general$', views.appointment.appointment_add, name='web.views.appointment_add_general'),
     url(r'^appointments/edit/(?P<id>\d+)$', views.appointment.appointment_edit, name='web.views.appointment_edit'),
+    url(r'^appointments/delete/(?P<appointment_id>\d+)$', views.appointment.appointment_delete,
+        name='web.views.appointment_delete'),
 
     ####################
     #      VISITS      #
diff --git a/smash/web/views/appointment.py b/smash/web/views/appointment.py
index 9f4c8a129cdfdf4aef5aeef440750f883518ccba..2ec6de2acb48e7232dfe72f5afe13d2d3bf59745 100644
--- a/smash/web/views/appointment.py
+++ b/smash/web/views/appointment.py
@@ -1,6 +1,7 @@
 # coding=utf-8
 import logging
 import re
+
 from django.contrib import messages
 from django.core.exceptions import ValidationError
 from django.shortcuts import get_object_or_404, redirect
@@ -125,3 +126,14 @@ def appointment_edit(request, id):
         'contact_attempts': contact_attempts,
         'mail_templates': MailTemplate.get_appointment_mail_templates(languages)
     })
+
+
+def appointment_delete(request, appointment_id):
+    appointment = get_object_or_404(Appointment, id=appointment_id)
+    if appointment.visit is not None or appointment.status != Appointment.APPOINTMENT_STATUS_SCHEDULED:
+        messages.error(request, "Appointment cannot be deleted")
+        return redirect('web.views.appointment_edit', id=appointment_id)
+    else:
+        appointment.delete()
+        messages.success(request, "Appointment deleted successfully")
+        return redirect('web.views.appointments')