A client asks "how many sessions do I have left", the cashier flips through the notebook counting check marks, and two people remember two different numbers. A prepaid package is money the client has already paid for sessions not yet done. Get one session wrong and either the spa works for free or the client loses trust. The safest way is to record each event as one line and let the spreadsheet add them up, instead of editing a "remaining" number by hand.
This is article 1 in a two-part series on spa packages. This article builds the ledger structure and converts your old notes; article 2 reconciles the remaining sessions and finds unusual lines. Unlike the article on weekly summaries from three files (in Vietnamese), here money received does not mean sessions delivered.
The task and the outputs
- Package ledger structure: each line is one event (sale, bonus, use, returned session, refund, extension), with sessions added or deducted.
- Old notes converted into lines, with [MISSING] wherever information is not enough.
- A list of points to confirm before you trust the remaining count.
Step 1: collect notes and replace client names with codes
Collect the notebook, receipts and booking messages. Before giving anything to AI, replace client names and phone numbers with codes (KH01, KH02), and keep the code-to-name lookup table on the spa's own computer. Simulated notes used in the test:
KH01 bought a 10-session neck and shoulder massage package 2,500k on 03/06, valid 6 months.
KH01 used 05/06, 12/06, 12/06, 20/06.
KH02 bought a 5-session skincare package 1,750k on 10/06. 1 bonus session added.
KH02 used 15/06, 01/07. 08/07 spa canceled the booking, "returned the session".
KH03 bought a 10-session herbal hair wash package 1,200k on 01/05, shared with her mother (KH03-M).
KH03 used 3 times, KH03-M used 2 times.
KH04 bought a 6-session package 1,800k, used 2, asked for a refund of the rest on 26/07, manager agreed to refund 50% of the value of unused sessions.
KH01 extended by 2 months on 20/11, free of charge.
Step 2: ask AI to build the ledger

You are helping a small spa standardize its prepaid package tracking ledger. Client codes are fake. THE CASHIER'S HANDWRITTEN NOTES (verbatim): [paste]. TASKS: 1. Propose a standard LEDGER STRUCTURE where each line is one event: transaction code | date | client code | package code | line type (sale, bonus, use, returned session, refund, extension) | sessions (+/-) | amount | session used by | supporting document | notes. Explain each column. 2. Convert the notes above into lines using that structure. Wherever the notes are not enough to fill a field, leave it blank and mark it [MISSING]. 3. A list of points the cashier or manager must confirm before trusting the numbers (possible duplicate lines, shared-use rules, how refunds are calculated, expiry dates...). Do not change any numbers or decide on your own which line is a duplicate; only flag them for a person to check.
Results from the test run
Tổ Thạo Việc (the AI Thạo Việc editorial team) ran it on 2 Oct 2026 in ChatGPT web, temporary chat, Medium level.
- A 10-column structure with clear rules: sales, bonuses and returned sessions are positive; uses are negative; each purchase gets its own package code (do not use the service name as the code, because one client may buy several times); a "session used by" column for shared packages.
- 21 event lines. KH01's two uses on 12/06 were both kept, noted "needs checking, not confirmed as a duplicate".
- It did not add a deduction line for 08/07 for KH02 on its own. AI asked back: before the session was "returned", had the ledger already deducted it? If it was never deducted and you add 1, the balance will be wrong.
- [MISSING] in the right places: the year on every date, supporting documents, the date of each use for KH03's shared package, KH04's purchase date and expiry. The session count and amount on KH04's refund line were left blank.
- Useful points to confirm: whether "50% of the value of unused sessions" uses the package's average unit price, the single-session price or another rule, with AI warning not to simply divide 1,800k by 6; whether the 4 remaining sessions are closed after the refund; whether bonus sessions share the package's expiry, and whether purchased or bonus sessions are deducted first; which date "6 months" works out to before adding the extension.
This run had no number errors. The transaction codes and package codes are temporary codes AI made up, and it said so clearly.
Step 3: finalize the ledger rules
- Decide how returned sessions are recorded: add one back only when there is an earlier deduction line.
- Decide how refunds are recorded: one refund line that deducts all remaining sessions and records a negative amount, with an approver.
- Record expiry as a specific date for each package and each bonus session.
- Write the shared package rule: who may use it, and whether they must register in advance.
- Add supporting documents for every line: receipt number, booking code, signed refund slip.
- No one edits the "remaining" cell by hand. To make a correction, add an adjustment line with a reason.
Self-check
- Is every event its own line, including two uses on the same day?
- Is there a "session used by" column for shared packages?
- Has someone been assigned to fill in each [MISSING] line?
- Have the rules for returned sessions, refunds and expiry been confirmed in writing by the spa owner?
- Are client names kept out of the version you give to AI?
Put it to use and hand it over
Build the ledger in Google Sheets with exactly these 10 columns, and lock the formula columns. The cashier enters a line as soon as an event happens; at the end of the week the manager reviews new lines and documents. If you later use software that can sell and redeem packages, this standard ledger is the data to migrate and to reconcile against in the first month.
Next
Once the ledger has data, go to article 2: reconcile remaining sessions, find duplicate, refunded and expired lines.
Sources & notes
- Square Support Center: Sell and redeem packages: point-of-sale software can sell prepaid packages and redeem them against bookings when clients use them; this article builds an equivalent manual ledger for spas that do not use such software yet. Checked 2 Oct 2026.
- The notes are simulated and the client codes are fake; the prompt was run once on ChatGPT. No commercial relationship with the sources above.



