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)
- 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: bookings made Monday-Sunday are approved and paid the following Monday as one Stripe transfer of payable minus platform fee. 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 and, for class bookings, court hire, term auto-renewals — and, as each is switched on, memberships, private lessons, one-off lesson offers and pro-shop orders paid online — it is an itemised Australian tax invoice: one line per class, court slot, membership, lesson or product, a separate AllSquads booking fee line showing the GST included in that fee, any credits or promo discount as negative lines, the total charged, and the AllSquads ABN in the header and footer. The same hosted invoice opens from the receipt link under a payment in Dashboard > Payments > Transactions. GST appears on the booking-fee line only — the class or court price is the club's supply and carries no AllSquads GST. The AllSquads booking-confirmation email is the per-attendee itemised record: one clearly-separated section per attendee and class with the session date, time and that attendee's own amount, followed by 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.
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 Monday 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 Monday 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.
- Platform fee — paid by the club at payout, driven by the club's subscription tier (shown on Dashboard → Settings → Subscription).
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
- 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%) - Minimum 50¢ (GST-inclusive) on any one-off booking fee —
max(rate × cash basis, 50¢); only bites tickets under ~$17; never applies to percent-billed recurring instalments; a fully credit-covered booking still pays $0 - 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 — Stripe Tax applies 10% inclusive, ABN shown on invoice. |
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):
- The booking fee is computed on the full class price (not on the post-credit cash portion).
- Credits draw down the gross total (class price + booking fee). A credit balance can offset the booking fee whenever the credit pool exceeds the class price.
- Fully covered by credits (credits ≥ class price + booking fee) → $0 charge, booking fee waived.
- Partial cover (credits < gross) → the booking fee is charged once on the cash remainder; credits offset the rest.
Credit allocation order: credits draw down the class price first, then the booking fee. This keeps the club's cash flow whole on partial-credit bookings (the cash class portion accrues into the club's weekly payout); the platform absorbs booking-fee waivers when the credit pool exceeds the class price.
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 (ADR-076).
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.
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
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.
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.
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 (e.g. QLD Play On!)
What is a Play On! voucher?
QLD's "Play On!" (FairPlay) government voucher gives $200 per child per financial year toward an approved activity provider's registration/participation fees. 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 Play On! 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 Play On! voucher" and enters their code. The $200 voucher covers the class price first; if the class costs more than $200, the remaining balance is charged to a card on the spot (booking fee applies only to that remaining balance, never to the voucher portion).
- The booking sits "pending" until the coach redeems the code on the government portal and confirms it in AllSquads (with a redemption reference) — it does not auto-confirm even after any card top-up is charged.
- If the coach doesn't redeem within 7 days, the booking is automatically released (with reminders to the coach beforehand) and the seat frees up.
- A voucher code can only be used once; if a coach rejects it (e.g. wrong code), it's freed up for resubmission.
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 a card top-up 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.
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 + head coach, status badge, next payment (amount + date), remaining payments count (for finite instalment plans), total paid to date, 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.
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.