Managing Refunds and Disputes

Modified on Thu, 14 May at 9:00 PM


When a student needs a refund — due to a cancellation, scheduling conflict, or dissatisfaction — CPR Enroll+ gives you tools to process refunds directly within the platform for most scenarios. For complex or unusual cases, refunds can also be issued through your connected Stripe dashboard. This article covers both paths, and explains how to handle payment disputes (chargebacks).

ℹ  Prerequisite

You must have a Stripe account connected in Settings > Payment Gateway to accept or refund online payments. See Setup & Connecting Your Stripe Account if you have not done this yet.


Step 1 — Locate the Transaction in CPR Enroll+

  1. From the sidebar, go to Payments > Transactions.

  2. Use the Type filter to select the relevant payment category: Enrollments, Store Products, Invoices, Add-Ons, or Reschedules.

  3. Find the transaction by student name, email, or date. Note the Payment ID and amount.



Step 2 — Process the Refund in CPR Enroll+

For enrollment-related refunds, CPR Enroll+ provides a refund action directly on the transaction or enrollment record:

  1. In Payments > Transactions, click the  menu on the relevant transaction.

  2. Select Refund (if available for the transaction type).

  3. Choose Full Refund or enter a custom Partial Refund amount.

  4. Add an internal note explaining the reason for the refund.

  5. Click Confirm. The refund is submitted to Stripe and the student will receive the funds within 5–10 business days depending on their bank.

  6. The transaction record in CPR Enroll+ will update to show the refunded status.

✔  Also update the enrollment record

After issuing a refund, update the enrollment record manually if needed — for example, mark the student as Dropped to free the class seat and record their departure in Reports > Dropped Students.


Step 3 — Refunding Through Stripe (Last Resort)

If the refund action is not available directly in CPR Enroll+ for a specific transaction type (e.g., a legacy payment or an unusual edge case), you can issue the refund through Stripe directly:

  1. Log in to your Stripe account at dashboard.stripe.com.

  2. Go to Payments > Payments and search for the charge by the student's email or the transaction amount.

  3. Click the payment to open the detail view, then click Refund.

  4. Choose Full Refund or enter a partial amount, select a reason, and click Refund.

  5. Return to CPR Enroll+ and manually update the enrollment or transaction record to reflect the refund.

⚠  Stripe refunds do not auto-sync

Refunds processed directly in Stripe do not automatically update CPR Enroll+ records. Always manually update the enrollment or transaction record in CPR Enroll+ after issuing a Stripe refund to keep your records accurate.


Step 4 — Handling a Dispute (Chargeback)

A dispute occurs when a student contacts their bank to reverse a charge. Stripe notifies you by email when a dispute is filed. You typically have 7–21 days to respond with evidence.

  1. Log in to your Stripe dashboard and go to Payments > Disputes. Find the dispute and review the details.

  2. Gather evidence from CPR Enroll+:

  • Reports > Communication History — export the enrollment confirmation email sent to the student as proof of registration

  • Enrollments list — export the student's enrollment record showing their registration date and payment amount

  • Settings > Site Configuration — screenshot your Refund Policy as evidence of your stated terms

  1. Submit all evidence through the Stripe dispute interface before the deadline.

✔  Prevention is the best cure

Always ensure your Refund Policy URL is set in Settings > Site Configuration and your Class Terms & Conditions are configured in the same section. Students who acknowledge terms at checkout provide much stronger grounds for winning a dispute.

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article