← Slimpay.ng

Used by every "Try It" panel across these docs to call app.slimpay.ng for real. Get one from Authentication — register or log in, then paste the token here. Stored only in this browser (localStorage), never sent anywhere but the Slimpay API, and auto-cleared after 8 hours.

School Fee Payments

Overview

Parents and guardians browse registered schools, pick a fee category, and pay. Unlike bill purchases, school fee payments don't debit the wallet directly — they go through a hosted checkout (card or bank transfer), and Slimpay confirms payment server-to-server before remitting to the school.

List schools

GET /schools Public
bash
curl "https://app.slimpay.ng/api/v1/schools?state=lagos&type=secondary"
GET /schools
MethodPathPurpose
GET/schools/{school_id}School profile
GET/schools/{school_id}/servicesFee categories for this school (tuition, levies, hostel, etc.)
GET/schools/{school_id}/statusWhether the school is active and accepting payments
POST/schools/onboardRegister a new school for review
GET /schools/{school_id}
GET /schools/{school_id}/services
GET /schools/{school_id}/status

Pay a school fee

POST /schools/{school_id}/payments Requires Auth

Initiates a checkout rather than debiting the wallet — no transaction_pin needed here. The response includes a checkout_reference your client passes to the checkout SDK (card) or displays as a bank-transfer reference; Slimpay's webhook confirms payment and remits automatically once it lands.

bash
curl https://app.slimpay.ng/api/v1/schools/42/payments \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "school_service_id": 3,
    "student_name": "Chidi Eze",
    "student_class": "JSS 2",
    "student_id": "STU-0042",
    "amount": 45000,
    "payer_name": "Amaka Okonkwo",
    "payer_email": "amaka@example.com"
  }'
POST /schools/{school_id}/payments
json
{
  "status": true,
  "data": {
    "checkout_reference": "SCH-8F2A1C90",
    "amount": 45000,
    "platform_fee": 675,
    "school_net": 44325
  }
}
Student lookup

Schools with student-lookup enabled will validate student_id/student_name against their own records as part of this call, so receipts match what the school expects. If validation fails, the response explains why rather than silently accepting an unmatched student record.