Refunds and Payment Review
A customer cancels a paid appointment, or a payment arrives after the time it was meant to hold has gone to someone else. Either way you need to send money back without refunding twice or losing track of what happened. Core Bookings keeps cancelling and refunding as two separate steps, so nothing leaves your account until a manager asks for it.
Refunds go back through the provider that took the payment: Stripe, or PayPal, Polar or Paddle. FluentCart orders are refunded in FluentCart, and the appointment panel links to the order with View FluentCart order and manage refunds.
Refund a Cancelled Booking
Cancelling never refunds on its own. The refund form appears on the appointment panel once the appointment is cancelled (or in payment review) and still has an online payment to return. Only booking managers see it.
- Open the appointment from Bookings → Appointments. If it isn’t cancelled yet, open Manage appointment, choose Cancel appointment, add a reason and click Save change.
- Check Refund amount. It’s filled in with everything still refundable, and the hint beside it shows the maximum.
- Lower the amount for a partial refund, then fill in Refund reason. The reason goes into the appointment timeline.
- Click Request refund.
The background worker sends the refund, then reads it back from the provider before it marks anything. The payment badge shows Refund pending until the provider confirms, then Partially refunded or Refunded. The customer gets the Refund issued email with the total refunded so far.
What a Refund Covers
- The refundable amount is the payment taken at booking plus any remaining balance paid online, minus refunds already made.
- After a partial refund the form stays on the panel, so you can return the rest later.
- Tips added to a balance payment are kept separately and aren’t refunded with the booking.
- Payments you marked with Record offline payment have no provider payment behind them. Return those yourself.
- Gift card amounts go back to the card automatically when the booking is cancelled. See Coupons, Gift Cards and Referrals.
- With cancellation fee tiers on, the form suggests an amount that keeps your fee. See Cancellation Fees, No-show Protection, Tips and Peak Prices.
- Refunds you make in the Stripe Dashboard also update the booking, as long as your Stripe webhook sends refund events. See Connect Stripe.
- With the Taxes and invoices module on, every refund issues a numbered credit note.
Why a Booking Lands in Payment Review
Payment review is where money goes when it arrived but can’t safely confirm the booking. Core Bookings won’t double-book a time or accept the wrong amount, so it parks the booking with the status Payment review and the payment Needs review. Common causes:
- The amount or currency the provider reports doesn’t match what the booking owes.
- The customer paid after the checkout hold expired and someone else booked the time.
- The payment settled after the appointment’s start time.
These bookings show up in Needs attention on Bookings → Overview and under the Payment review filter on the Appointments screen. Webhook endpoints subscribed to payment.review_required hear about them too.
Resolve a Payment Review
Open the appointment. A notice asks you to check the provider record first, so look the payment up in your provider’s dashboard. Then pick one of two paths:
- Confirm it. In Manage appointment, choose Confirm anyway after checking payment, tick I checked the payment amount and status with the payment provider., add a reason and click Save change. The time must still be free and in the future. Every session of a recurring request is confirmed together, marked paid, and the customer gets the confirmation and reminders.
- Refund it. Use the refund form further down the panel. Once a full refund is verified, the booking closes as cancelled.
Payment Events That Need a Hand
Every provider webhook is stored and retried. An event that keeps failing moves to Needs review in the Payment event recovery list on Bookings → Settings → Operations.
- Retry event checks the payment provider again before it changes any booking.
- Dismiss unrelated refund appears only for a refund that matches no booking or session pack. Use it after you’ve checked in Stripe that the refund belongs to another product or site.
- A refund job that failed (a provider outage, for example) appears in the operations list with Retry operation. Payment and refund operations can’t be dismissed. Fix the cause and retry.
Good to Know
- Only booking managers can refund or confirm a payment review. Staff see the status, not the forms.
- If the provider’s amount or currency differs from the booking, the refund stops and asks you to settle it in the provider’s dashboard.
- The hosted demo blocks refunds, so try this flow with your provider’s test mode on your own site.