Payments

Refunds and Cancellations


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
  • refundcancelmoneyreturn