Stripe Connect Setup

Cancellations, Refunds & Unassigning Services

How cancellations work in BuildStability:

We treat cancellations as a fairness promise, not a loophole. Clients keep what they have already paid for, and trainers get a clear Undo path if they change their mind.

Unassigning a Subscription Service (Membership)

When you unassign a recurring subscription (membership / monthly / weekly):

✅ **What happens:**

- Cancellation is scheduled at the end of the current billing period. Stripe sets `cancel_at_period_end: true`. - The client keeps full access until the period ends. They can still book sessions, use credits, and open the client portal as normal. - No further charges will be made on their card. - The assignment status becomes "Ending [date]" (amber badge) in your client list and the Assign Service modal. - An automatic email confirmation is sent to the trainer's SaaS subscription owner when their own Build Stability subscription is cancelled.

â†Šī¸ **Changed your mind? Undo the cancellation.**

If you unassigned by mistake, or the client decided to stay: 1. Open the Assign Service modal on the client's row 2. Find the service with the amber "Ending [date]" badge 3. Click the "Undo cancel" button 4. The subscription is restored to normal billing. One click, no charge, no re-checkout.

Undo works any time before the period end date. After the period ends, you will need to re-assign the service from scratch.

🔁 **Once the period ends**

- Stripe fires `customer.subscription.deleted` - The assignment status flips to "canceled" - The client loses access to that service - The trainer can assign them a new service any time

Unassigning a One-off Service (Pack or Pass)

Packs and passes are one-time purchases, so there is no billing cycle to wait for.

- The assignment is cancelled immediately when you unassign it. - No further charges (there were none scheduled anyway). - The client loses access immediately — any unused sessions in the pack are not automatically refunded. - If you want to refund unused sessions, process the refund manually in Stripe Dashboard (see below).

Refunds

The fair default

For subscriptions, cancel-at-period-end is the refund mechanism — the client keeps what they already paid for, and no new charges happen. This is the main reason we do not offer automatic prorated refunds: the client has not lost access yet.

For packs and passes, there is no period to wait for, so if you want to give the client money back for unused sessions you need to do it manually.

You are responsible for manual refunds when needed.

BuildStability does not: - Issue prorated refunds for subscriptions (the period-end cancellation replaces this) - Refund unused pack sessions automatically - Provide a refund button in the app - Process refunds on your behalf

All manual refunds must be processed directly in your Stripe Dashboard.

How to Process a Refund

Step 1: Access Your Stripe Dashboard

1. Go to Business → Membership Plans tab in BuildStability 2. Click "Manage Account" button (opens your Stripe Dashboard - Standard account) 3. Or navigate directly: `https://dashboard.stripe.com/[YOUR_ACCOUNT_ID]/dashboard`

Step 2: Find the Payment or Subscription

1. In Stripe Dashboard, go to Payments or Subscriptions 2. Search for the client's email or subscription ID 3. Click on the specific payment or subscription

Step 3: Process the Refund

For One-Time Payments (Packs/Passes):

1. Open the payment details 2. Click "Refund" button 3. Choose Full refund or Partial refund 4. Enter refund amount (if partial) 5. Add optional reason/note 6. Confirm the refund

For Recurring Subscriptions:

1. Open the subscription details 2. Click "Refund" on the most recent invoice 3. Or go to Payments tab and refund individual charges 4. Choose refund amount (full or partial) 5. Confirm the refund

Step 4: Verify Refund

- Refund appears in Stripe Dashboard within minutes - Client receives email notification from Stripe - Refund processes to original payment method (3-10 business days)

Important Notes

Refund Timing:

- Refunds must be processed within 180 days of original payment (Stripe limitation) - Refunds go to original payment method automatically - Processing time: 3-10 business days depending on bank

Prorated Refunds:

- BuildStability does NOT calculate prorated amounts - You must manually calculate and enter prorated refund amounts in Stripe - Consider: unused days, partial billing periods, service usage

Best Practices:

- Document refund reasons in Stripe notes - Communicate with client before processing refund - Keep records of refund decisions - Process refunds promptly after unassignment

No App Integration:

- There is no refund button in BuildStability - There is no refund API endpoint - All refunds must be done in Stripe Dashboard - This is by design - you maintain full control over refunds

When to Refund

Common Scenarios:

- Client requests cancellation and refund - Service was assigned by mistake - Client is unsatisfied and requests refund - Business policy requires refund for early cancellation - Service cannot be delivered as promised

Trainer Discretion:

- Refunds are at your discretion - BuildStability does not enforce refund policies - You set your own refund terms and conditions - Communicate refund policy clearly to clients

Pro Tip: Set clear refund policies in your service descriptions and communicate them to clients before assignment. This reduces confusion and support requests.

Ready to implement these strategies?

Join thousands of trainers using BuildStability to automate engagement tracking and prevent churn.

Start Your Free Trial