New host? See how to run a class (photos and steps).
From a teacher signing up, to a class running month after month. Checked against the code on 13 Oct 2026.
flowchart TD A1["Buyer opens
school.cuppathai.com/signup/"] --> A2["Fills in the form:
buyer name and email,
optional host, class name,
school year, nicknames"] A2 --> A3{"Email already
has a school?"} A3 -->|yes| A4["Refused: ask your
teacher to add students"] A3 -->|no| A5["Created: school, teacher,
class and students.
Each student gets
a 4-digit PIN"] A5 --> A6["Class starts on the pack
for the school year:
Mor 2 = pack 1
Mor 3 = pack 11
Mor 4 = pack 21
Mor 5 = pack 31"] A6 --> A7["Setup invoice made,
with a payment reference"]
flowchart TD P1["Buyer pays the setup fee:
PromptPay in baht or
Wise in US dollars.
May upload a receipt"] --> P2["Presses I have paid.
This only puts it in the
Payments hub inbox"] P2 --> P3["Hub staff check the bank
and choose one action:
Paid, Short, Problem
or Cancel"] P3 -->|Paid| P4["Class activated"] P4 --> P8["First pack opens for
one month.
Teacher access code
is made.
Login EMAIL to the host,
and to the buyer
if different"] P8 --> P9["The sign-up page checks
every 10 seconds and
shows the access code,
the class code and
the student PINs"] classDef manual fill:#E3D5BF,stroke:#2A1A0E,stroke-width:2px,color:#000 class P3 manual
| Action | What the buyer sees |
|---|---|
| Short | The amount that arrived and the balance to pay, with the same reference. |
| Problem | The staff note, on the pay screen. |
| Cancel | The unpaid request is closed. A paid class is refunded by hand. |
flowchart TD L1["Teacher types the
access code at /teacher/.
Student types the class
code, nickname and PIN
at /student/"] --> L2["Checked.
Signed in for 1 hour,
then sign in again"] L2 --> L3["Teacher forgot the code?
Types the host email
on the teacher page"] L3 --> L4["EMAIL with the access
code, class code and
every student PIN"]
flowchart TD W1["The month's pack:
4 scenes of 12 phrases"] --> W2["One scene per week.
The last week runs to the
end of the month.
Earlier weeks stay open"] W2 --> W3["Student dashboard:
This week's homework"] W3 --> W4["1. AI scoring of the
12 phrases
(Lesson Player)"] W3 --> W5["2. Practice games on the
same 12 phrases"] W4 --> W6["Teacher dashboard: each
student's progress, stars
and a suggested grade,
A to C+"] W5 --> W6
| Extra | Who | What it is |
|---|---|---|
| Class Mode | Teacher | The host leads the lesson for the whole room on a TV. It saves only the class's place (4 tries per phrase), never a student's score. |
| Homework AI scoring | Student | The Lesson Player at home: 3 tries per phrase, 4 stars passes. After 3 tries without a pass the student gets a Special Pass (counted as Honorary on the teacher dashboard) and moves on. |
| Voice Lab | Student | AI pronunciation practice. 1 credit per scored try. Free credits are topped up each time a new pack opens. |
| VOCAP | Student | The word game, unlimited. |
| EPUB | Teacher, student | The month's lesson book, to download. |
Seats are paid month by month. Nothing here is sent by email or phone alert: the dashboards show it.
flowchart TD Q1["Host opens How to pay
on the teacher dashboard"] --> Q2["Invoice for seats owed.
PromptPay only.
Reissued if the
roster changed"] Q2 --> Q3["Pays and presses
I have paid"] Q3 --> Q4["Hub staff confirm
in the Payments hub"] Q4 --> Q5["Seats counted as paid.
A paused class restarts"] classDef manual fill:#E3D5BF,stroke:#2A1A0E,stroke-width:2px,color:#000 class Q4 manual
flowchart TD
G1["A seat is unpaid"] --> G2{"Added in the
middle of the
month?"}
G2 -->|no| G3["Due 5 days after
the pack began"]
G2 -->|yes| G4["Due 3 days after
it was added"]
G3 --> G5["Student dashboard:
seat unpaid, N days left.
Teacher dashboard:
warning and unpaid names"]
G4 --> G5
G5 --> G6["Due date passes:
seat paused. The student
cannot start homework
until it is paid"]flowchart TD
M1["The pack's month ends"] --> M2{"Was at least one
seat paid during
that month?"}
M2 -->|yes| M3["Next pack opens by itself.
Voice Lab free credits
are topped up"]
M2 -->|no| M4["Class paused:
no new pack,
nothing is billed"]
M3 --> M6["Seats are due again
for the new month"]
M4 --> M5["Host pays the seats.
Class restarts on the next
pack, from that payment"]| Notice | Dashboard | |
|---|---|---|
| Access code, class code and PINs, after the setup payment | yes (host, and buyer if different) | yes, on the sign-up page |
| Forgotten access code | yes | no |
| Payment short, or a problem with the receipt | no | yes, a note on the pay screen |
| Payment received (seats) | no | yes, the banner turns to all seats paid |
| Seat unpaid, days left | no | yes, teacher and student |
| Seat paused | no | yes, teacher and student |
| Class paused (no seats paid in the month) | no | yes, teacher, with a Restart button |
There are no phone alerts or inbox messages in the village school.