02 — User Personas (Payments)
Roles that touch payments, with exact permissions from
permissions.constants.ts.
Accountant (primary)
- Goals: record payments quickly, issue receipts, refund accurately, reconcile gateway outcomes, keep invoices PAID/PARTIAL correct.
- Pain points: manual ledger duplication; verifying gateway outcomes; refund mistakes; money displayed as floats.
- Frequency: daily (collection peaks on due dates).
- Permissions (defined, not yet enforced):
payments.read,payments.process,payments.refund,payments.reconcile,receipts.read,fees.collect. - Needs: quick payment form (amount prefilled from invoice), receipt preview, refund guard rails (reason required by process), status history.
- Restrictions: no academic write access.
- Mental model: "payment completes an invoice; refund reverses it; reconcile fixes a pending state."
- Expected behaviour: every completed payment instantly produces a receipt; invoice due amount updates immediately.
Receptionist / Bursar
- Goals: take counter payments (cash/cheque/bank transfer) and hand the payer a receipt.
- Pain points: slow forms when parents queue; wrong-payer mistakes.
- Frequency: several per day.
- Permissions: as delegated by org (client-gated; server enforcement
(planned)). - Needs: payer search/autofill, prefilled amount from invoice, print/share receipt.
- Restrictions: should not refund without approval (client-gated).
- Mental model: "cash register."
- Expected behaviour: under 60 s per payment.
Org Admin
- Goals: monitor collections, drill into a payment, resolve disputes, reconcile.
- Pain points: duplicated payment records across modules (see dual-schema issue).
- Frequency: weekly review.
- Permissions: same payments.* set.
- Expected behaviour: payment list filterable; every payment traceable to invoice + receipt.
Parent (forward-looking)
- Goals: see payment status, get receipts, pay online.
- Pain points: no self-service today.
- Restrictions: only own linked children's invoices (privacy boundary
(planned)). - Expected behaviour: push notification on
PaymentProcessedfor their invoice.
System actors
- Gateway (async): calls back / accountant reconciles via PATCH.
- Event bus:
PaymentProcessed/PaymentRefunded→ WS broadcast to tenant room; audit logging via global pipeline.