Enroll members manually, send payment links, track installments, and handle refunds.
Open the event from the Events page. The bookings list at the bottom shows everyone enrolled so far, with status tabs: All (every live booking — confirmed, pending, waitlisted, completed), Confirmed, Pending (booked but not yet paid/approved), Waitlisted, Completed, and Cancelled. Cancelled bookings only appear under the Cancelled tab, so abandoned or test bookings never clutter the default view.
On the event manage page, click "+ Add booking". Search for the member, pick the option, and (if the event allows both) pick Full or Installments.
On a booking that still has an outstanding installment, the "Collect payment" panel has a Checkout link / Stripe Invoice toggle.
On the event's Payment step, choose Full / Installments / Both, then set how many installments (2–12, default 3).
In the Cancel Booking panel there's a checkbox "Email the member about this cancellation" — on by default. Untick it when you're cleaning up a test booking, or when you've already told the member out-of-band and don't want a cancellation receipt landing in their inbox. Waitlist promotion emails (if someone moves off the waitlist into the freed spot) still fire — that one's about the promoted member, not the cancelled one.
"Process Refund & Cancel" sends the amount back to the card payments on the booking — newest payment first, including one paid through a Stripe Invoice — and then cancels. Money you recorded as paid offline never went through Stripe, so that part is yours to return. If a card refund can't be made (Stripe turns it down, or a payment has no card charge behind it, such as a Stripe Invoice you marked as paid by hand), the booking is NOT cancelled and the panel says why — the member is never emailed about a refund that didn't happen. Lower the amount, or use "Cancel without Refund" and return the money yourself.
For events with an application form, click a booking to see the answers. Approve or reject before sending a payment link.
On the booking page, click "Edit details" to update the guest's name, email, phone, your internal notes, and every application-form answer — dietary needs, emergency contacts, anything they sent you after booking. Save, and the changes flow straight into the Day-of operations sheets (rosters, emergency, dietary), so a guest who emails "actually I'm gluten-free now" is reflected on the printout without re-collecting the form.
Retreat guests often hand their spot to a friend or swap with someone else. On the booking page, click "Replace attendee", enter the new person's name, email, and (optionally) phone, and confirm.
Each booking page shows every installment, when it's due, and whether it's paid. Failed cron charges are flagged so you can re-send a payment link.
The Manage page for the event shows a "Payments past due" panel whenever a live booking has a payment that came and went unpaid — who it is, which payment, how many days late, and the total. Each row links straight to that booking, where "Send payment link" and "Mark paid (offline)" live. Cancelled bookings are left out, so the total is money someone actually still owes you.
Migrating from another platform, or took a cash/bank-transfer payment? On the booking page, each pending installment has a "Mark paid (offline)" link. Click it to record that installment as settled — no card is charged and Klasly never touches Stripe for it.
If someone cancels, Klasly calculates the refund amount based on your cancellation policy. You can adjust the amount manually before processing.
On the event page, click "Closeout" for a single screen that answers "is this event finished?".
You don't have to email every unpaid add-on guest at once. In a slot's "Bookings" panel, every unpaid booking has a "Payment link" button that opens that booking's pay QR code along with "Copy link" (paste it into a text message or show the guest the code) and "Email link to guest" (sends it straight to their inbox, throttled to one send per five minutes). The Closeout screen offers the same per-guest control: each row under "guests who haven't paid" has its own "Email link" button, so you can nudge one person without mailing everyone else.
Guests who leave without settling get followed up without you doing anything.
Open the event's Manage page → "Add-on services" → the slot → "Bookings". Each booking lists the guest's name with their email and phone number underneath; both are links, so on a phone or tablet you can tap to call or write without copying anything out. The phone number only appears if the guest typed one — it is optional at the kiosk and on your public event page, so some bookings will show an email alone. The same details print on the Add-on Appointments sheet under Day-of operations, in a "Contact" column, for staff working away from a screen.
A practitioner opens "My Earnings" in their own portal and, under "What you were paid", sees each payment you have made for that month with the date, and underneath it the itemised work behind it — retreat add-on sessions with tips included, appointment shares, class and pass earnings, and any bonus you added, with the note you typed on it.
When a guest books a session for a friend, the booking carries the friend's name but the booker's own email and phone — so the roster shows two lines under one name, and any payment link goes to the wrong inbox. The "Edit" button on a booking in a slot's "Bookings" panel fixes exactly that: change the guest's name, email and phone, and save.
The "Cancel" and "Move" buttons in a slot's "Bookings" panel keep working after the event is over, so you can clear no-shows and put mis-booked sessions where they actually happened whenever you get to them — cancelling a booking also stops any remaining automatic payment reminders for it.
When someone starts booking on your public page and closes the tab before paying, their spot would otherwise be held forever — and it still counts against "spots remaining", so a nearly-full event can look sold out when it isn't. Klasly now handles this: about half a day before the hold runs out the guest gets one "your spot isn't confirmed yet" email, and if payment still hasn't arrived after two days the booking is cancelled, the seat goes back on sale, and the guest is told it was released (nothing was ever charged). Before either email goes out, and before anything is cancelled, Klasly checks with Stripe directly: if the guest did pay and the booking just hadn't caught up, it is confirmed on the spot instead — the same check runs when you release seats by hand.
There's also an optional "Discount code" field — type any code from Settings → Discount codes (e.g. a family-discount or month-long site-wide promo). If the member has a tag that matches an auto-apply code, you can leave the field blank and Klasly picks the best one. The discount is applied to the total before the installment schedule is computed, and it's recorded against the member's usage limit. The booking is created as pending payment — no card is charged yet — and Klasly opens the booking page so you can send a payment link.
Checkout link (default) gives you "Copy" or "Email" — a single-page Stripe Checkout; paying it saves the card, so whatever installments remain auto-charge on schedule (this works on any installment, including the second one of a plan whose first payment you took in cash). Stripe Invoice gives you the same Copy/Email pair but issues a proper invoice with PDF, line items, and customer info — good for accounting.
Klasly splits the total evenly and spaces payments 30 days apart starting at booking. If the event starts soon enough that 30-day spacing would push the last installment past the event, Klasly auto-compresses the spacing so the last payment lands ~7 days before the event begins — the Payment Preview shows the actual dates and warns you. The preview assumes someone books today — each attendee's real due dates count from their own booking date, so a booking made three months from now gets dates three months later. If even compressed spacing won't fit, all installments collapse to booking day and a red warning appears; switch to Full payment or push the start date out. The opposite also surprises people: for an event far in the future, spacing stays at 30 days, so someone booking today finishes paying long before the event — a July 2027 retreat set up today previews due dates in 2026. That is correct, not stale data, and the preview now says so; the dates never move when you change the event's dates.
The spot keeps its option, total, and payment schedule — only who holds it changes, so nobody is re-charged and nothing already paid is lost. If the new person's email is already a member in your studio, the booking re-links to them automatically (and shows up on their member profile); otherwise they're held as a guest. The new attendee gets a confirmation email (with a waiver reminder if the event requires one), and the previous guest's dietary and emergency answers are cleared so the Day-of sheets don't carry the wrong info. To instead remove someone entirely and start fresh, cancel the booking and use "+ Add booking".
The installment shows an "offline" tag, the booking's payment status updates (partial / fully paid), and a pending booking is promoted to confirmed just like a real payment would. To add someone who already paid in full elsewhere, use "+ Add booking" then mark every installment paid offline. Made a mistake? "Undo offline" reverts an offline-marked installment back to pending.
The top row shows what came in (add-on takings and tips), what guests still owe you, and what you still owe practitioners. Below it, only the work that is genuinely left: practitioners waiting to be paid — settle everyone in one go with "Pay all now", pay a single practitioner with the "Pay" button on their row (useful when one payout needs checking before the rest, or your card can only cover part of the total today), or click "Paid by hand" for anyone you settled in cash — guests who received a session and never paid (each row has its own "Email link" button to nudge just that guest, "Email pay link to all" to nudge everyone at once, and "Mark paid" for a guest who handed you cash; each row shows the email address the link would go to, and flags a guest who already paid for another session at the same event, which usually means one person is on the list twice — often because a friend booked the second session under their own address), and registrations nobody ever paid for that are still holding seats (tick the ones to release). Each block disappears once it is empty, so an event with nothing outstanding looks finished at a glance. At the bottom is a per-practitioner table — sessions, what was collected, their share, and whether they have been paid — with a "Download CSV" button next to it. That file is the one to keep for your books: it carries the summary totals, the full practitioner table, and every outstanding item, with amounts written as plain numbers so your spreadsheet can add them up.
Manual sends share the same timer: if you press "Email link to guest" yourself, the automatic reminder holds off for about 20 hours, so a guest never gets two nudges in the same day. Reminders stop the moment the booking is paid or cancelled. The Closeout screen shows "reminder N of 3 sent" next to each unpaid guest, so you can see who has already been nudged before deciding to push again by hand.
It matches your own Payouts screen because it is the same calculation.
Nothing else about the booking moves — same time, same price, same payment status, same signed waiver — so use "Move" to change the time and "Cancel" if the session never happened. Two details worth knowing. The email can be left empty: a wrong address is worse than none, because pay links and reminders would go to a stranger. And the waiver keeps the name of whoever actually signed it, since that is the legal record — if it no longer matches the guest, the booking shows "Waiver signed as [name]" underneath rather than quietly hiding the difference. Every edit is recorded in your Activity feed.
Use "Move" when the session went ahead under a different time or practitioner than the booking says: it keeps the guest's record and, when the practitioner has not been paid yet, moves what you owe to the person who actually did the work. Use "Cancel" when it never happened at all — that also drops it out of what you owe.
When that day arrives you get one email per payment, naming the guest and the amount, with a link to the booking. Send them a payment link to close it: paying it saves the card, and the rest of the plan collects itself from then on. Mark it paid instead if you already have the money.
An installment Klasly cannot collect now emails you.
That includes a first payment that never arrived — a booking you entered by hand, or one whose guest was going to pay you directly. Klasly waits three days past the due date first, so a checkout still in progress is never reported, then emails you once and lists it under "Payments past due" on the event. It is never charged automatically: a first payment is what saves the card, so until it is paid there is no card to charge.