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.

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.

฿0foreverFree · Up to 20 members
฿2,490/moPro · Up to 200 members
฿4,990/moMax · Unlimited members

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