> ## Documentation Index
> Fetch the complete documentation index at: https://docs.1club.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Season passes

> Sell the same court hour every week of a season as one prepaid contract - hold the courts, price it from your rate card with a volume discount, credit makeup hours for cancelled weeks, and release the whole run in one step.

A season pass sells the same hour on the same court, every week of a season, as one prepaid contract. The member picks a Tuesday at 19:00 for the winter, pays once, and every week is booked the moment the sale goes through. This is the default commercial model of indoor racket sports, and it has a local name almost everywhere: contract time or permanent court time in the US, block booking in the UK, Winterabo in Germany, fast tid in Sweden, vakiovuoro in Finland.

You sell a season pass from the [schedule](/operations/schedule), on the hour the member wants. What you get afterwards is an ordinary [membership](/members/memberships) row plus a booked weekly series that the calendar marks as contracted time.

## Overview

* **Sold from the calendar** - click the hour the member wants and choose **Add Season Pass**. No separate product to build first.
* **Several weekly hours in one contract** - each row is one hour held every week, and rows can sit on different days and different courts.
* **Priced from your rate card** - every week is priced by your [pricing rules](/settings/pricing-rules), itemised down to the week, with one volume discount applied to the total.
* **The courts come off the market immediately** - the sale books every remaining week of the season at once, paid or not.
* **Clashes are surfaced before you sell**, with two ways out: move what is in the way, or move the whole hour to a court that is free all season.
* **Makeup hours for cancelled weeks** - cancel a week in good time and the hour is credited back for the member to replay on another date inside the season.
* **One-step release** - cancelling the pass frees every remaining week together, with the unplayed value shown so the refund is your decision.
* **Holders count as members** - their own extra bookings get the member rate you author in Pricing rules.

## The vocabulary

| Term            | What it means                                                                                                    |
| --------------- | ---------------------------------------------------------------------------------------------------------------- |
| **Season**      | The fixed period the pass is sold for - a winter, a term, a league. Set up under [Seasons](/settings/seasons).   |
| **Weekly hour** | One court, one weekday, one start time and a duration, held every week of the season. Also called a season slot. |
| **Season pass** | What the member buys: the whole run of weeks for their weekly hours, paid once.                                  |
| **Makeup hour** | An hour credited back when a week is cancelled in good time, replayable on another date inside the same season.  |

## Season pass vs membership

Both end up as a membership row, but they behave differently on every axis that matters at the desk:

|               | Season pass                                               | Membership                                       |
| ------------- | --------------------------------------------------------- | ------------------------------------------------ |
| What it holds | A named court, weekday and time, every week of the season | Nothing; the member books as they go             |
| Billing       | Paid once, up front                                       | Recurring, or a one-off pass                     |
| Renewal       | Never auto-renews                                         | Auto-renew available                             |
| Price         | The sum of the weeks it books, with one volume discount   | The plan's price                                 |
| Allowance     | The season's hours, spent up front on the weeks it books  | Debited as the member books or checks in         |
| Cancellation  | Releases every remaining week in one atomic step          | Ends the term, leaves existing bookings standing |
| Sold from     | The schedule                                              | The member profile, POS, portal, or marketplace  |

## Before you can sell

1. **A season that is on sale.** Create it under **Settings > Revenue > Seasons** and check its **Setup** chip reads **On sale**. See [Seasons](/settings/seasons).
2. **Hourly rates in pricing rules.** A season plan carries no price of its own, so an hour with no rate prices at zero and the sale is refused. Author one rule per time band, and a second rule per band scoped to the season's plan if you publish a separate holder rate. See [Pricing rules](/settings/pricing-rules).
3. **Permission to create memberships.** The sale option is offered only to staff who hold it.

## Selling a season pass

Open the [schedule](/operations/schedule), click the free hour the member wants, and choose **Add Season Pass**. The option appears only when the date you clicked falls inside a season that is actually on sale at that gym.

The **Season Pass** drawer opens with that hour already filled in. It shows the venue's timezone at the top, because every time in it is read on the venue clock, not your browser's.

* **Choose a member** and **Choose a season**.
* **Weekly hours** - one row per hour held every week. Each row carries a day, a start time, a duration and a court. Use **Add another hour** for a second or third weekly hour; rows may sit on different days and different courts. A repeated row is refused, because two identical rows would book the court against itself and charge twice.
* **Starts from** - sell from a later week. The member buys the weeks that are left, at the same rates.
* **Price** - itemised down to the week so you can check it against your printed price list, with the volume discount shown as its own line.
* **Paid now** - toggle on and pick a payment method to take the money at the desk.
* **Sell season pass** completes the sale.

Each row tells you how much of the season it can actually deliver: **Free all 27 weeks**, **19 of 27 weeks free**, or how many weeks the venue is closed. An hour that is not for sale at all says so - the venue is closed then, or the court is held back from season sales.

### Clearing the weeks that are not free

A season slot is sold as a complete run, so blocked weeks have to be cleared before the hour can be sold. The drawer offers two ways out, per row:

* **Move it to** - relocate the booking standing in the way to another free court. A moved booking is marked as moved out of the way, so the next person to look at the calendar can see why it is not where it was.
* **Or move the whole hour** to a court that is free for the whole season, chosen from the list the drawer offers.

Hard stops cannot be moved, and another season's contracted week is never moved without confirmation.

### Paid now, or paid later

Either way the courts are held from the moment you sell, and the charge is recorded. The difference is only the money:

* **Paid now** takes the payment at the desk through your usual payment methods.
* **Not paid now** leaves the pass pending until the money arrives. The weekly series is the hold, so nobody else can take those hours in the meantime.

If something takes one of the hours while the sale is being written, nothing is booked at all: the drawer tells you, recalculates the price, and lets you try again. You never end up with half a contract.

## How the price is worked out

A season pass has no fixed price. It costs the sum of the prices of the weeks it will actually book, with the volume discount applied once to that sum.

1. **Every occurrence is priced** by your active pricing rules, on the venue clock, so a Tuesday 19:00 hour picks up your peak rate and a Wednesday 10:00 hour picks up your day rate.
2. **The weekly hours are totalled** across the whole remaining season.
3. **One volume discount** is applied to the total, from the [season's ladder](/settings/seasons), based on how many hours a week the member is holding.

Nothing is prorated and no week count is stored, which is why a mid-season sale needs no special rule: it simply buys fewer weeks at the same rates. It is also why holiday closures, refunds and makeup credits stay ordinary arithmetic.

## What the holder gets

* **Every remaining week is booked** against their name on the courts they chose.
* **The calendar marks those hours** with a small season icon labelled with the season's name, so a contracted week never reads as a casual booking that has not been paid for.
* **The member rate applies to their other bookings.** A rule you scoped to the season's plan gives the holder their rate when they book an extra hour, on the calendar and at checkout alike. It applies from the moment the pass is sold, not from the season's first day, so a member who buys the winter in September is already quoted their rate for a December hour. Hours before the season starts are still priced at the published rate, and a pass waiting on payment grants no rate until the money is in.
* **Coverage is fenced to what was sold.** The pass covers court time, inside the season's dates, inside the operating hours the plan carried at the moment of sale. Editing the plan in December cannot change what a pass sold in October admits, and a credit cannot be spent after the season ends.

## Missed weeks and makeup hours

When a holder cannot make a week, cancel that week's booking like any other. If the applicable [booking policy](/operations/booking-policies) grants anything back for a cancellation that early, the hour is credited to the pass as a makeup hour.

To replay it, book the member another hour on a court. The pass covers the booking and spends the credit, and the calendar marks that booking as the season's too, so a replayed hour does not look like unpaid court time.

Two things to know:

* **A pass sitting at zero remaining is normal, not exhausted.** The sale spends the season's hours up front on the weeks it books, so zero is where the pass rests. It returns to zero after each makeup is replayed.
* **Credits expire with the season** and can only be replayed inside the hours the pass was sold for. A credit earned on an off-peak hour cannot be replayed at peak.

## Cancelling a season pass

Cancel from the [Memberships](/members/memberships) list or the membership detail page. A season pass opens its own cancel dialog rather than the generic one, because ending it has to release the courts and close the pass together.

The dialog tells you what the weeks not yet played are worth, then asks two things:

* **Refund** - what the gym is giving back. It starts at nothing on purpose: a refund is a decision, not a calculation, and nothing in a typical gym contract makes a season pass refundable. Entering more than the unplayed weeks are worth is allowed, with a note pointing it out.
* **Reason** - recorded with the cancellation.

Confirming does all of it in one atomic step: every remaining hour is released, the weekly series stops, and the pass is closed. A season pass is never released court by court.

The refund goes back the way the money came in - a card payment reverses through the gateway, wallet credit returns to the wallet, and anything else is returned as cash at the till or as wallet credit. If the cancellation succeeds but the refund does not, the dialog says so plainly: the pass is cancelled, and you give the money back from the sale transaction.

## Renewal

A season pass never renews itself. The next season is a fresh sale at the new season's prices, which is how seasonal venues price and how holders expect to be treated.

The **Existing subscribers claim by** date on the season is a note for your own outreach to last season's holders. Nothing is reserved for them automatically and no reminder is sent.

## Current limits

* **Staff sell, members do not.** There is no self-serve season purchase in the member portal or app yet. Members see the resulting pass and its booked weeks.
* **No automated renewal or renewal priority.** Both are manual, helped by the claim-by date you record on the season.
* **Moving a sold weekly hour to another court is API-only.** The admin has no screen for it yet. It moves every remaining week or none of them, and never reprices the member.
* **A freshly sold pass reads as fully committed.** Allowance figures are generic across the platform, and the sale spends the season's hours up front on the weeks it books. So the admin Usage column shows `27 / 27 hours`, and member-facing surfaces (the portal, the app, the booking picker, and the check-in confirmation) show `0 of 27 hours left`. Both are a healthy pass, not an exhausted one. The counter rises only when a cancelled week credits a makeup hour back.
* **Court time only.** A weekly hour is a court, a day and a time. A season slot with a coach attached is not supported.
* **One gym per season.** A pass cannot span two venues.

## Troubleshooting

**Issue**: **Add Season Pass** is missing from the slot menu.

**Solution**: Three things gate it: the clicked date must fall inside one of that gym's seasons, that season must be on sale (check the **Setup** chip under [Seasons](/settings/seasons)), and you must hold the permission to create memberships.

**Issue**: The sale is refused and tells me to configure pricing first.

**Solution**: The quote came to zero, which means no pricing rule matched the hours being sold. Author an hourly rate per time band in [Pricing rules](/settings/pricing-rules) and try again. The quote itself may display zero; only the sale refuses.

**Issue**: A row says some weeks are not free and I cannot sell.

**Solution**: A season slot is sold as a complete run. Use **Move it to** on the row to relocate what is in the way, or move the whole hour to a court the drawer reports as free for the whole season. Weeks when the venue is closed are excluded rather than blocking.

**Issue**: The total does not match my price list.

**Solution**: The price is the sum of the weeks, not a rate times a round number of weeks. Open the itemised **Price** panel and check week by week: a season that is not a whole number of weeks gives some weekdays one occurrence more, and the volume discount applies once to the total, not per week.

**Issue**: The member's pass shows `27 / 27 hours` used the day they paid.

**Solution**: That is correct. The allowance is the hours the pass sold, and the sale spends them on the weeks it booked. The counter rises only when a cancelled week credits a makeup hour back.

**Issue**: A holder's extra booking was charged the published rate, not their rate.

**Solution**: The member rate comes from a pricing rule scoped to the season's plan. Check that such a rule exists and is active, that the booked hour falls inside the season, and that the pass itself still grants a rate: a cancelled or expired pass grants none, and one still waiting on payment grants none until the money is in. See [Which memberships grant a member rate](/settings/pricing-rules#which-memberships-grant-a-member-rate).

**Issue**: I cancelled a week but no makeup hour appeared.

**Solution**: The credit follows the [booking policy](/operations/booking-policies) that applies to the booking. If the policy grants nothing back at that notice, the hour is forfeited rather than credited. Check the policy's cancellation tiers.

## Related

* [Seasons](/settings/seasons) - Define the period and the volume discount ladder.
* [Pricing rules](/settings/pricing-rules) - Hourly rates per time band, and the holder rate.
* [Schedule](/operations/schedule) - Where a season pass is sold and where its weeks appear.
* [Memberships](/members/memberships) - The sold pass, its allowance, and cancellation.
* [Booking policies](/operations/booking-policies) - What a cancelled week gives back.
* [Repeating schedules](/reference/repeating-schedules) - How recurring bookings work in general.
