Refunding an order

Available in:Pro

You can give a buyer their money back from the Orders screen. Refund the whole order or only part of it, and choose which tickets to cancel: their seats go back on sale.

The money goes back through Stripe, to the payment method the buyer used.

Refunds from the Orders screen come with HappenBoard Pro. See what Pro adds.

Before you start

  • You need the permission to refund orders. Administrators have it, Editors do not. See Pro roles and permissions.
  • The order was paid with Stripe, and your Stripe secret key is saved in HappenBoard → Settings → Stripe. See setting up Stripe.
  • An order placed through WooCommerce is refunded in WooCommerce (see below).

Refund an order

  1. Go to HappenBoard → Orders and find the order. The Orders dashboard explains the search and the tabs.
  2. Open the row’s actions menu and choose Refund order. You can also open the order with View order and click Refund….
  3. In the Refund this order window, tick the tickets you want to cancel. Each line reads “Cancel [ticket name] and release its seats”.
  4. Check the Amount to refund. It starts at what the ticked tickets have left, or at everything left on the order when nothing is ticked.
  5. Change the amount if you need to: lower it to keep a cancellation fee, or raise it up to what is left on the order.
  6. Click the red button. It says what it will do, for example “Refund €40.00 and release 2 seats”, or “Refund €10.00” when no ticket is cancelled.

A message confirms the refund, and the order shows its new Refunded and Left to refund amounts straight away.

The refund goes through Stripe immediately and moves real money. It cannot be undone from your site. Orders are refunded one at a time.

What the refund changes

  • The tickets you ticked are cancelled. Their seats go back to the ticket type, so other people can buy them.
  • A ticket whose price is refunded in full is cancelled too, even if you did not tick it.
  • Every other ticket keeps its seats. A goodwill refund of a few euros cancels nobody.
  • The buyer receives the usual cancellation email for each ticket you cancel.
  • The refund appears on the attendee’s activity timeline, and in the Refunded figure of the Orders screen.

Each line of an order is one ticket type with all its seats. You cannot cancel one seat out of a three-seat line from here: tick the line to cancel all three, or refund an amount and leave the seats as they are.

Refunds made in the Stripe dashboard

You can also refund a payment directly in your Stripe dashboard. When Stripe tells your site about it, HappenBoard records it on the order:

  • A full refund cancels every ticket of the order and releases its seats.
  • A partial refund is shared across the tickets of the order. Only a ticket it pays back in full is cancelled; the others keep their seats.

Your site learns about these refunds through the Stripe webhook, the address Stripe calls to report payments. If a dashboard refund does not show on the order, check that webhook first.

When the buyer cancelled first

A buyer who cancels their own place is not refunded by doing so. The order shows Cancelled, but the money is still on it, so Refund order stays available. In the refund form, those tickets read “Refund [ticket name] (already cancelled)”.

WooCommerce orders

Refund an order placed through WooCommerce in WooCommerce, not on the Orders screen. Setting the order to Refunded or Cancelled cancels its tickets and releases the seats. A partial refund made in WooCommerce is recorded but cancels nobody. The WooCommerce guide has the details.

If something goes wrong

  • No Refund order action: you do not have the refund permission, the order has nothing left to refund, or its tickets were free.
  • “Stripe is not configured.”: save your Stripe secret key in HappenBoard → Settings → Stripe.
  • The button stays grey and the amount field says “That is more than is left”: lower the amount.
  • “Another refund of this order is being recorded. Try again in a moment.”: wait a few seconds, then click again.
  • “Refund of … issued; Stripe is still processing it.”: nothing to do. The refund is recorded, and Stripe finishes it on its side.
  • Stripe refused the refund: the message says why, for example that the secret key was not accepted. For other errors, the details are in your site’s PHP error log.

Next steps