How to collect school fees online with eSewa and Khalti
Updated 7 min read
Most parents in Nepal already pay bills from eSewa or Khalti. Letting them pay school fees the same way saves a trip to the school and a queue at the counter, but only if every payment reaches the school's account, is matched to the right student, and comes with a receipt. Here is how to set it up properly.
Why not just share a wallet number?
Many schools start by asking parents to send money to a staff member's or the school's wallet and post a screenshot. It works until it does not: screenshots can be edited, payments arrive without a student's name, and the accountant spends the evening matching transfers to families.
- Nothing ties a transfer to a student automatically
- A screenshot is not proof that money arrived
- Personal wallets mix school money with someone's own
- No receipt is issued unless someone writes one
1. Open merchant accounts in the school's name
A merchant account lets a website or app take payments that land in the organisation's own account, with a record of each one. Apply with eSewa and Khalti as a business: each asks for the school's registration and tax details and a bank account in the school's name. Requirements and fees change, so check each provider's current merchant terms before you apply.
Offering both is worth the paperwork. Families usually have at least one of the two, and a parent who cannot pay the way they are used to will come to the counter instead.
2. Get test keys first, then live keys
Both providers give merchants a test (sandbox) environment as well as live credentials. Use the test keys to make a few payments end to end before any real money moves: from the parent's screen, through the wallet, back to your system and onto the student's fee record.
Keep live keys like passwords. Only the person setting up payments should handle them, and they should never be sent over chat.
3. Verify every payment with the provider
The browser telling your system 'payment successful' is not enough; that message can be faked. A proper integration asks eSewa or Khalti directly whether the payment went through, for how much, and only then marks the installment paid.
This one step is what makes online fees safe to trust without checking a bank statement line by line.
4. Tie each payment to a student and an installment
Parents should pay from the student's own fee screen, where the amount due is already known, rather than typing an amount into a wallet. Each payment is then recorded against the right student and installment, and part payments reduce the balance correctly.
Parent pays
- Wallet number and screenshots
- Types an amount, adds a remark
- Integrated online payment
- Pays the amount due from the student's fee screen
School confirms
- Wallet number and screenshots
- Checks a screenshot or statement
- Integrated online payment
- System checks with eSewa or Khalti automatically
Ledger updated
- Wallet number and screenshots
- Typed in by hand later
- Integrated online payment
- At once, against the right installment
Receipt
- Wallet number and screenshots
- Written or typed by staff
- Integrated online payment
- Issued automatically as a PDF
5. Tell parents, and keep the counter open
Announce online payment with a notice that shows exactly where to pay, and keep cash and bank payments available; some families will always prefer them. Every payment, whichever way it came, belongs in the same ledger so a student's balance is never split across systems.
Doing it with SchoolEasy
In SchoolEasy, an administrator pastes the school's own eSewa and Khalti merchant keys in Settings, tests them in sandbox mode and switches each gateway on. Parents pay from their child's fee screen on the web or in the Android app; each payment is confirmed with the provider before it reaches the ledger, and the receipt is ready to download. The money goes straight to the school's account: SchoolEasy never holds it and takes no cut. Schools in India use Razorpay the same way.