Skip to main content
Schoolyi
School librarian arranging books and planning cards in a bright library

Browse docs

Fees & finance

Finance and payroll

Budgets, budget requests, expenses, vendor bills with three-way match, closed periods, cash flow, and the monthly payroll run - operational finance, not a general ledger.

Fees & finance guide for day and boarding schools.

Last updated August 29, 2026

What this covers, and what it deliberately does not

Finance answers the questions a bursar is asked in a governors meeting: what did we budget, what have we committed, what have we actually paid, and what is the cash position by month. It does that with budgets and budget lines, staff spend requests against them, expenses, vendors and vendor bills, and a month-close mechanism. Payroll sits alongside it and turns approved salary structures into monthly payslips, with one consolidated expense posted back to a budget line when a run is finalised.

What it is not is a double-entry accounting system. There is no chart of accounts, no journal entry and no trial balance, and no bank reconciliation. The schema carries accountingSyncStatus fields that no application code writes to, so there is no working sync to QuickBooks, Xero or Tally in either direction - the honest description is that the school exports CSV and its accountant posts it. Say that to a buyer rather than letting them assume otherwise, because discovering it after go-live is expensive.

The finance module

  • /finance - the hub, with the current spend position and shortcuts into expenses and budgets.
  • /finance/budgets - annual budgets by department, holding the allocated amount that everything else is measured against.
  • /finance/budget-requests - staff ask for spend against a budget line. The states run DRAFT, SUBMITTED, APPROVED, FUNDED, CLOSED, with REJECTED able to return to DRAFT; the requester moves it to SUBMITTED and a finance reviewer decides everything after that.
  • /finance/expenses - record and approve spend, linked to a budget line. Only expenses in PAID count as an outflow in reporting.
  • /finance/planning - budget against actual, with variance.
  • /finance/cash-flow - inflow against outflow by month, also available as the finance-cash-flow report.
  • /finance/vendor-bills - supplier invoices with the three-way match against the purchase order and the goods receipt.
  • /fees/forecast - the other side of the picture: overdue now, plus what falls due in the next 30, 60 and 90 days.

What the cash-flow report is actually made of

Inflow is completed fee payments by payment date, plus paid admission application fees by the date they were paid. Outflow is expenses in PAID by expense date, plus finalised or paid payroll runs that have not yet been posted as an expense, counted at their net total on the period end date so payroll is never double-counted. Everything is bucketed by month with a running cumulative net. Closing a period through the closed-periods API blocks new expense and vendor-bill activity dated inside it, which is how a bursar stops last month from moving after it has been reported - there is no screen for that yet, so it is an API-level control.

The payroll module

ScreenPathWhat it is for
Payroll hub/payrollModule landing and current run status
Components/payroll/componentsEarnings, deductions and employer contributions
Salary assignments/payroll/salary-assignmentsPer-staff structure, approved by a second person
Payroll runs/payroll/runsOne run per calendar month
Run detail/payroll/runs/[id]Generate, review, finalize, export statutory CSV
Payslips/payroll/payslips/[id]Staff download their own, once the run is final
Advances/payroll/advancesSalary advances, recovered automatically in the run
Reimbursements/payroll/reimbursementsApproved claims, attached to the next payslip
Salary management/salary-managementHR-side official CTC and pay bands, with CSV export

Who owns it

  • Finance access - Platform Admin, Principal, Vice Principal, Support Staff - Finance, and Admin, the same five roles as fee operations. Students and parents are refused outright.
  • Approval of a budget request, an expense, a vendor bill or a salary assignment always needs somebody other than the person who raised it.
  • Reversing something already paid is narrower still: Platform Admin, Principal or Vice Principal only.

Limits

  • No general ledger, no chart of accounts, no trial balance, and no accounting-package sync. Export and post is the supported route.
  • No bank payment file. Statutory payroll CSVs cover provident fund, ESI, professional tax and TDS reporting only; the transfer happens in the bank.
  • Period close has an API but no screen, so it is a deployment-level control rather than something a bursar self-serves.
  • Budgets, payroll and fee structures carry no school id, so a deployment holding more than one school shares them rather than separating them per campus.

Common questions

Quick answers in plain language.

Does Schoolyi post fee collections and expenses into our accounting system?+

No. There is no working integration with QuickBooks, Xero or Tally - the accountingSyncStatus columns in the schema are not written by any application code. Fees, expenses, vendor bills and payroll all export to CSV, and the school accountant posts those into the ledger. Treat the general ledger as staying where it is.

Why does the cash-flow outflow not match the sum of our expenses?+

Only expenses in PAID are counted, by expense date, so approved-but-unpaid spend is excluded. Payroll is added separately: a finalised or paid run that has no posted expense yet is counted at its net total on the period end date, which prevents double-counting once the payroll expense is created.

Why can I not approve the expense I just raised?+

The person who created a money item cannot approve, reject, pay or reverse it - that is refused with 403 rather than warned about. Anything at or above the FINANCE_HIGH_VALUE_INR threshold, twenty-five thousand rupees unless it is overridden, additionally needs Principal or Vice Principal rather than any leadership role. Plan for at least two finance accounts before go-live.

How do we stop last month from changing after it has been reported?+

Close the period. A closed finance period rejects new expense and vendor-bill activity dated inside it with a 409 and a FINANCE_PERIOD_CLOSED code. There is no settings screen for it, so closing and reopening is done through the finance closed-periods API by someone with finance access.

Related searches

School leaders and IT teams often search for: how to finance and payroll in school management software, best fee management software for K-12 schools, Schoolyi finance and payroll guide, online fee collection software, school billing software, and fee receipt software schools.