PensbasePensbaseDocs
← Back to pensbase
Payments

Payments

A charge is money owed; a payment is money handed over; a balance is just the difference, computed fresh every time rather than stored anywhere that could drift. Nothing here is ever deleted — a mistaken payment is reversed with a reason, leaving both the mistake and its correction on the record.

Screens below are from a demo school with real recorded payments. Nothing was confirmed or reversed to make this guide — every action shown is still sitting exactly as captured.

Who can do what

Every officer can watch the numbers; only the Burser can actually move them. Not even the Head Teacher can record a payment — accepting money on the school's behalf is the Burser's alone, while raising a charge (deciding something is owed in the first place) is a billing decision the Head Teacher shares.

Action
Proprietor
Head Teacher
ICT Admin
Burser
View every student's account
✓
✓
✓
✓
Raise a charge (declare money owed)
—
✓
—
✓
Record an offline payment (cash / POS / transfer)
—
—
—
✓
Confirm or reverse a recorded payment
—
—
—
✓
Configure the settlement account
✓
—
—
—

A class teacher gets one more, narrower right not shown above: read-only visibility into the accounts of students in their own arm — no financial columns, no ability to record or reconcile anything.

Settlement & platform account (settings)

Two settings pages sit behind the whole payments picture. Settlement account (proprietor-only to edit) is where Paystack pays the school out to — a bank and account number, verified through Paystack's own resolve API before it can be saved, so a typo never sends money to the wrong account. It isn't screenshotted here since a real school's bank details, unlike everything else in these guides, aren't something to publish even from a demo.

Platform account is the other half — what the school owes the platform from offline transactions specifically. Online payments never appear here; the platform's cut of those is deducted automatically at payment time, not accrued as a debt to settle later.

The Platform account page, with Accrued, Settled, and Outstanding stat cards, and a History table of Platform Charge debit entries by transaction type and date
Platform account — what offline transactions have accrued, all still outstanding here.

Recording & reconciling offline payments

Make a payment is the Burser's console, two forms side by side — one for cash, POS, or bank transfer, one for Paystack. Recording an offline payment doesn't touch the balance yet: it lands pending, because money on the desk and money actually in the account are two different facts, confirmed by two different acts.

The Make a payment page, showing two cards: Pay with Paystack (student, term, amount, transaction type) and Record a payment (student, term, amount, transaction type, method, reference, note)
Recording an offline payment — or starting a Paystack one — from the same page.

Every payment recorded this way queues up in Awaiting reconciliation until the Burser clicks Confirm — the moment the balance actually moves — or Reverse, which requires typing a reason and never deletes the row.

The Awaiting reconciliation queue, 23 payments, each row showing student, admission number, amount, method, reference, and Confirm/Reverse actions
Awaiting reconciliation — a Confirm and a Reverse on every row, nothing pre-decided.

Every other role sees the same queue and the same Outstanding balances list read-only from the main Payments console — full financial columns for an officer, or their own arm's accounts with no numbers at all for a class teacher.

The Payments console as Head Teacher: '147 students owing ₦6,385,000 in total', an Awaiting reconciliation preview card, and an Outstanding balances preview card — no Make payment button in the header
Head Teacher view — everything visible, nothing clickable. No Make payment button.

Paying online with Paystack

A Paystack payment starts the same way whether the payer is a parent checking out for themselves or the Burser initiating it on their behalf: fill the same student/term/amount/type fields, and the browser redirects straight to Paystack's hosted checkout — there's no method field, since it's always Paystack.

Nobody clicks Confirm on an online payment. It starts pending like any other, but confirmation happens automatically — either Paystack's signed webhook, or the payer landing back on the app's return page, which double-checks the same way as a fallback. The same online path pays an admission application fee, from a Pay application fee button on the applicant's own view or the Head Teacher's Pay ₦X to accept when approving one — see Admissions → Reviewing & deciding applications.