Muay Thai camp software for students who stay two weeks
Week packages, class cards and single sessions, paid in cash and by PromptPay at the desk. Morning and afternoon capacity, a waitlist in high season, and prices in baht.
- Free forever
- No credit card
- No sales call
- 20+studios run their day on it
- 4countries, Thailand first
- 10languages, including Thai
- 0%commission on what you collect
Your roster changes every Sunday
A city studio sells a year and renews it. A camp sells ten days to somebody who landed on Saturday and will not be back until next season. Almost every gym tool is written for the first one.
Nearly everything a camp sells is paid before the first session and never renews: a week of twice daily training, a card of ten classes, one session for somebody passing through on a motorbike. There is no card on file to charge next month, because for that student there is no next month.
Software built around the monthly subscription makes you fight it every single time somebody walks in with cash and a fortnight.
The orders of magnitude are public, and a manager here knows them better than we do. Guides written for students travelling to train put one session in a Phuket camp at roughly 400 to 800 THB, a week with accommodation at roughly 10,000 to 20,000 THB, and a month of dedicated training at roughly 8,000 to 15,000 THB.
Whatever your own card looks like, the shape does not change: a large prepaid amount on arrival, then nothing, then somebody new.
Ranges published by RoamFit and MuayThaiBase, two guides written for students travelling to Thailand to train. They are outside estimates, not our figures, and your own prices are the only ones that matter.
MoveMembers sells all of it as products you write yourself, and several can sit on one profile at the same time, each with its own price, validity and credit count. Credits come off when a session is booked and go back in full when it is cancelled.
A student who arrives on a week package and extends for a month keeps both in her history, and the front desk never has to end one thing to start another.
- Week packages, ten class cards and single sessions, priced and named by you
- Several packages on the same profile at once, each with its own validity and credit count
- Credits come off when a session is booked and return in full when it is cancelled
- Unlimited packages for long stay students, with no credit ceiling to manage
- A package frozen with a reason, its end date pushed back by the exact number of frozen days
- Numbered PDF receipts carrying your tax rate, tax number and footer
- Prices, receipts and reports in baht, not converted from dollars
Not everybody pays the same, and everybody knows it
Almost every camp has more than one price for something that looks identical from outside. This is the point where software written somewhere else starts pushing you back towards a notebook.
The straightforward way is separate products: one for the people who live down the road, another for somebody who flew in for a fortnight, each with its own price, validity and credit count. You write as many as you need.
For the student who paid before boarding, you can have the validity start at the first session rather than the day the transfer landed, so nobody loses days to a flight.
Two things then make prices genuinely differ without a second ledger. A pack can be tied to a discipline, so a ten session Muay Thai card cannot be spent on the BJJ class next door, which matters the moment you teach several disciplines at several prices.
And a session can be told what it costs: the Saturday clinch with three kru on the floor takes two credits, the Sunday morning run the camp puts on takes none. Same student, same pack, different price per session.
One to one training carries its own rate inside the same product, so nobody retypes the amount from memory and mistypes it on the twentieth sale.
When a couple or two friends want to train together and pay once, you set how many people share the pack, counting the holder as the first of them, because that is how a camp says it at the desk.
Then there are discounts, which every camp gives every week and almost nobody writes down: something off for a kru's friend, for the student who stayed three months, for the kids from the village. Each one is recorded with its reason alongside the sale, so six months later the price still explains itself.
Now the limit, plainly. There is no rule that decides who deserves which price, and no nationality field that picks a rate for you. Somebody at the desk can still sell the wrong product to the wrong person.
This software records, it does not police, and a camp that wants an automatic guardrail should know that before it chooses.
- As many products as you care to write, at as many prices, for things that look identical from outside
- A pack tied to one discipline, so ten Muay Thai sessions cannot be spent on the BJJ class next door
- A session that costs two credits, or none at all, set on the session itself and not on the pack
- A private rate held on the same product, so nobody retypes the amount from memory on the twentieth sale
- How many people share one pack, the holder counted as the first of them
- Validity that starts at the first session instead of the day of payment, for somebody who paid before the flight
- Every discount recorded with its reason, so six months later the price still explains itself
Two sessions a day, and the afternoon one fills first
Technique at seven in the morning, clinch and pads at four, and a Saturday that looks nothing like a Tuesday. Capacity is where software for a camp earns its place or fails.
Capacity lives on the session and can be overridden on a single date, so the Monday after a public holiday takes thirty without changing the recurring class underneath. When a session fills, the waitlist books the next student and tells them the moment a place opens.
A single session can be cancelled on one date and reopened later, and a closure day is declared once for the whole timetable rather than session by session. The class booking system page walks through every one of those settings.
Attendance is recorded per session and per student, whether they checked in at the desk, on a tablet by the door or from their own phone. Trainers are attached to the sessions they take, so at the end of a week you can see who actually ran what, which matters when pay depends on it.
Two or three times a year the timetable is not the timetable. A kru comes over from another camp for a day, a two day course opens, a team arrives to prepare for a fight.
Those go on as one-off sessions: give the session a date instead of a weekday and it happens once, with its own capacity, its own kru, its own waitlist, and its own credit cost, two credits because it is a special course or none because the camp is putting it on.
The limit, said plainly: a five day course is five one-off sessions rather than one object with one price and one list of names. If you want to sell it as a block, the way that actually works is a product for the course, tied to the discipline the course runs under.
Whoever buys it can only spend it on the course's sessions, and the credits left over cannot leak into your ordinary timetable.
Capacity on the session, not the week
Twenty on the morning technique class, thirty on the Saturday clinch session, and a hard cap on the ring when only two pairs of pads are free. Set on one date alone, without touching the recurring session underneath.
A waitlist that fills the gap
When a session is full, the next student is booked and told the second somebody drops out. In January that is the difference between a full ring and a queue of people who paid for the week.
A buffer between two sessions
Clearing a ring, wiping down and getting one group out before the next arrives takes real minutes. Declare the buffer once and the timetable stops pretending otherwise. Closure days are declared once too, for the whole schedule.
Cash, a QR code, and a receipt somebody can keep
A camp is not a direct debit business. Most of the money arrives at the desk, in cash or through a QR code, in the ten minutes before the first session of the day.
That is the country, not the camp. PromptPay recorded 2.38 billion transactions in the single month of May 2026, on more than 90 million registrations, and the merchant cost of a QR transfer is nil or close to it against roughly 1.5 to 2.5 percent on a card.
Telling a Thai business to move its members onto cards is telling it to start paying a fee it does not pay today.
PromptPay volumes as reported by The Nation, card fee comparison from Xendit's guide to QR payments in Thailand. Both were read in 2026 and are worth rechecking before anyone quotes them again.
So cash, bank transfer, PromptPay and card are all first class payment methods, and you decide which ones your desk offers. Every payment lands on the student's profile with a numbered PDF receipt carrying your tax number.
Gloves, wraps, oil and water are sold on the same screen with stock counted down, and a tab can stay open through a stay and be settled on the last day.
One thing said plainly, because it is the question every owner asks. A static PromptPay QR does not tell any software who paid. The transfer reaches your bank, not your gym software, and nobody can honestly promise you automatic matching from a printed code.
Somebody at the desk still marks the payment against the student, which takes seconds and keeps the receipt, the balance and the reports true. Online payments run through your own Stripe account, and no commission is taken on your bookings.
Somebody walking in without booking is the ordinary case at a camp, not the exception, so the desk starts with two fields. A name, a phone number, and that person has a profile and is on the session list in the same movement. The rest of their details wait until the day they decide to stay another week.
And for the visitor who buys water and a pair of wraps and is never seen again, you can sell without creating anybody at all, while the takings still land in the same book as everything else.
Here is the limit that belongs next to it. Every check-in is attached to a session on the timetable. There is no bare visit record, nothing that says somebody came in, hit the bag on their own and went home again.
A camp that opens its floor outside the timetable and wants those people counted needs a session on the schedule to check them into, an open training slot running through the day will do, but it has to exist. Better read here than found out after an import.
- Cash, bank transfer, PromptPay and card recorded as first class payment methods
- You choose which methods your desk offers, and the receipt names the one used
- Gloves, wraps, oil and water sold on the same screen, with stock counted down
- A tab left open through a stay and settled on the last day
- Part payments, refunds and an outstanding balance followed to the day
- Online card and PromptPay through your own Stripe account, with no commission on your bookings
What the camp owes, worked out from what actually happened
The rounds on the timetable and the one to one work are two different pay questions, and most software answers neither of them for a camp.
For the group rounds, a flat rate for the session plus a bonus for each person who actually checked into it. Set the camp default once, then give a rate of their own to the kru who has one.
A kru with no rate of their own falls back on the camp default rather than quietly on zero, which is the kind of silence that costs somebody their month.
Before any pay appears at all, the camp answers one question: are you paying for sessions that were on the timetable and not cancelled, meaning the kru turned up, or for sessions where at least one person checked in, meaning it actually ran? Both policies exist in Thai camps and they give different numbers.
Until you answer, the screen shows no pay whatsoever. That is deliberate rather than unfinished: a plausible looking guess is the worst possible thing to produce about money leaving somebody else's pocket. And when a kru covers for another, the one who took the session is the one credited, not the name on the class.
One to one training is the second question and has three shapes: the camp takes a percentage, the camp takes a fixed amount per session, or the kru rents your time and collects from the student directly, setting their own price.
The two sides are not handled the same way, and it is worth knowing before you plan around it: group sessions total by month, a month can be marked as paid and its amount is then frozen, and they export as CSV over the dates you choose.
One to one shows as a running total since the beginning, with no date range and no export. If you settle it monthly, you read it off the screen and write it down yourself.
Say the limit as clearly as the rest. This is not payroll. There is no social security calculation and no payslip, and while hours worked are shown, the pay multiplies sessions rather than hours.
What it answers is who is owed how much and what has already been paid, which is what camps actually argue about at the end of the month.
- A flat rate for a session plus a bonus for each person who actually checked in
- One camp default set once, and a rate of their own for the kru who has one
- The person who took the session credited, not the coach whose name is on the class
- Cancelled sessions and closure days out of the count, and nothing counted beyond today
- Private training as a percentage to the camp, a fixed cut per session, or the kru renting your time
- A month marked as paid, its amount frozen, and a CSV export over the dates you choose
Full in January, half empty in June
The guides written for travelling students describe the same year all along the coast: a peak from November to February when the good camps are booked a month ahead, and a quiet stretch from May to October.
Treat that as a description of demand rather than as your accounts, because it comes from guides for travellers and not from anybody's books. Your own year is the one to build for, and two conversations with neighbouring camps will tell you more than any article.
What is worth noticing is that the two halves of the year break different things.
In season, the thing that breaks is capacity: a session sized for twenty with thirty people standing in it. Caps, a per date override and a waitlist are the difference between a full ring and a room nobody enjoys.
Out of season, what matters is freezing a long stay package without stealing the days somebody already paid for, and being able to see which weeks actually paid for themselves.
Here is the limit that goes with it, stated rather than buried. Reports cover this month, the last thirty days, this year and all time, with revenue by package and by discipline, attendance and retention, plus a full CSV export of payments and attendance.
There is no season against season view: comparing last November with this November means exporting both and putting them side by side. If that is the report your year turns on, you should know it now.
Foreign students, Thai trainers, one system
The kru does not want an English interface, and the student who booked from Stockholm does not read Thai. Both are on the same mats at four o'clock.
Everybody picks their own language and the software ships in ten of them, Thai and English included, with the student portal translated the same way. A Thai front desk and a foreign manager work in the same camp, on the same data, without either of them having to switch to the other's language.
Messages follow the same logic. LINE is two way and connected from your camp's own official account, which is how Thai students and Thai staff already talk. WhatsApp goes out through the templates Meta has approved for your account, which is how a student who has flown home stays reachable when they plan their next trip.
SMS and email cover the rest. Replies on LINE arrive in a shared inbox and stay attached to the student's profile, while WhatsApp and SMS are outbound only, and it is better you read that here than find it out in February.
- Ten interface languages chosen per person, Thai and English included
- Student portal in a browser, added to a phone home screen, nothing to install
- LINE connected from your camp's own official account, replies landing in a shared inbox
- WhatsApp messages through your approved templates on Max, for students who have flown home
- Booking confirmations, reminders and receipts sent without anyone typing them
- Your own waiver, signed with a finger at the desk and kept as a PDF
Everything above is the camp version of a wider subject: running a gym or a camp in Thailand covers the PromptPay QR at the desk, the receipt that carries your tax number, what the PDPA asks of you, and why your booking page turns up on Google.
Free up to 20 active members, then 2,490 THB a month up to 200 members and 4,990 THB unlimited. Billed in baht, published, never a quote.
Prices shown in THB.
What camp owners ask before they switch.
Do you manage rooms and accommodation?
No, and it would be easy to pretend otherwise on a page like this. MoveMembers holds the training side of what you sell, including the week package a student pays for on arrival, but it does not allocate beds, block rooms or price a low season night.
If accommodation is half of your revenue, keep whatever you use for rooms and let MoveMembers carry the training, the money and the attendance. Knowing that now is worth more to you than discovering it after an import.
Somebody walks in at ten to seven for one session. How long does that take?
Long enough to take the money, and no longer. Create the student, sell a single session, record cash or a PromptPay transfer, check them in. The receipt is numbered and can be handed over or emailed.
If they come back on Thursday they are already in the system, and if they buy the week on Wednesday the single session they already paid for is still in their history.
Can students book before they arrive in Thailand?
Yes, once you switch online booking on. The student portal opens in a browser, in their own language, and shows the timetable, their remaining credits and their receipts. You set the booking window, the cancellation cutoff and what happens to a credit when somebody cancels late.
Students who prefer to book at the desk carry on booking at the desk, and both land in the same place.
How does PromptPay actually work here? Be precise.
Precisely, then. A static PromptPay QR does not tell any software who paid: the transfer arrives in your bank account, not in your gym software, and nobody can honestly promise you automatic matching from a printed QR.
What MoveMembers does is treat PromptPay as a real payment method, so the desk records the transfer against the student in a few seconds and the receipt, the balance and the reports are right. Online payments, card and PromptPay where your Stripe account has it enabled, run through your own Stripe account.
Do you take a commission on bookings?
No. You pay for your plan and your own Stripe processing fee, and nothing else. There is no marketplace cut on a student, a package or a session, and nobody else is selling your sessions on a platform you do not control.
Can I compare this high season with the last one?
Not inside the software, and that is a real limit rather than a missing button. Reports cover this month, the last thirty days, this year and all time, with revenue by package and by discipline, attendance and retention.
Payments and attendance also export as CSV files, so comparing last November with this November means exporting both and putting them side by side in a spreadsheet. If that comparison is the report your year turns on, you should know it before you switch.
Half our students are Thai fighters who pay nothing. Does that break the pricing?
It does not break anything, but be aware of how it counts. A fighter on the team is a member like any other, with a package priced at zero or no package at all, and their attendance, grades and history are recorded the same way.
They do count towards the active member limit of your plan, because the plan counts active members rather than paying ones. For a camp with a large free fight team, that is worth doing the arithmetic on before you choose a plan.
A kru is coming from another camp to teach a two day course. Where does that live?
As one-off sessions. A session normally sits on a weekday and comes back every week; give it a date instead and it happens on that day only, with its own capacity, its own kru, its own waitlist and its own credit cost.
Say the plain part too: a five day course is five one-off sessions, not a single object with one price and one list of names. What holds it together is the product you sell for it, tied to the discipline the course runs under, so the sessions somebody buys for the course cannot leak into your ordinary timetable afterwards.
How do you work out what we owe each kru at the end of the month?
For sessions on the timetable, a flat rate per session plus a bonus for each person who actually checked in. Set the camp default once and give a rate of their own to whoever needs one, so nobody quietly falls to zero.
Before any figure appears, you answer one question: are you paying for sessions that were on the timetable and not cancelled, meaning the kru turned up, or for sessions where at least one person checked in, meaning it ran?
Both are real policies in real camps and they give different numbers, so until you answer, no pay is shown at all. When somebody covers a session, the person who took it is the one credited.
Private training is separate, with three models: a percentage to the camp, a fixed cut per session, or the kru renting your time and collecting from the student. What this is not is payroll. There is no social security calculation and no payslip, and hours are shown but the pay multiplies sessions rather than hours.
Is there an app my students download from the App Store?
There is no native app on the stores. The student portal opens in a browser and can be added to a phone home screen, where it behaves like an app for booking, credits, receipts and documents.
Reminders reach students on LINE or by email rather than as push notifications, and on Max your automated messages can go out on WhatsApp too, which for a camp is the right way round: a student who flew home last month still reads WhatsApp, and would never reopen an app.
A student who lands on Saturday should be training on Sunday.
Start free up to 20 active members. Write your packages, set your sessions and take the first payment this afternoon.
- Free forever
- No credit card
- No sales call