Define event cancellation policy when tickets have been sold #12

Open
opened 2026-04-27 09:47:15 +00:00 by padreug · 0 comments
Owner

Problem

Currently, event organizers can delete or cancel their events at any time. When tickets have already been sold, this creates issues:

  • Delete (DELETE /events/{id}) — removes the event and all tickets from the DB. No refunds, no record.
  • Cancel (PUT /events/{id}/cancel) — sets canceled=true and triggers refund via LNURL. Better, but still needs guardrails.

Scenarios to consider

1. Proposed event (no tickets)

  • Organizer should be able to delete freely
  • No financial impact

2. Approved event, no tickets sold

  • Organizer can delete or cancel
  • No financial impact
  • Should it return to proposed state instead of deleting?

3. Approved event, tickets sold

  • Delete should be blocked — tickets reference the event, and buyers need records
  • Cancel should trigger refunds — existing refund flow via LNURL works but needs verification
  • Should require admin approval to cancel? Or allow organizer to self-cancel with automatic refunds?
  • What if the organizer's wallet doesn't have enough balance for refunds?

4. Escrow mode (future, see #10)

  • Cancellation is simpler — admin holds funds, refunds from escrow wallet
  • Organizer never had the funds, so balance issues don't apply

Proposed rules

Event state Tickets sold Delete allowed? Cancel allowed? Refund?
proposed 0 Yes (organizer) N/A No
approved 0 Yes (organizer) Yes (organizer) No
approved >0 No Yes (organizer or admin) Auto-refund
canceled any No N/A (already canceled) Already processed

Implementation

  • Block DELETE /events/{id} if event.sold > 0
  • Verify refund flow works end-to-end when canceling events with sold tickets
  • Consider adding a confirmation step in the UI showing how many tickets will be refunded
  • Consider notifying ticket holders (future: via Nostr DM per #8)
  • #10 — Escrow payment mode (simplifies cancellation refunds)
  • #8 — Nostr DM ticket purchase (could be used for cancellation notifications)
## Problem Currently, event organizers can delete or cancel their events at any time. When tickets have already been sold, this creates issues: - **Delete** (`DELETE /events/{id}`) — removes the event and all tickets from the DB. No refunds, no record. - **Cancel** (`PUT /events/{id}/cancel`) — sets `canceled=true` and triggers refund via LNURL. Better, but still needs guardrails. ## Scenarios to consider ### 1. Proposed event (no tickets) - Organizer should be able to delete freely - No financial impact ### 2. Approved event, no tickets sold - Organizer can delete or cancel - No financial impact - Should it return to proposed state instead of deleting? ### 3. Approved event, tickets sold - **Delete should be blocked** — tickets reference the event, and buyers need records - **Cancel should trigger refunds** — existing refund flow via LNURL works but needs verification - Should require admin approval to cancel? Or allow organizer to self-cancel with automatic refunds? - What if the organizer's wallet doesn't have enough balance for refunds? ### 4. Escrow mode (future, see #10) - Cancellation is simpler — admin holds funds, refunds from escrow wallet - Organizer never had the funds, so balance issues don't apply ## Proposed rules | Event state | Tickets sold | Delete allowed? | Cancel allowed? | Refund? | |-------------|-------------|-----------------|-----------------|---------| | proposed | 0 | Yes (organizer) | N/A | No | | approved | 0 | Yes (organizer) | Yes (organizer) | No | | approved | >0 | No | Yes (organizer or admin) | Auto-refund | | canceled | any | No | N/A (already canceled) | Already processed | ## Implementation - Block `DELETE /events/{id}` if `event.sold > 0` - Verify refund flow works end-to-end when canceling events with sold tickets - Consider adding a confirmation step in the UI showing how many tickets will be refunded - Consider notifying ticket holders (future: via Nostr DM per #8) ## Related - #10 — Escrow payment mode (simplifies cancellation refunds) - #8 — Nostr DM ticket purchase (could be used for cancellation notifications)
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
aiolabs/events#12
No description provided.