Chapter 21 — Customer and guardian portal
Home: /portal/
21.1 What the portal is for
The portal is a self-service area for people outside your organisation: customers who want to see their invoices, and parents who want to see their children's records.
It is deliberately a separate area from the staff portal. A portal user signs in with their own account, sees only their own records, and never sees a staff menu — so a compromised portal password exposes one customer's invoices and nothing else.
21.2 Two kinds of portal user
| User | Linked to | Sees |
|---|---|---|
| Customer | A partner (Chapter 5) | Their invoices, payments, fees and campaigns |
| Guardian | A school guardian record (Chapter 19) | Their children's attendance, diary, results and fees |
Both are given access by staff. Neither can register themselves.
21.3 Granting customer access
/partners/<id>/portal/grant/ create the login
/partners/<id>/portal/reset/ reset the password
/partners/<id>/portal/revoke/ withdraw access
- Open the partner and select Grant portal access.
- A user account is created with a generated username and password.
- The credentials are shown once. Copy them before leaving the page, then send them to the customer through whatever channel you normally use.
- Give them the sign-in address for your workspace.
If a customer loses their password, use Reset — a new one is generated and shown once. Revoke deactivates the login while keeping the account and its history, which is what you want when a relationship ends.
Granting access to a partner who previously had it and had it revoked reactivates the existing account rather than creating a second one.
21.4 What a customer sees
/portal/ home
/portal/invoices/ their invoices
/portal/invoices/<id>/ one invoice
/portal/payments/ payment history
/portal/fees/ school fees, where applicable
/portal/fees/<id>/pay/ pay a fee voucher
/portal/campaigns/ campaigns they have contributed to
/portal/campaigns/<id>/ campaign detail
/portal/campaigns/<id>/cost-report/ where the money went
Home
Their outstanding balance, the number of open invoices, payments on record, and their five most recent invoices.
Invoices
/portal/invoices/ lists their invoices, filterable by open, paid or all. Opening one
shows the full document with its lines, subtotal, tax and total, and a print button
that produces a PDF through the browser.
A customer sees only their own invoices. Changing the number in the address to another customer's invoice returns "not found".
Payments
/portal/payments/ lists payments received, with the total, each linking to the
invoice it settled.
Campaign cost reports
A donor who contributed to a campaign can see how the money was spent — but only for campaigns they actually contributed to. Any other campaign returns "not found".
21.5 What a guardian sees
Guardians use the mobile app area at /m/, described in
Chapter 22. In summary:
/m/parent/ home — the children on this account
/m/parent/child/<id>/ one child's record
/m/parent/child/<id>/attendance/ attendance
/m/parent/diary/<id>/ lesson diary and homework
/m/parent/results/<id>/ results
/m/parent/fees/ fee vouchers
/m/parent/fees/<id>/pay/ pay a fee voucher
One guardian login covers every child on that guardian record. Siblings appear together, which is what a parent expects and what the shared guardian record exists for.
21.6 Paying online
The portal does not run a card checkout. Instead it shows the tenant's own inbound payment methods — bank instructions, a QR code, or a link to an external payment page — and lets the payer submit the reference afterwards.
For the customer or parent
- Open the invoice or fee voucher and select Pay.
- Choose a payment method and follow its instructions.
- After paying, submit the payment reference.
For staff
The submitted claim arrives in a pending queue — for school fees, on the fees hub (Chapter 19).
- Check the reference against the bank.
- Confirm it. A real payment is registered against the voucher.
- Or reject it if the money never arrived.
Confirm only against the bank statement. A claim is what the payer says they did.
21.7 Security notes worth understanding
Every portal screen is scoped before anything else happens. Views filter by the signed-in person's partner or guardian record first, and only then look for the document.
Unrelated records return "not found", not "forbidden". This is deliberate. Telling a parent that student 4471 exists but is not theirs leaks the school roll one guess at a time.
The portal has no staff chrome. A portal user navigating to the staff home does not get a menu of your modules.
Nothing sensitive is cached on the device. Pages carrying children's records and family fee balances are fetched fresh each time and are not stored in the browser's cache — see Chapter 22 for why this matters on shared phones.
21.8 Staff routine
Daily
[ ] Clear the payment claims queue against the bank statement
[ ] Grant access for new customers and parents who need it
On any relationship ending
[ ] Revoke portal access
[ ] Revoke guardian access when a family leaves
21.9 Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| A customer cannot sign in | Access was never granted, or has been revoked | Grant or reactivate it |
| They have lost the password | It is only shown once at creation | Use Reset and send the new one |
A staff user is redirected away from /portal/ |
The portal is for portal users only | Staff use the normal screens |
| A customer sees no invoices | None are posted, or they are on a different partner record | Check for duplicate partner records |
| A parent sees only one child | The children are on different guardian records | Consolidate them onto one guardian |
| A parent gets "not found" for their own child | The child is not on their guardian record | Correct the student's guardian |
| A payment claim was confirmed in error | Confirming registers a real payment | Unmatch and reverse it in Accounting (Chapter 12) |
| A customer says an invoice is wrong | They see exactly what is posted | Check the invoice; correct it by reversal, not by editing |