Skip to main content
Cancellations & Credits

Cancellation Policy

How class and booking cancellation policies work, and when refunds vs credits apply.

Overview

Cancellation policies on AllSquads are configurable per class. Each coach or club sets their own policy when creating a class. The policy determines what refund (if any) a player receives when they cancel a booking.


Policy Components

Each cancellation policy has three components:

1. Time threshold

The minimum notice (in hours before the session) a player must give to receive the configured refund type. Common thresholds:

  • 1 hour
  • 12 hours
  • 24 hours (most common)
  • 48 hours
  • 72 hours

2. Refund type

What refund the player receives if they cancel WITH AT LEAST the threshold's notice (i.e. outside the last-threshold-hours window before the session):

  • Full refund: Player receives 100% of the booking value as credits
  • Partial refund: Player receives a percentage of the booking value as credits (e.g., 50%)
  • No refund: Player receives no refund, regardless of notice given

3. Inside the threshold (late cancellation)

If the player cancels with LESS notice than the threshold (i.e. inside the last-threshold-hours window before the session), they always receive NO credit — regardless of the refund type setting. Only a cancellation made with at least the threshold hours' notice receives the configured refund type above.

Your club keeps the money for a late cancellation, whether the player cancels one place or all of them: it is included in your weekly payout like any other paid booking. A booking that was never paid adds nothing.


How It Works — Examples

Example 1: 24-hour full refund policy

  • Policy: Full refund if cancelled with at least 24 hours' notice
  • Player cancels 48 hours before: Full credit refund (48h ≥ 24h threshold)
  • Player cancels 12 hours before: No refund (12h < 24h threshold — inside the window)

Example 2: 24-hour partial refund policy (50%)

  • Policy: 50% refund if cancelled with at least 24 hours' notice
  • Player cancels 48 hours before: 50% credit refund (48h ≥ 24h threshold — the configured type applies)
  • Player cancels 12 hours before: No refund (12h < 24h threshold — inside the window, no credit regardless of the configured type)

Example 3: 24-hour no refund policy

  • Policy: No refund, any time
  • Player cancels 48 hours before: No refund
  • Player cancels 12 hours before: No refund

Cancellation Preview

Before confirming a cancellation, players are shown a cancellation preview that displays:

  • The class name, date, and time
  • The refund outcome (credit amount or no refund)
  • Credit expiry date (if applicable)

Players must confirm before the cancellation is processed.


Refund Mechanics

All refunds are issued as AllSquads credits, not as Stripe reversals. Credits are:

  • Issued immediately upon cancellation confirmation
  • Club-scoped (can only be used for bookings with the same club)
  • Subject to an expiry date
  • Exclusive of the booking platform fee — the fee is non-refundable in all cases. A credit is based on the class price: paying $51.50 ($50 class + $1.50 booking fee) and receiving a full credit returns $50.00. Cash/card refunds happen only manually, by exception, via support.

Multi-Person Bookings — Per-Attendee Pricing & Cancellation

A single "Book" action can cover several attendees at once — yourself plus saved children, or yourself plus typed adult guests (e.g. bringing friends to a social session). Each attendee is priced and can be cancelled individually:

  • Pricing. Each attendee's price is resolved for THEM specifically — a saved child checks that child's (or the account's) membership per the club's membership model; a typed adult guest is matched, by name, to an active club member if one exists, otherwise pays the standard rate. A guest never inherits the booker's OWN membership rate just because they were added to the booker's booking — the club always sees a guest priced standard unless that guest is independently a recognised member.
  • Cancelling one attendee. The player (for their own booking) or a coach/club can cancel a single attendee out of a multi-person booking without affecting the others — the remaining attendees keep their spot, unaffected. The credit issued for that ONE attendee reflects what THEY actually paid — a booking with a mix of member and guest pricing does not average everyone's price together when crediting one cancelled seat.
  • Group discounts ("book 2+ people, save X%"). If your booking got the class's group discount and you cancel some of the people on it while others stay, the people who stay pay the price they still qualify for. With a "2+ people" discount, cancelling one of two means the one who stays pays full price, so the credit for the person you cancel is reduced by the discount the other person loses (never below $0). Your club's cancellation percentage then applies to that reduced amount. Example: two people at $100 with 10% off paid $180; cancel one and the credit is $80, not $90. The cancellation preview shows the reduced credit and why before you confirm, and the booking details then show the new price of the person who stays. If enough people stay to keep the same discount, nothing changes. A cancellation by the club or coach, or cancelling the whole booking, never changes anyone's price.
  • Displaying what each attendee paid. Every surface that lists the attendees on a booking shows each one's own charged amount next to their name whenever it's known (e.g. "Eve Collins — $8.00"):
  • the booking confirmation page after checkout,
  • My Classes → View details (the booking detail pop-up),
  • the coach/club roster and its booking detail panel,
  • the booking confirmation email.

The whole booking's total is shown once, clearly attributed to the booking ("Amount paid (whole booking)" when more than one person is on it) — never repeated against every attendee's name.

  • On a multi-week or multi-session booking, each attendee's figure is what THEY were charged for the WHOLE booking, not for one session. Two children in an 8-week term at $12.50 a session each show "$100.00", and the two figures add back up to the $200.00 booking total.
  • Bookings made before 2026-07-31 don't have a stored per-attendee amount. Where that split is genuinely unknown and more than one person shares the booking, no per-attendee figure is shown for those attendees ("Amount not itemised" rather than a guess) — the booking's real total is still shown once. We deliberately do NOT divide the total by the number of attendees: an even split is a guess, and on a booking mixing a member seat with standard-rate guest seats it's a wrong one. If a legacy booking has only ONE attendee, the booking total unambiguously IS that attendee's own charge, so it still displays normally.
  • One more case shows no per-attendee figure: a term-class roster row covering adult guests who aren't linked to saved profiles can't always tell two guests on the same booking apart, so it shows the booking-level wording instead of attributing one number to one person. Saved children (and any booking made from 2026-07-31 onward) are unaffected.
  • Cancelling one seat on an older, unsplit multi-person booking still splits the CREDIT evenly across attendees, same as before — only the DISPLAY of what was originally charged is affected by the missing split, not the cancel-credit math.

Session Cancellations by Club

What happens when a coach or club cancels a session depends on the class type (2026-07-09):

  • Term classes: no automatic refund by default. The coach picks the outcome at cancel time — No credit, Pro-rata credit (based on sessions remaining/total in the term), or Full credit — issued as a credit or a make-up entitlement depending on the class's configured refund mode (see Make-up Sessions below). A pro-rata or full credit covers only the players still booked on that session, each at the price they paid. Two children on a $240 term of two sessions: if one child's place in the term was already cancelled and the club then cancels session 2 at full credit, the child still booked is credited $120.
  • Every other class type (group, private, social, one-off, camp, casual recurring): every paid player gets a full credit of the price they paid for the cancelled session, automatically. That includes cancelling a single camp day or the entire camp (a full credit for every cancelled day), and a booking paid through a subscription on any class that is not a term class. There is no "No credit / Pro-rata / Full" choice for these — that choice is for term classes only. The class's own cancellation policy (window, refund type and percentage) does not apply when the coach or club cancels — it only decides what a player gets when the player cancels. The booking fee is not refunded. A complimentary booking, a guest booking (a player with no AllSquads account) and a cash booking the club does not cover get no credit, because nothing was paid through AllSquads; a cash booking with the full online experience is credited like a card booking, funded by the club. The cancel panel lists how many players get a credit and how many get none before you confirm.
  • A drop-in on a term class is one paid session, not a term enrolment: when the coach or club cancels that session, the drop-in player gets a full credit of the drop-in price they paid, automatically. The coach's No credit / Pro-rata / Full choice applies to the term-enrolled players only.

In both cases:

  • Players are notified immediately via in-app notification and email whenever a credit or make-up is actually issued
  • The cancellation is logged in the booking audit trail

Auto-credit vs manual credit

  • Coach cancels a session on a TERM class → no automatic refund; the coach explicitly chooses none / pro-rata / full at cancel time. A drop-in player on that session gets a full credit of the drop-in price.
  • Coach or club cancels a session, a booking or a player's place on any other class type → a full credit of the price paid for what was cancelled, whatever the class's cancellation policy says. A club that has configured "no refund" or a 50% refund still credits the full price when the club is the one cancelling, and it makes no difference whether the club cancels a month ahead or an hour before — the policy exists to price a player's own cancellation, and this cancellation was not theirs. The same applies to a club cancelling a competition or removing a paid entrant. The club is not paid for a cancelled place.
  • Club moves a class date and the player declines the new date → treated as a club cancellation: a full credit of the price paid, whatever the cancellation policy says (term classes keep their own rules).
  • Coach or club cancels a recurring court-hire series → the court price for every week the player has already been charged for and not yet played is credited in full. The booking fee on those weeks is not credited. The weekly charges stop; nothing is refunded to the card.
  • Player cancels with at least the policy's threshold notice (outside the window) → auto-credit per the class's cancellation policy (full / partial per the configured refund type). Always.
  • Player cancels with less than the policy's threshold notice (inside the window — a late cancellation) → no auto-credit. The coach may issue a manual credit from the Bookings tab if they choose to make an exception. This is the only non-automatic path.

Term Class Cancellations

Player self-cancellation of a term enrolment is governed by five rules. Coach-side cancellation (the calendar drawer / session-page cancel flows) is unchanged.

1. Before the term starts (any payment type)

Every term class has a single term cancellation policy — a notice period in days set in the wizard's CANCELLATION POLICIES section (annual_subscription_notice_days, defaults to 28). The same field applies regardless of how the player pays (upfront, weekly instalment, or annual subscription):

  • Cancelling on or before the notice-period cutoff (N days before the term start date, counted in the club's own calendar days) → full credit
  • Cancelling inside the notice window but still before the term starts → cancellation is still allowed, but $0 credit — the player sees an explicit "no refund" confirmation before it executes
  • A weekly-instalment plan cancelled pre-start is cancelled immediately in Stripe with no further invoice, and follows the same notice period: outside it, the instalments already paid come back as a credit (or a make-up, if the class issues make-ups) for the class price only — the booking fee is not refunded; inside it, no credit. Checkout states the class's own notice period
  • If the club has already cancelled one of the term's sessions and credited it, a later full-credit cancel credits what is left of that player's term, not the whole term again. Two children on a $240 term of two sessions: the club cancels session 1 (a $120 credit for each child), then cancelling one child credits $120.

2. Mid-term cancellation — split by payment type

Once the term has started, the rule depends on how the player paid:

  • Upfront (paid the full term in one payment): the player MAY still cancel and vacate their spot — but with no refund. An explicit confirmation step is shown before the cancellation executes.
  • Weekly-instalment subscription: the player cannot self-cancel mid-term — weekly payments continue until the term ends. They must contact their coach, who can manually cancel and choose whether to issue a credit at their discretion. When the coach or club cancels the whole booking, the weekly payments stop at once: no further weekly payment is taken.

3. Annual (multi-term) commitment

A player on an annual subscription (committed across multiple terms via a Stripe Subscription Schedule) cannot self-cancel at all — not mid-term, not between terms, not even before the very first term starts. Cancellation is coach/club-only, via the manual override path.

4. Rolling term-at-a-time enrolment (auto-renew)

Some term classes auto-enrol a player into the next term by default (a club setting, auto_renew_default_enabled). Continuing is the default — to opt OUT of the next term, the player must cancel before that class's configured notice-period cutoff (annual_subscription_notice_days, the SAME field that governs rule 1's whole-term pre-start cancel, default 28 days before the next term starts). After the cutoff, the next term's charge is already in flight and cannot be self-cancelled. (2026-07-19: a separate, unsynced auto_renew_opt_out_cutoff_days field was previously enforced here instead — retired; the DB column still exists but is no longer read.)

5. Single-session cancel (including session 1)

A player may cancel just ONE session of their term enrolment — including the very first session — independent of the rules above (allowed mid-term, pre-start, any payment type). Credit is per the class's per-session cancellation policy (the hourly threshold/refund-type/refund-percentage control, same as a drop-in booking) — not the term's own notice-period rule. Cancelling one session does not affect the rest of the term enrolment or its billing.

Date or time change by coach

If the coach changes the date or time of a recurring class or term class:

  • All enrolled players are notified
  • Players are given the option to cancel for a full credit refund within a response window
  • Players who do not respond are assumed to accept the change

Holiday exclusions on term classes

Term classes may have specific dates excluded (e.g., public holidays). Excluded dates are shown on the class detail page. Players enrolled in the term are not charged for excluded sessions.


Casual Recurring Subscriptions

Casual recurring weekly subscriptions are open-ended weekly (or fortnightly) memberships on a non-term class. The class has schedule_type = recurring, subscription_enabled = true, and annual_subscription_enabled = false. Distinct from term-class instalments (which run for a fixed term) and annual subscriptions (which commit for the full year).

Player self-cancellation

A player can request to cancel a casual recurring subscription at any time. The class has a configured cancellation notice period in days (subscription_notice_period_days, set in the wizard, default 7). On cancellation:

  • The subscription continues until the later of (a) the configured notice period from the cancellation request, or (b) the end of the current billing period. So a 7-day-notice sub cancelled mid-period stops at the period end if that is ≥7 days away, otherwise it runs through to 7 days after the request.
  • No partial refund is issued for time already paid.
  • After that date, no further charges are taken and future auto-bookings are cancelled.
  • The dashboard shows an "Ends [date]" indicator until that date.
  • Enforcement matches the displayed copy: the cancellation takes effect at whichever is later — the end of the notice period or the end of the current billing period.

Coach cancels a session (auto-credit)

When a coach cancels a future session that a casual recurring subscriber is booked into:

  • A credit equal to the per-session value of the cancelled session is issued automatically.
  • The credit is auto-applied to the player's next Stripe invoice as a negative line item via the invoice.upcoming webhook — implemented as stripe.invoiceItems.create({ customer, subscription, amount: -<per_session_cents>, ... }).
  • No manual redemption — the discount appears on the next renewal invoice automatically.
  • If multiple sessions are cancelled in the same billing period, each contributes a separate negative line item on the next invoice.

No skip-week (v2 launch)

Players cannot skip individual weeks while keeping the subscription active in v2. To skip, the player must cancel and re-subscribe. Skip-week support is a post-launch enhancement.

What players see

The cancellation copy is resolved dynamically from the class's configured notice period (N = subscription_notice_period_days) — it is the same string across the checkout, the subscription confirm page, the booking confirmation page + email, and the My Subscriptions dashboard:

  • Subscription confirm page / checkout / confirmation email (before/at paying): "Cancel with N days notice — your subscription continues until the later of N days from your request or the end of the current billing period (no refund of past weeks). If your coach cancels a session, credits are auto-applied to your next invoice."
  • The confirm page also surfaces the full configured sub terms: open-ended weekly commitment, the pause allowance (up to pause_max_weeks_per_year weeks/year), and the coach-cancel credit.
  • My subscriptions dashboard (after cancelling): "Ends [date]" with the cancellation date.

Membership Cancellation Policy

Recurring memberships (Dashboard > Memberships, distinct from the class/court subscriptions above) have their own cancellation policy, set per tier when a club creates or edits it. A tier has three independent settings:

  1. Notice period — how many days' notice a cancellation needs before it takes effect. Zero notice (the default) means a cancellation can take effect immediately or at the next natural point, with no waiting period.
  2. When cover ends — either:
  • At the end of the current billing period (the default): the member keeps their membership, and any benefits it grants, right up to the end of what they've already paid for. If the notice period stretches past that date, cover simply continues a little longer to cover the notice — the member is never charged for a period they aren't covered for.
  • Immediately: cover ends as soon as the notice period has passed (or straight away, if there is no notice period), even if that's before the current billing period would otherwise have ended.
  1. What happens to the unused portion — if cancelling ends cover before the current paid period is over, the tier decides what (if anything) happens to that unused time:
  • Nothing (the default): no refund or credit, matching how recurring memberships have always worked.
  • Credit: an AllSquads credit for the club, valued at the unused portion of the current billing period.
  • Refund: real money back to the original payment method, for the same unused portion. This uses AllSquads' standard refund mechanism — the same one support uses for a manual Stripe refund elsewhere.

A minimum commitment (set separately — see the Club Guide's Memberships section) still decides whether a member is allowed to cancel at all. The cancellation policy above only decides what happens once a cancellation is allowed and requested — the two settings work together, not instead of each other.

The AllSquads booking fee charged alongside a membership payment is never refunded or credited under this policy, regardless of the tier's settings — only the membership price itself.

What players see

Before joining a membership, the tier's cancellation terms are shown in plain English on the join page, stating the notice period, when cover ends, and what (if anything) is returned for unused time. The same summary is repeated on the purchase confirmation email sent once the membership payment succeeds, so a member always has it on record — worded identically to what the join page showed before they paid. A one-off (fixed-duration) membership has no cancellation policy to state, so its confirmation email omits that paragraph. Every membership confirmation states the period it covers - the date cover starts and the date it runs until - so a member always has on record what they bought, and an invitation to join a fixed-duration membership states how long it lasts alongside its price.

A tier left on every default behaves exactly as memberships always have: cancel any time (once past any minimum commitment), keep cover to the end of the period you've already paid for, no refund.


Court Hire Cancellation Policy

Court hire has a separate cancellation policy configured per club. The same policy components apply (time threshold, refund type). Court hire cancellation policies are set in Dashboard > Court Hire > Settings. The time threshold is evaluated against the court's booking slot in the club's own local time zone, not the server's.

Once a court booking's start time has passed, the player can no longer cancel it: the Cancel option disappears from the booking. If something went wrong with a booking that has already started, the player should contact the club, which can still cancel it from its own dashboard.


Private Lesson Cancellations

Cancelled by player

Standard cancellation policy applies.

Declined by coach

If a coach declines a private lesson booking:

  • Player receives a full credit refund immediately
  • Coach may optionally suggest an alternative time
  • Player is notified of the decline and any suggested alternative

Not accepted in time (auto-cancelled)

A private lesson request left pending — the coach hasn't accepted or declined it yet — only auto-cancels once the lesson itself is close. A request for a lesson weeks away simply waits for the coach:

  • The coach gets reminder alerts soon after the request is made, so it isn't left sitting
  • If the lesson is approaching (4 hours away by default) and the coach still hasn't responded, the request cancels automatically, the player is credited (same as a coach decline), and the player is notified with a prompt to rebook a different time
  • A request whose lesson date and time can't be determined is never auto-cancelled — it stays open for the club to deal with
  • Clubs can change both the reminder timing and how close to the lesson the auto-cancel happens; ask support if you need either adjusted

Configuring a Cancellation Policy

Setting a policy on a class

When creating or editing a class, the cancellation policy is configured in Step 4:

  1. Select refund type: Full, Partial, or None
  2. Enter time threshold in hours (1–72)
  3. If Partial: enter the refund percentage (1–99%)
  4. Save

Default policy

A default cancellation policy can be set at the coach or club level in Settings. New classes inherit the default policy, which can be overridden per class.

Changing a policy on a live class

Changing the cancellation policy on a live class with existing bookings only affects future bookings. Players with existing bookings retain the policy that applied at the time of booking.


Make-up Sessions (term classes only)

For term classes, the cancellation refund mode can be set to either Credits (default) or Make-up entitlement. The two modes are mutually exclusive — pick one per class.

How make-ups work

When a player cancels a term session within policy on a class set to Make-up entitlement mode:

  • A make-up entitlement is created instead of a credit
  • The entitlement value matches the cancelled session's per-seat value
  • The entitlement expires at the end of the source term (not 12 months like credits)
  • The player or coach can attach the entitlement to a different class at the same club with a per-session price equal to or less than the entitlement value

Eligible destination classes

  • Same club as the source class (cross-coach within the club is fine)
  • price_per_session_cents <= entitlement.value_cents
  • Term-active with available capacity
  • Make-up bookings count against capacity — they take a regular slot, no hidden +1

Player flow (My Bookings)

The make-up entitlement appears as an amber card on /dashboard/bookings. Tap Redeem → pick a class → pick a session → confirm. The destination booking is created automatically and the entitlement is marked redeemed.

Coach flow (Bookings tab)

The Bookings tab shows outstanding entitlements at the top of the class list. Coaches tap Attach to a class to redeem on a player's behalf.

Expiry

A make-up entitlement expires at the source term's end date. There is no automatic conversion to a credit at expiry — the make-up was the chosen refund mode for that class. If the player did not redeem in time, the entitlement is forfeit. Coaches can issue a manual credit if they choose to make an exception.

Why pick make-ups over credits?

Make-ups encourage players to keep training within the term they paid for, which suits programmes with a structured progression (skills development, squad cohort consistency). Credits give the player more flexibility (12-month expiry, redeemable on any class at the same club). Most clubs run one model consistently across their term programmes.