Clubs
Club and team payments
Creating payment events, fee choices, installment plans, lifecycle operations, exports, refunds, and how it all relates to Stripe Connect.
- Platform:
- both
- Audience:
- club_admin, staff
- Last reviewed:
- 2026-06-04
Payment events
Staff create payment events for organization-wide or team-specific charges: tryouts, tuition blocks, tournament deposits, kit, dues, or other line items. Club events sit on the club; team events sit on a single team. Both share the same model and UX, with small differences called out below.
- A household is required for recipients to pay. Players with their own login still need to create or join a household (even if no parent is involved).
- Public pay links open a Athleit-hosted checkout in the browser; no Athleit account required to complete the payment.
Fee choices
Each event is composed of one or more fee choices. A fee choice is a single-select option that the household picks at checkout (team) or enrollment (club).
- Each fee choice has its own label, own amount, and its own list of installment plans.
- The household selects one fee choice — not a combination.
- Examples: "Full season — $400", "Half season — $250", "Goalkeeper — $300".
- Fee choices show in the recipient list legend with rotating brand colors so staff can see distribution at a glance.
Installment plans (split payments)
Each fee choice carries its own list of installment plans (e.g. Pay in full, 2 payments, 3 payments).
- Pay in full is always available on every fee choice and cannot be removed.
- For club events, the household picks their fee choice and plan during enrollment.
- For team events, the household picks their fee choice and plan on the pay page before the first payment.
- Once a plan is locked, the pay page shows installment progress: "Installment 2 of 3" with the next amount due.
- Each installment is a separate Stripe checkout session — Stripe processing fees and Athleit service fees (where configured) apply per installment.
- A recipient with one or more installments paid but a remaining balance shows a Partial status.
Household self-edit
Until the first installment posts, the household can return to the public pay page and change both their fee choice and their plan. The selectors update via /api/pay/club/selection (club) and /api/pay/team/selection (team). After the first payment lands, both selections lock and only the progress view is shown.
Recipient list, filters, and money donut
Open the staff detail page for an event to see who has paid:
- Search by player name.
- Plan filter — All plans or any specific plan that has at least one recipient.
- Status filter — All statuses, Paid, Partial, Pending, or Failed.
- Money collected donut breaks the total down by fee choice with a brand color rotation (teal / indigo / purple / pink) and a legend.
The recipient row shows the chosen plan and a status pill that mirrors the filter values.
Lifecycle operations
Action chips on the staff detail page:
- Close — deactivates the public pay link. Records remain visible to staff; Closed events surface in the Closed tab on the list.
- Copy — duplicates the event (settings, fee choices, plans) into a new draft you can edit before sending.
- Delete — soft-deletes the event into the Deleted tab on the list. Records are retained; staff can restore. Hard delete is not exposed in-app.
- Remind all — sends a reminder email/push to anyone whose status is not Paid. Manual reminders have a 24-hour cooldown per recipient.
Per-recipient actions
Each recipient row exposes four icon-only actions on the right side (web and mobile): copy pay link, send reminder, mark paid, and refund (curved arrow). Hover tooltips name each. Actions are conditional — for example Mark paid only shows for pending/partial recipients, and Refund only shows when the recipient was paid via Stripe and has a refundable balance.
Refunds
Staff can issue full or partial Stripe refunds directly from the recipient row. The refund flows back to the household's original payment method, and every collected total that references the charge drops by the refunded amount — the event's own Finance card and Money collected donut (visible to the staff running the event), plus the admin-only club aggregates: the dashboard Money collected card, the mobile Activity → Overview tab, and the Financials page. A Refunded pill replaces the Paid pill on the recipient row when fully refunded; partial refunds tag the existing status as "Paid · partial refund" / "Partial · refund". See Issuing refunds for the full walkthrough — who can refund, where the action lives, what the household sees, and how refund history is tracked.
Payments list
From Club → Payments or Team → Payments:
- Tabs filter by status: Active (sent and accepting payment), Drafts (not yet sent), Closed, Deleted, and All.
- "Sent" surfaces as Active in the UI.
- The list does not show an Amount column — open an event to see per-fee-choice totals and per-recipient progress in the detail view.
Team payment events
Team events have full parity with club events: fee choices, installment plans, household self-edit, plan + status filters, money donut, lifecycle operations (close / copy / soft-delete / remind-all), and the same status filter on the list.
Differences:
- A team event belongs to a single team; a club event belongs to the organization.
- Add newly eligible players — when a player joins a team after the event was sent, team staff can open the event and choose Add newly eligible players to include them. Athleit checks the current roster (including dependents who were just added to that team via the household's per-team rostering action), adds any missing eligible recipients, and sends those families the initial payment email. Club events do not need this since enrollment is opt-in.
- The export for team events omits the team name column (the event already belongs to one team) and includes a last reminder sent timestamp. Club exports include the team name (the team the player was on at enrollment) and omit last-reminder.
Use the scope that matches who is responsible for collecting and reporting the funds.
Export to CSV / Excel
The Export action chip on the staff detail page opens a drawer for downloading recipients as CSV (RFC 4180 + UTF-8 BOM) or XLSX.
- Field selection — pick which columns you want (player, payment status, plan, fee choice, amount paid, balance, optional team name, optional last-reminder sent).
- The active list filters (search, plan, status) apply to the export, so you can ship a "Pending only" file or a "Plan = 3 payments only" file without post-processing.
- Filenames include the event slug and the export date.
- Exports are server-built and reflect the full recipient set — they are not limited to the visible page.
Stripe Connect
Money movement uses Stripe Connect when configured for your club or team. Each installment is a separate Stripe checkout session, so processing fees apply per checkout. Athleit service fees and Stripe processing fees are separate concepts — see Billing and Stripe.
Payment history and player records
Payment history is preserved for tax and audit purposes — it survives removing a player from a roster, removing a household member, deleting a household, and deleting a team. Each recipient row keeps a snapshot of the player's name at the time payment was created, the team the player was on at enrollment, and (for club events) the club name. If a player, team, or household is renamed or deleted later, the snapshot on previously recorded payments stays as it was when the payment was set up.
Club admins and staff retain read-access to historical payment records for teams that were under their club, even after the team is deleted — records show up attributed to the snapshotted team name so finance and accounting still has the context they need.
Soft-deleted events also retain their full recipient and payment history; restoring an event puts it back on the list with all records intact.
For the complete picture of what's retained, for how long, and across which deletion paths, see How Athleit retains payment records.