Skip to content

Refunds & Cancellation

Refunds & Cancellation

Things come up and buyers need refunds. Tickets Please supports buyer-initiated refund requests, admin-initiated refunds, and automatic bulk refunds when events are cancelled. Refunds process through the original payment gateway and update attendee statuses and capacity automatically. This page covers the full refund lifecycle from request to resolution.

Buyer-Initiated Refunds

Buyers request refunds from the My Tickets page. The Request Refund link appears next to each eligible ticket.

Eligibility Rules

A ticket is eligible for a refund when all three conditions are true:

  1. Status is completed — tickets that are already refunded, cancelled, or pending are not eligible.
  2. Event has not passed — once the event end date is in the past, refunds are no longer available through the self-service form.
  3. Within the refund window — the purchase must have been made within the last 30 days (the default refund window, counted from the date of purchase).

If any of these conditions is not met, the Request Refund link does not appear on the buyer’s ticket.

The Refund Request Form

When the buyer clicks Request Refund, they see a form with two fields:

  • Reason (required) — a free-text textarea where the buyer explains why they want a refund.
  • Amount — pre-filled with the ticket price. The buyer can modify this for a partial refund request.

Submitting the form creates a tec_refund_request post in WordPress with a status of pending. The buyer sees a confirmation that their request has been submitted. An email notification is sent to the site admin.

Refund Request Data

Each refund request stores this metadata:

Meta KeyDescription
_refund_attendee_idThe attendee record being refunded
_refund_event_idThe associated event
_refund_ticket_idThe ticket type
_refund_order_idThe original order
_refund_amountThe requested refund amount
_refund_reasonThe buyer’s stated reason
_refund_statusCurrent status: pending, approved, denied, or processed
_refund_admin_notesNotes added by the admin during review
_refund_buyer_emailThe buyer’s email address
_refund_buyer_nameThe buyer’s name

Admin-Initiated Refunds

Admins can issue refunds directly without waiting for a buyer request. There are two ways to do this:

Single Refund

  1. Go to the attendee management screen for the event (under Events > Attendees or from the event’s Attendees meta box).
  2. Find the attendee in the list.
  3. Click the Refund row action.
  4. Review the refund details and click Process Refund.

Bulk Refund

  1. On the attendee management screen, select multiple attendees using the checkboxes.
  2. Choose Refund from the Bulk Actions dropdown.
  3. Click Apply.
  4. Confirm the bulk refund on the next screen.

Both methods skip the pending/approval workflow and process the refund immediately.

Approving or Denying Requests

When a buyer submits a refund request, it appears in the admin’s refund queue:

  1. Go to the refund request list (accessible from the admin menu or via the notification email link).
  2. Click Edit on the pending request.
  3. Review the buyer’s reason, the ticket details, and the requested amount.
  4. Add any Admin Notes for internal record-keeping.
  5. Click Approve or Deny.

On Approval

When you approve a refund:

  1. Tickets Please calls process_refund() on the original payment gateway (Stripe, PayPal, or WooCommerce) to return funds to the buyer.
  2. The attendee status changes to refunded.
  3. A refund_confirmation email is sent to the buyer confirming the refund.
  4. The refund request status updates to processed.

On Denial

When you deny a refund:

  1. No payment processing occurs.
  2. The refund request status updates to denied.
  3. The buyer receives a notification that their request was denied.
  4. The attendee status remains unchanged.

Partial Refunds

Both buyer-initiated and admin-initiated refunds support partial amounts. The refund amount can be any value up to the original ticket price. Partial refunds process through the gateway API just like full refunds. The attendee status updates to refunded regardless of whether the refund is full or partial.

Capacity Restock

When a refund is processed, you have the option to restore the ticket’s available capacity. The restock toggle is available on the admin refund screen. When enabled, the ticket’s capacity increases by the number of refunded attendees, making those spots available for new purchases.

If you are issuing a courtesy refund but do not want to release the spot (for example, if the event is nearly full and you are holding the capacity), leave the restock toggle off.

Automatic Refunds on Event Cancellation

When an event is cancelled, Tickets Please can automatically refund all completed attendees:

  1. All completed attendees for the event are identified.
  2. A refund is processed through the original payment gateway for each attendee.
  3. All attendee statuses update to refunded.
  4. All ticket capacity is restored.

This bulk operation runs automatically when the event status triggers cancellation. It handles dozens or hundreds of refunds in a single operation.

Refund Window Configuration

The default refund window is 30 days after the date of purchase. Buyers can request refunds for any completed ticket purchased within this window, as long as the event has not yet passed.

The refund window is configurable. To change the default window, update the setting under Events > Settings > Purchasing, or use a filter for programmatic control.

Common Questions

How long does a refund take to reach the buyer? The refund is processed immediately on your end. How long it takes to appear in the buyer’s account depends on their bank or payment provider. Stripe refunds typically appear in 5-10 business days. PayPal refunds are usually faster.

Can buyers request refunds after the event? No. Once the event end date has passed, the self-service refund form is not available. Admins can still issue refunds manually from the attendee management screen.

What happens to check-in data when a ticket is refunded? The attendee record is preserved with its check-in data intact, but the status changes to refunded. The attendee will not be eligible for check-in at the event.

Can I set different refund windows for different events? The refund window is a global setting. For per-event control, you can use the refund eligibility filter to implement custom logic based on event ID.

How do offline payment refunds work? For tickets paid through the offline gateway, the admin marks the refund as processed in Tickets Please, but the actual fund transfer must be handled separately (cash return, bank transfer, etc.). Tickets Please does not process offline refunds electronically.

Can a denied refund request be reconsidered? The buyer cannot resubmit through the self-service form once their request is denied. However, an admin can manually process a refund for the same attendee at any time from the attendee management screen.

What emails are sent during the refund process? Three possible emails: (1) admin notification when a buyer submits a request, (2) buyer confirmation when a refund is approved and processed, (3) buyer notification when a refund is denied.

Next Steps

  • My Tickets — where buyers view their tickets and initiate refund requests
  • Payment Gateways — how refunds route through Stripe, PayPal, and offline gateways
  • Guest Checkout — refund options for buyers who checked out without an account