Payment Processing
How payments work
AllSquads uses Stripe as the payment processor. All transactions are processed securely via Stripe's Payment Element — card data is entered directly into a Stripe-hosted iframe and never touches AllSquads servers. AllSquads does not store card details.
Payment methods accepted
Checkout uses Stripe Payment Element, which supports multiple payment methods out of the box:
- Credit card (Visa, Mastercard, Amex)
- Debit card
- Apple Pay (Safari on iPhone/iPad/Mac with a card in Apple Wallet — not available inside in-app browsers such as links opened from Gmail, Instagram or Facebook; the checkout page states Apple Pay only when the current browser can actually offer it)
- Google Pay (supported Android / Chrome with a saved card)
- Stripe Link (one-click saved details across Stripe-enabled sites)
- Bank direct debit (BECS), on recurring memberships, weekly class subscriptions and term instalment plans only. Enter your BSB and account number and accept the direct debit agreement shown. A direct debit takes up to 3 business days to clear, so the page shows "Payment processing" and your membership, subscription or booking starts once the payment has cleared. If your first debit fails, the membership or subscription is cancelled straight away and we email you to say your bank declined it: check your bank details with your bank, or join again and pay by card. A later debit that fails is retried, and after three failed attempts the membership or subscription is cancelled. A failed debit is never treated as paid. One-off bookings (classes, court hire, pay-in-full terms, shop) take card payments only. The booking fee is the same whichever way you pay.
- Saved cards — players can save cards to their account via Dashboard > Saved cards. Saved cards use Stripe SetupIntent and are reusable for off-session charges (e.g. recurring memberships, class subscriptions). Saved cards can be removed at any time from the same screen.
- AllSquads credits (applied at checkout to reduce the charged amount)
Stripe Connect (clubs receiving payouts)
Every paid class, court hire, session pack, membership and subscription on AllSquads is processed on the AllSquads platform Stripe account (platform-held charges) and settles to the club through a single weekly payout: each Monday-Sunday week pays for the classes that ran that week (by class date, in the club's time zone, not the day the player paid), as one Stripe transfer of payable minus platform fee. A subscription or term instalment payment is paid out in the week of the class it pays for, so a payment taken before the term starts waits until that class has run. A holiday camp is paid out day by day, each day in the week it runs, and the platform fee on a kids sport voucher booking is taken in the week of the class it covers. AllSquads absorbs Stripe processing fees. Clubs connect Stripe via Dashboard > Settings > Payments > Connect Stripe — that connected account is where the weekly payout lands.
Clubs can list classes and accept bookings (and sell court hire, memberships and session packs) before completing Stripe Connect — players still pay through Stripe, and the club's payout simply stays pending until onboarding is complete. This means a club can start taking bookings the day it joins; it does not need to complete identity verification first.
Which wallet / alternative methods are visible to a given player depends on their device, browser, and what is enabled in the Stripe dashboard.
Strong Customer Authentication (SCA)
If a player's card requires 3DS / SCA, the challenge is displayed inline as part of the checkout step. Bookings are not confirmed until Stripe returns a succeeded PaymentIntent — there is no optimistic confirmation state.
When is payment taken?
Payment is taken at the time of booking confirmation. For bookings requiring coach approval, payment is held and confirmed once the coach approves.
Receipts
An email receipt is sent automatically to the player's registered email address upon payment confirmation.
Where the itemised detail lives. Two emails arrive for a card payment, and they do different jobs. Stripe's receipt is the card proof: it shows the amount charged, and the same receipt opens from the receipt link under a payment in Dashboard > Payments > Transactions. The AllSquads booking-confirmation email is the itemised record: one clearly-separated section per attendee and class with the session date, time and that attendee's own amount. A booking that covers a regular series - a term or a camp - also carries a Schedule line stating the whole span in one sentence: when it starts, when the final session is, how many sessions that is, and the weekly time with its timezone (for example 'Term - 22 Oct - 10 Dec 2026 - 8 weekly sessions - Thu 4:00pm - 5:00pm AWST'). The finish date is the real last session, not the technical end of the term window. Below the sections sits a Payment table showing subtotal, booking fee, any credits applied, the total charged, the card used and the transaction reference. The booking fee row also shows its GST component (one-eleventh of the fee, since AllSquads' published rates are GST-inclusive) and the AllSquads ABN once the fee is large enough to need a tax invoice ($82.50 or more) — the class price itself never carries a GST line, since the club is the merchant of record for that sale.
The Payment table always reconciles — subtotal plus booking fee minus credits equals the total charged. If those figures ever failed to add up, the email deliberately shows only the amount charged rather than an itemisation a player could check and find wrong.
When a card is declined
If a payment fails, the booking moves to awaiting payment and the player is emailed. The email names the class, the amount and the reason the bank gave ("your card was declined", "the card had insufficient funds", "the card has expired", and so on), and tells them their spot is still held so they can retry from Dashboard > Bookings without rebooking. Nothing is auto-retried for a one-off booking — the player retries when they are ready. Subscription payments are the exception: those are billed by Stripe on a schedule and do retry automatically, so they get a different email that says so.
A payment that succeeds on a second attempt sends no failure email at all. Cards are commonly declined once and approved seconds later on a retry of the same payment. Before any email goes out, AllSquads re-checks the payment with Stripe and re-checks the booking's own status; if either says the money landed, the booking is left confirmed and nothing is sent. There is no follow-up "ignore that" email, because the failure notice was never sent in the first place. A genuine decline is unaffected — and if Stripe cannot be reached to check, the failure email is still sent, so a real decline is never silently swallowed.
Stripe Connect
What is Stripe Connect?
Stripe Connect is the payment infrastructure AllSquads uses to pay clubs and independent coaches. Player payments are processed on the AllSquads platform account (platform-held); funds are transferred to the club's/coach's connected account in the weekly payout batch.
Setup process
- Navigate to Dashboard > Payments > Connect Stripe
- Click Connect with Stripe
- Complete Stripe's identity verification process (business or individual)
- Once approved, the account is connected and ready to receive payments
Requirements
Stripe Connect is required before a club can receive payouts. Clubs can publish classes and accept bookings before connecting Stripe — incoming payments accrue into the club's weekly payout, which stays pending until Connect onboarding is complete and then pays out on the normal weekly schedule.
Multiple clubs
Each club under a single admin account requires its own separate Stripe Connect connection.
Fees model
AllSquads charges two fees per booking, with different payers and different drivers. Both rates below are GST-inclusive — i.e. the published headline rate already includes 10% Australian GST collected by AllSquads (ABN 58 677 516 022). No additional 10% is layered at checkout.
- Booking fee — paid by the player at checkout on every purchase type (class bookings, court hire, private lessons and lesson offers, memberships, and pro-shop orders paid online), driven by the type of purchase; the exact amount is itemised on the checkout screen before payment. It also covers the player's use of the platform itself — their account, managing their own and their children's profiles, and booking communications (confirmations, schedule changes, cancellation notices) by email, SMS and in-app. Booking messages follow the player's account, not how the booking was paid: a player with an AllSquads account gets them by email and in-app, and cancellation notices by SMS as well, whether the booking was paid by card, recorded as cash, already paid, complimentary or Internal. When the player has no AllSquads account, AllSquads sends no booking messages about it at all (no confirmation, reminders, in-app notices, SMS, or change and cancellation messages), whatever the payment method. Only a payment link the club sends them and the invitation to create an account still reach them.
- Platform fee — paid by the club at payout, driven by the club's subscription tier (shown on Dashboard → Settings → Subscription).
Cash bookings with the full online experience
A cash or already-paid class booking — and, for court hire and private lessons, a cash ad-hoc or repeating booking — gets the same self-service a card-paid booking gets: self cancel (class bookings can also self transfer), cancellation credit under the club's own policy, and a receipt. This applies automatically, with no club or per-booking control to turn it off, whenever the player has a real AllSquads account and the club has accepted the current coach-club agreement. In exchange, the club pays both the booking fee (the same rate a card-paying player would be quoted for that class or booking type) and its own platform fee (the rate shown on Dashboard → Settings → Subscription) on that booking's price, taken from the club's next payout, as two separate lines. A credit issued from cancelling one of these bookings is funded by the club and is never paid out to the club when it's later redeemed. A cash or already-paid booking without this coverage still gets all its booking messages when the player has an AllSquads account, SMS cancellation notices included.
A booking made for a player with no AllSquads account or a placeholder profile — a guest booking — never gets this treatment, whatever payment method is used: the player can't cancel or transfer it themselves and gets no cancellation credit, receipt or SMS from doing so on their own. My Bookings shows the booking read-only with a note to contact the club about it. Whatever the payment method, AllSquads sends them no booking messages about it (no confirmation, reminders, in-app notices, SMS, or change and cancellation messages), so the club should tell them directly. A payment link the club sends them and the invitation to create an account still reach them. The club can always cancel or change it for them. A cash or already-paid booking made before the club had accepted the current coach-club agreement never gets the full online experience either — coverage is never applied retroactively — though a player with an account still gets its booking messages, SMS cancellation notices included.
A manual club credit (the kind a coach or club hands out directly, not one from cancelling a Stripe-paid booking) carries the club's own platform fee when a player spends it, taken from the club's payout. Each booking pays one booking fee, on the price after any club promo code or discount (credits don't reduce it): the player pays it when something is left to pay, and the club pays it when credits cover the whole booking, so a manual credit never adds a second booking fee. In the payout breakdown these sit on that booking's own line: the credit in the Manual credits column (not paid out) and the fees in the Fee column, reducing the payout. The club's platform fee on a promo booking is on the price paid too.
Two separate families of money — never blend them. A club's weekly payout figure is entirely made of the CLASS PRICE the club charged, minus the CLUB'S OWN platform fee — nothing the player paid at checkout beyond the class price is ever part of it. The player's booking fee is a completely separate AllSquads charge, added on top of the class price and shown to the player at checkout and on their receipt; it is never part of a club's payout calculation, a club cannot set or see that figure anywhere in Settings, and it is not reduced or offset by anything the club does. If you're reconciling what a booking is worth to the club, the number you want is class price × (1 − platform fee %) — never a figure that includes the player's booking fee.
Rate detail (Help page reference only):
- Booking fee — live rates resolved at checkout from the
platform_fee_ratesDB table (src/payments/checkout.ts): - Group / social / annual / court hire / drop-in: 3% (GST-inclusive)
- Camp / private lesson (coach-profile booking or a one-off lesson offer): 2.5% (GST-inclusive)
- Membership / pro-shop order paid online: 2.5% (GST-inclusive)
- Weekly private-lesson subscription (lesson offer): 3% + 0.5% per weekly charge (GST-inclusive), billed as its own "AllSquads booking fee" line on each weekly invoice
- Weekly (or fortnightly) class subscription from the class page: 3% + 0.5% per charge (GST-inclusive, minimum 50¢), billed as its own "AllSquads booking fee" line on each invoice, on top of the class price ($30.00 a week is $31.05)
- Term class: 2.2% (GST-inclusive)
- Subscription instalment: 3% per individual charge (GST-inclusive) (uses the
subscription_paymentrate, NOT the underlying term class 2.2%). On a term payment plan the fee is its own "AllSquads booking fee" line on each invoice, showing its GST - A club promo code on a term payment plan comes off every payment, not just the first, and the booking fee on each payment is on the discounted amount. With more than one child on weekly plans, the code's discount is shared across the plans.
- A club can set a fixed-amount promo code to come off the first payment only. The first payment is then the discounted amount with the booking fee on it, and every later payment is the full weekly price with its fee. Checkout shows the first payment, the later payments and the total. If the code is worth the whole first payment or more, the first payment is $0 and nothing carries over to later payments: checkout shows $0 due today and saves the card for the later payments, and the booking confirmation shows the first payment as "Covered by your promo code" with the true total. The confirmation always shows what the plan really charges: the first payment, the later payments after any promo code, and for several children each child's own first payment. Percentage codes always come off every payment.
- Minimum 50¢ (GST-inclusive) per checkout —
max(Σ rate × cash basis, 50¢)across everything in one checkout, so a cart of several classes pays the minimum once, not once per class; the fee is then split across the cart's bookings and the parts add up exactly to what was charged. Only bites checkouts under ~$17; never applies to percent-billed recurring instalments; a fully credit-covered checkout still pays $0. (Court-hire split shares are separate: each player's own share carries its own 50¢ minimum.) - Platform fee — canonical rates live in the
platform_pricingDB table (seeded fromsrc/domain/entitlements/entitlements.tsPLATFORM_FEE_RATES): coach_free5%,coach3%,coach_pro2.5% (all GST-inclusive)club_free5%,club2%,club_pro1.5% (all GST-inclusive)
The two fees (booking fee + platform fee) remain separate — do not conflate as "the AllSquads fee".
Who collects GST on which line
| Line on the invoice | Merchant of record | GST collector |
|---|---|---|
| Class price (term, casual, drop-in, social, camp, private, court hire) | Club / coach (platform-held charge; club is the economic supplier) | Club — per the club's own GST registration. AllSquads does not add GST to the class price. |
| Booking fee | AllSquads | AllSquads — GST is included in the headline rate above. |
| Platform fee (clawed back at payout) | AllSquads | AllSquads — GST is included in the headline rate above. |
| AllSquads SaaS tier subscription (Club, Club Pro, Coach, Coach Pro) | AllSquads | AllSquads — the plan price includes 10% GST, shown as a GST line on every plan invoice, with the ABN. |
Credits on a booking
Crediting (cancellation / refund): the credit issued = class value only. The booking fee is non-refundable — once a player has paid the booking fee on the original booking it stays with the platform and is not returned as credit.
Redemption (using credits at checkout):
- Credits apply to the price of what is being bought (a class, a court hire or a Pro Shop order), capped at that price. They never pay the booking fee.
- The booking fee is a percentage of the price after any club promo code or discount: credits don't reduce it, except credit from a cancelled booking, which already paid its fee (minimum 50¢, applied once per checkout).
- Fully covered by credits or a promo code → nothing is left to pay, so the player pays $0. The booking fee on the full price is then deducted from the club's payout instead, shown on that booking's line in the Fee column (except a voucher class, where the parent still pays it).
- Partial cover (credits < class price) → the player pays the remaining class price plus the booking fee on the full price.
Example: a $180 class with a $72 credit leaves $108 to pay; at a 3% rate the booking fee is $5.40 (on $180) and the total charged is $113.40. The cash class portion accrues into the club's weekly payout.
The club-paid platform fee mirrors the cash-side math, so the club's weekly payout reconciles exactly. Platform-held refunds are funded from the platform balance and deducted from the club's next weekly net (legacy pre-cutover destination charges still use reverse-transfer). This policy moves money between the player and the platform, never between the club and the platform — clubs are unaffected.
Credit issuance and redemption are recorded in an internal ledger.
Payouts
Payout schedule
Payouts are processed in batches by AllSquads on a regular schedule. The specific schedule is displayed in Dashboard > Payments > Payouts.
Payout calculation
Net to club = payable (cash portion of COMPLETED Stripe bookings across all sources: class, court hire, memberships, pro shop, subscriptions) − platform fee (tier rate × payable amount). AllSquads absorbs Stripe processing fees — there is no separate Stripe deduction on any club payout. The booking fee is paid by the player on top of the class price at checkout, is AllSquads revenue, and never flows to the club. Refunds claw back cash only — platform fee and booking fee are not reversed. Credits are never re-charged on a refund.
Where a booking was charged at a slightly-off migrated price (within 10c below the class's current configured price — e.g. $4.96 against a $5.00 config), the payout renders and pays on the proper configured price, with the fee applied to that amount; the player is never re-charged and AllSquads covers the difference.
The count shown against a payout is players (active seats booked into the payout week), not bookings — one booking can hold several players, and the Players figure matches what you'd count on the roster. Cash-paid players are included in the count even though cash is not part of the transferred amount.
What's in the payout (5-point eligibility rule)
Only AllSquads-held funds are transferred to the club. Bookings that the club already has the money for, or that no money has actually been collected on, do not generate a payout transfer.
- COMPLETED Stripe payments — eligible. AllSquads holds the funds via Stripe Connect and transfers them on the weekly payout.
- Unpaid Stripe payment links — NOT payable until the link is paid (no funds to transfer).
- Cash payments registered by the club — NOT transferred. The club already has the money.
- Manual credits (goodwill / promos) — excluded. No cash was ever collected.
- Cancellation credits — represent a previously paid booking. The credit portion of a new booking does not generate new transferable funds.
The platform fee is calculated on the payable amount (COMPLETED Stripe cash portion only), not on Gross. See docs/23-fees-model.md §4a for the canonical model + worked examples.
Payout history
Full payout history is available in Dashboard > Payments > Payouts, including itemised breakdown per booking. The bookings in a paid payout are shown at today's figures. If those add up to a little more or less than the amount actually paid, the difference appears as its own line, "Adjustment to amount paid", so the breakdown always totals exactly what reached your bank.
Minimum payout threshold
Payouts below the minimum threshold are held and rolled into the next payout cycle.
Credits System
What are credits?
Credits are AllSquads platform credits used for refunds and promotions. 1 credit = 1 Australian Dollar (AUD).
Club-scoped credits
Credits are tied to the specific club that issued them. A player cannot use credits from Club A to book with Club B. This ensures that refunded value returns to the issuing club.
How credits are issued
Credits are issued in the following scenarios:
- Cancellation refund: Player cancels a booking within the refund window — credits are issued automatically per the class cancellation policy
- Manual issue: Coach or club admin manually issues credits (e.g., goodwill gesture, make-up session)
- Session cancelled by club: Club cancels a session — enrolled players receive full credit refunds automatically
Credit expiry
All credits expire 12 months from the date of issue. Players receive a notification warning when credits are approaching expiry.
Using credits at checkout
- Player proceeds to checkout
- Available credits for that club are applied automatically, oldest-expiry first (FIFO)
- The applied credits reduce the amount charged; the remaining balance is charged to the player's card
- Credits always apply when available — there is no opt-out at checkout
- Credits pay for classes, court hire and Pro Shop orders at the club that issued them. At the court hire and Pro Shop checkout a "Credit applied" line shows the amount taken off. If credits cover the whole purchase there is no card step: the player confirms and pays $0. On a split court booking, a player's credits pay only their own share.
Credit balance
Players can view their credit balance per club in Dashboard > Payments > Credits.
Pending credits (contacts without a player account)
A club can issue credit to a CRM contact who hasn't signed up to AllSquads yet (for example, a player migrated from a legacy system, or someone the club owes a refund to before they have an account). These are saved as pending credits tied to the contact's email.
When the player later signs up with a matching email, all pending credits on that email auto-attach to the new player account at the issuing club, with the same balance, reason and audit trail. The player sees the credit immediately on first login.
Notes:
- Email match is case-insensitive.
- Email must be present on the contact at the time of issuance — no email, no pending credit.
- Multiple pending credits on the same email all attach on signup.
- Email mismatch (typo, different signup address) keeps the credit pending; the club admin can manually attach or void from the contact drawer.
- Voided pending credits stay in the audit log but never attach.
- Auto-attach also runs on Google + Apple OAuth sign-ups and on ghost-account claims.
Payment Links
What is a payment link?
A payment link is a unique URL generated by a coach or club to collect a specific payment from a player. Useful for irregular bookings, offline arrangements, or situations outside the standard booking flow.
Creating a payment link
Dashboard > Payments > Create Payment Link:
- Enter amount, description, and expiry date
- Copy and share the link directly with the player
- Player completes payment via the link (no AllSquads account required)
Collect payment in person via QR code
For coaches and clubs accepting payment face-to-face (e.g. at the court before a session), the dashboard exposes a "Collect Payment" QR code option on any unpaid booking row.
- Dashboard > Bookings > find the unpaid booking
- Click Collect on the booking row
- A modal opens showing a QR code containing a real Stripe Payment Link for that exact booking amount
- Player scans the QR with their phone camera, completes payment in the Stripe-hosted checkout
- Booking automatically updates to Paid once Stripe confirms the payment via webhook
If the player has an email on file, the modal also offers a "Send link via email" fallback. PWA-compatible — no native hardware required.
Request payment on a booking that already exists
Use this to collect a balance, a gap (for example what's left after a kids sport voucher), an adjustment or any part payment against a booking the player already has. It never creates a second booking.
- Open the class's Bookings tab and click Manage on the player's row
- Click Request payment
- The amount is pre-filled with what's still owing on the booking, if anything — change it to whatever you need to collect
- Optionally add a note the player will see (e.g. "Balance after kids sport voucher")
- Before you send, you see exactly what the player will be charged: your amount plus the standard booking fee
- Click Send request — the player gets an email with a payment link (text messages are only used for cancellations)
When the player pays, the money is added to that same booking. It shows as paid against the original booking in your payments and in your payouts, and in the player's booking history. If the payment clears everything owing on a booking that was waiting for payment, the booking confirms automatically.
Each request shows on the booking as Sent, Paid, Expired or Cancelled. While a request is Sent you can Resend it (the same link goes out again) or Cancel it. Sending a new request replaces any request that is still waiting. You can request a payment on a booking whose class has already run — your share is paid out in the weekly payout for the week the player pays, shown as its own line naming the player and the booking. A payment can't be requested on a cancelled booking.
Court hire and private bookings. Open the booking in Court Hire and click Request payment — it works the same way. It's for extra money on a booking that's already paid, such as an extra half hour or equipment hire, so the button is only available once the booking is paid. To collect a court booking's own price, use Send payment link as before.
Refunds
Credit-based refunds
AllSquads does not process Stripe refunds (reversals back to the original card) as standard practice. All refunds are issued as credits to the player's AllSquads account. This is by design — credits keep value within the platform and are processed instantly.
Manual refund requests
In exceptional circumstances, a player may request a cash refund (Stripe reversal). Refund requests are reviewed by AllSquads admin and processed at their discretion.
Refund timeline
Credit refunds are issued immediately upon cancellation confirmation. Manual Stripe refunds (if approved) take 5–10 business days depending on the player's bank.
Bookings that have already been paid out
Once a booking has been paid out to the club in a weekly payout, it can no longer be cancelled for a credit or a refund, because the club already has the money. The player sees a plain message and nothing changes. The cancel screen and the Skip this session screen say so up front instead of showing a credit, and the assistant will not quote a credit or refund for that booking. If a coach cancels a session that includes a paid-out player, that player's seat is still cancelled, but it is not credited because the club already received that money, and the coach is told how many were cancelled without credit. The coach can still give the player a manual club credit. A late cancellation inside the notice window never earns a credit. If the club wants to give a player something back after a payout, it adds a manual club credit.
Session Packs
What is a session pack?
A session pack is a pre-purchased bundle of sessions sold at a discounted rate. Players purchase the pack upfront and sessions are deducted from the pack balance each time they attend.
How packs work
- Player purchases a pack (e.g., 10 sessions for $180 vs $20 per session) and must book at least one date at the time of purchase
- One session credit is deducted per booked session at booking/checkout time (not at attendance)
- A pack credit is valid for any class at the same club that (a) has "Session packs" enabled on its class settings and (b) is priced at or below the pack's per-session ceiling — both conditions are required; a class with session packs turned off cannot be paid for with an existing pack even if its price would otherwise qualify
- Packs expire 12 months from purchase date; a session credit is reinstated if a booking is cancelled within the class cancellation policy
Pack refunds
Session pack purchases are non-refundable — this is stated at the point of purchase. The club is paid for a pack in the week it is purchased, so the purchase cannot be cancelled or refunded through the platform afterwards (by the player, the club, or an admin). Unused sessions stay available until the pack expires, and a session is reinstated to the pack if a booking is cancelled within the class cancellation policy. In exceptional circumstances (for example a club closing), contact AllSquads support — such cases are handled by the platform directly. Unused sessions in an expired pack are not automatically refunded; contact the club directly to discuss unused pack balances.
Government Vouchers (kids sport vouchers)
What is a kids sport voucher?
State governments run kids sport voucher schemes that pay toward an approved activity provider's registration or participation fees, each under its own name (for example Play On! in Queensland, Active and Creative Kids in New South Wales, Get Active Kids in Victoria and KidSport in Western Australia). AllSquads does not integrate with the government voucher system — a coach redeems the code directly on the government portal.
How it works
- A class must have "Accept kids sport vouchers" turned on in its class settings before a player can pay with one — clubs opt in per class, any class type.
- At checkout, the player selects "Pay with a kids sport voucher", enters their code, and enters how much is left on the voucher. If some has already been used elsewhere, the player enters what remains (up to $200). That balance covers the class price first; any account credit at the club is then applied to whatever the voucher didn't cover; the booking fee is worked out on the whole class price (the part the voucher covers included), and that fee, plus anything still owing after the voucher and any credit, is what's paid on the spot. If the voucher and any credit cover the whole class price, there's still a small booking fee to pay on the spot for the fee itself.
- Before you submit, the panel shows the class price, how much of it the voucher covers, and exactly what your card will be charged — updating as you change the balance. Promo codes are not applied to a voucher booking.
- A voucher pays for one class per checkout. If your cart has more than one class (for example two children booked into two different classes), checkout offers card payment only and says why: to use a voucher for each, check out one class at a time.
- The booking sits "pending" until the coach redeems the code on the government portal and confirms it in AllSquads — it does not auto-confirm even after the rest of the price is paid.
- If part of the class price is left for your card to cover, your coach isn't asked to redeem the voucher until that payment has gone through. Abandoning the card step leaves the voucher unsubmitted as far as the coach is concerned, and the seat is released after 7 days.
- You can come back and finish that card payment. Re-enter the same voucher code and you're shown what's still to pay, with a link straight to the payment. You can also reach it from your booking. The amount shown includes the booking fee worked out on the whole class price (not just the part the voucher didn't cover), so it's the figure you'll actually be charged — and if your payment is still going through, the page says so rather than asking you again.
- The redemption screen shows the coach the balance the player declared, and lets them correct it to what the government portal actually shows. If the real balance is lower, AllSquads charges the player the difference, emails them a link to pay it, and holds the booking pending until it clears — so the club is never left short after running the class. Approve again once the payment has gone through and the booking confirms.
- If you've paid the part of the price the voucher didn't cover, however you paid it, your booking is never released automatically. It stays pending until your coach approves or rejects it, and we keep reminding them each week.
- A booking with nothing left to pay, or where the card step was never completed, is released automatically if the coach doesn't redeem within 7 days (with reminders to the coach beforehand), and the seat frees up. It is recorded as released by the system, not as a cancellation you made.
- If your coach rejects a voucher booking, anything you paid toward the price the voucher didn't cover comes back to you as account credit, however you paid it. The booking fee is not refunded.
- The same applies if your club cancels a voucher booking: what you paid toward the price the voucher didn't cover comes back as account credit. The voucher itself can't be returned.
- A voucher code can only be used once; if a coach rejects it (e.g. wrong code), it's freed up for resubmission.
- If you submit the same code twice yourself, the second attempt doesn't create a second booking and isn't treated as an error — you're shown the submission you already made and what it's waiting on, with a link to that booking, and a link to finish paying if a card payment is still outstanding. The "this code has already been submitted" message is only ever about a code held by a different account.
- We email you as soon as your voucher is recorded, naming the class, the code and what the voucher covers, with a link to your booking. Your booking page says "Voucher submitted" until your coach redeems the code — it is not waiting on a payment from you (unless part of the price was left for your card, in which case it says so).
Cancelling a voucher-paid booking
The $200 voucher itself can't be returned once redeemed — if you need to cancel, talk to your coach directly; they can issue a manual credit at their discretion. If you paid the rest of the price on top of the voucher, that portion can be credited normally.
Subscriptions (Recurring Billing)
What is a subscription?
Some recurring classes allow players to subscribe for automatic weekly or fortnightly billing, rather than paying per session. Subscriptions use Stripe's recurring billing system.
How subscriptions work
- A coach enables subscriptions on a recurring class and sets the price, billing interval (weekly or fortnightly), and cancellation notice period
- A player subscribes from the class detail page by clicking Subscribe
- The player is routed to a confirmation page with Stripe Payment Element. If the card requires SCA / 3DS, the challenge is shown here and must be completed for the subscription to become active
- Once Stripe confirms the first payment succeeded, the subscription is active and automatic recurring charges begin
- The player is billed automatically at the start of each subsequent billing period
Subscription pricing
Subscription pricing is set separately from the per-session price. The coach defines the recurring amount (e.g., $25/week or $45/fortnight). Each recurring charge has a booking fee applied at the subscription_payment rate, regardless of the underlying class type — a term-class instalment bills at the subscription rate, not the term-class rate. Term instalments (weekly or fortnightly): the cart, checkout and booking confirmation all show the same number of payments the plan really bills — one payment per remaining session on a weekly plan, one per two remaining sessions (rounded up) on a fortnightly plan. An 8-session term paid fortnightly is 4 payments, shown as "Payment 1 of 4, then 3 more fortnightly payments". The confirmation shows the amount actually charged each time, and the total you agree to at checkout is the exact total, cents included. Club credit on a payment plan: if your credit covers the whole first payment (the instalment price; no booking fee is taken on a payment made from credit), that payment comes from your credit and your card is saved for the rest. The cart and checkout then show $0.00 due today, and checkout shows the date of your first card payment, one week (or one fortnight) after you book. The agreement you tick says your credit pays the first payment, then the amount each card payment will be (the price plus the booking fee) and the plan total. If it covers only part, the credit is not used on the plan; the first payment is charged to your card in full, with the full booking fee, and checkout shows exactly that. Booking two or more children on a payment plan for the same class: checkout takes one card payment for every child's first instalment, each at its own price and booking fee. Each child then has their own plan, billed separately on that card from the next payment on. The confirmation names every child and shows the one card payment, lists each child's plan, and gives the next payment and the total committed across all the children's plans. Cancelling one child's plan leaves the others running.
The subscription_payment rate is 3% per charge (GST-inclusive); the term-class rate it does NOT use is 2.2%. Platform fee on payout follows the club's tier.
Cancelling a subscription
Players can cancel subscriptions from Dashboard > Subscriptions (also reachable at /account/subscriptions). A cancellation notice period applies (set by the coach, default 7 days). The subscription remains active until the notice period ends, and the player is not billed again after the final period. Cancellation opens a confirmation modal showing the class, the club cancellation policy, and the effective end date before the player confirms. A cancellation confirmation email is sent automatically.
My Subscriptions page
Each active subscription card on Dashboard > Subscriptions shows: class name, club + the class's coach (left out when the coach's account carries the club's own name, so the club never shows twice), status badge, next payment (amount + date; not shown once the plan has taken its last payment), remaining payments count (for finite instalment plans: the payments that plan bills, not the weeks in the term, and none once the last payment is taken), total paid to date (what the card was charged, booking fee included, the same basis as total remaining), total remaining, term start/end dates, and the class's cancellation policy text. A "View payment schedule" expander lists every scheduled payment (dates + amounts) so players can see the full commitment. Upcoming payments for finite plans are matched to the subscription's term via class_terms. A weekly or fortnightly payment plan for a term shows the term it is for (its name and dates, e.g. "Term 2: 12 Oct – 14 Dec") and what each payment charges, booking fee included. Its last payment date shows as "Payments end" (the term's classes run on to the term end date), and the Cancel button stays available: if the plan can't be cancelled yet, the card says why. Once you ask to cancel, the card shows "Cancels" with the date and no further payments, and Pause is no longer offered. A cancelled subscription that is still running stays under Active until its end date, the same straight after cancelling as after a refresh, and moves to Past once it has ended.
Payment reminder emails
Three days before each scheduled charge, players receive an email reminder with the upcoming amount and charge date plus a link to Manage subscription. The reminder is sent by the subscription-payment-reminder job (runs daily at 11am UTC). If a payment fails, players get a subscription_payment_failed notification with the retry date. If a subscription is cancelled, players get a subscription_cancelled confirmation email with the effective end date.
Annual subscriptions (term programs)
When a coach enables annual subscription on a term class that has 2+ published terms, players see a Subscribe Annually CTA on the class detail page and inside the booking modal. Subscribing once enrols the player for every term in the program and bills them at the start of each term via a Stripe Subscription Schedule (not the normal cart flow — annual subs bypass cart entirely). An optional annual discount is configured as a percentage (0–100) — this percent comes off each term's price at Stripe checkout and is shown on the class detail page as "Save X%" next to the Subscribe Annually option. The discount is stored in the annual_subscription_discount_percent column (migration 150 superseded the earlier cents-based column).
Subscriptions and session booking
Subscribers still book individual sessions to manage capacity. When a subscriber books a session, payment is automatically skipped since they are already paying via subscription.
Subscription statuses
- Active — subscription is live and billing automatically
- Past due — most recent payment failed; Stripe will retry
- Cancelled — subscription has been cancelled and is no longer billing
- Incomplete — initial payment has not been completed
Free Trial Bookings
What is a free trial?
Some classes offer a free trial session allowing new players to attend one session at no cost before committing to a full booking.
Eligibility
Each player is eligible for one free trial per class. If a player has previously used a free trial for a specific class, they are not eligible for another.
Checking eligibility
Eligibility is shown on the class detail page for logged-in players.
