MVP policy for cancelling, refunding, and disputing paid court bookings.

Paid Court Booking Cancellation and Refund Policy

This page documents the first supported post-payment flow for direct court bookings paid through Stripe.

MVP decisions

  • Users can self-cancel their own paid court bookings.
  • Location organisers and admins can also cancel paid bookings that they are allowed to manage.
  • Self-service cancellation is only available while the booking start time is still more than 24 hours away.
  • Eligible paid cancellations trigger an automatic full refund in Stripe.
  • The MVP refunds the full booking amount, including any Courtex application fee that was retained on the original payment.
  • Partial refunds are not a supported self-service path. If a partial refund is created manually in Stripe, Courtex records the refunded amount for admin visibility and follow-up.
  • Stripe disputes do not automatically cancel the booking. Courtex marks the payment as disputed for manual review.

Local state rules

  • Cancelling a booking without a linked payment only marks the booking as CANCELLED.
  • Cancelling a booking with a linked pending court-booking payment also moves the payment to cancelled.
  • Cancelling a booking with a linked paid court-booking payment before the cutoff:
  • creates a Stripe refund using the stored PaymentIntent,
  • records the Stripe refund ID locally,
  • marks the payment as refunded, and
  • marks the booking as CANCELLED.
  • Attempting to cancel a paid booking inside the 24-hour cutoff is blocked.
  • Disputed payments are blocked from self-service cancellation and require manual admin/support review.

Webhook scope in this MVP

  • checkout.session.completed: marks the court-booking payment as paid, stores the PaymentIntent ID, and confirms the booking.
  • charge.refunded: syncs Stripe refund data back onto the payment and cancels the booking when the refund is full.
  • charge.dispute.created, charge.dispute.updated, charge.dispute.closed: store dispute state on the payment for admin visibility.