Addagio supports both customer-initiated and vendor-initiated cancellations. Here is how each works.
Customer-initiated cancellation
Customers can cancel their own bookings in two ways:
From the My Bookings page (addagio.io/my-bookings):
Sign in with the email used to book
Find the booking in the "Upcoming" section
Click "Cancel"
Optionally enter a reason
Click "Confirm cancel"
Via the API (POST /api/booking/cancel):
Requires the booking reference code and the customer's email address
No login is needed -- the reference code + email combination serves as verification
Only PENDING and CONFIRMED bookings can be cancelled
Already cancelled or completed bookings cannot be cancelled again
After cancellation:
The booking status is set to CANCELLED
A cancellation timestamp and reason are recorded
Both customer and vendor receive cancellation emails and SMS notifications
Vendor-initiated cancellation
Vendors can cancel bookings from the dashboard:
Go to Dashboard > Bookings
Click the booking to open details
Click "Cancel"
The booking is moved to CANCELLED status
When a vendor cancels:
The customer receives an email: "Booking [REF-CODE] cancelled -- [Business Name]"
The vendor receives a confirmation email
Both are sent via the message queue system
Refund process
When online payment was collected via Stripe and a booking is cancelled, refunds are handled through Stripe:
The cancellation is recorded in the Addagio system
Refunds are processed through Stripe's refund API
The refund appears in the customer's account within 5-10 business days
Stripe does not refund their processing fee (~2.9% + $0.30)
For pay-at-venue bookings (where no online payment was collected), there is nothing to refund. The cancellation simply frees up the time slot.
Rescheduling instead of cancelling
Both customers and vendors can reschedule instead of cancelling:
Customer reschedule (via /api/booking/reschedule):
Requires reference code, customer email, new date (YYYY-MM-DD), and new time (HH:MM)
The old date is recorded in the booking notes for history
Both parties receive reschedule notification emails and SMS
The booking status remains unchanged (stays CONFIRMED)
Vendor reschedule (from Dashboard > Bookings):
Click the booking, then click "Reschedule"
Select a new date and time
The system checks for conflicts with other bookings for the same staff
The customer receives a reschedule notification email
What you cannot cancel
Bookings that are already CANCELLED
Bookings that are already COMPLETED
Rescheduling to a past date is rejected