Handle refunds
Policy-driven automated refunds plus manual overrides.
Handle refunds
Good Times automates refund math based on the policy you set, but you stay in control of the final click.
Set your policy
On the event's Overview page, under Refund Policy, add tiers in days-before-event order:
- 60 days before: 100%
- 30 days before: 75%
- 14 days before: 50%
- 7 days before: 25%
These are just defaults — write whatever matches what you tell players publicly. Make sure the same tiers appear on your FAQ page.
Process a refund
From Registrants, open a registrant and click Refund. The calculator picks the correct tier based on today's date and the event's start, and shows the exact dollar amount. Review and confirm. The API:
- Calls Stripe's refund endpoint for that payment intent
- Decrements the pricing tier's "sold" counter so a new signup can take the freed spot
- Marks the registration as refunded (the player keeps their record but no longer shows on rosters)
- Emails the player a refund confirmation with the policy citation
Captain refunds
If a captain asks for a refund, the system blocks it until another paid player on the team is promoted to captain — otherwise the team is orphaned and the access code leaks. The UI walks you through the transfer.
Manual overrides
Sometimes policy doesn't fit the situation (injury, weather cancellation). Click Override refund amount in the same dialog. You can refund any amount up to the original payment. Good Times logs the override with your user ID so there's an audit trail.
Full-event cancellation
If you cancel the entire event, open Finance -> Bulk refund and choose "All paid registrations". You can set the refund percentage once and process everyone at once. This is destructive — it's behind an explicit confirmation modal.
What players see
The refund confirmation email includes the policy tier that was applied, the amount refunded, and a support email. Stripe returns money to the player's card in 5-10 business days.
Was this helpful?
