Skip to Content
Partner APIStudents

Students

Keep your roster in sync with EdPay, keyed throughout by your externalStudentId.

Sync students (bulk)

POST /api/partner/students/sync

Bulk create/update students for a school, the JSON equivalent of a CSV roster upload. Call this when class lists change.

Each row is keyed by externalStudentId (typically your student’s registration or matric number), so calling this repeatedly for the same student updates their record rather than duplicating it.

Headers

HeaderValue
Acceptapplication/json
X-EdPay-Api-Key{partnerApiKey}
X-EdPay-Api-Secret{partnerApiSecret}
Content-Typeapplication/json

Request body

FieldDescription
externalSchoolIdThe school these students belong to.
studentsArray of student rows.
students[].externalStudentIdYour identifier for this student.
students[].firstName / lastName / middleNameName fields, middleName may be null.
students[].classNamee.g. "JSS 2A".
students[].academicSessione.g. "2025/2026".
students[].dateOfBirthISO date, e.g. "2012-05-15".
{ "externalSchoolId": "SCHOOL-001", "students": [ { "externalStudentId": "STU-2025-001", "firstName": "Ada", "lastName": "Okonkwo", "middleName": null, "className": "JSS 2A", "academicSession": "2025/2026", "dateOfBirth": "2012-05-15" } ] }

Response 200

This collection doesn’t include a captured example response for this endpoint. The response includes inserted/updated/failed counts and an error message for each failed row, use Try it below to see the exact shape from staging.

Try it

POST/api/partner/students/sync

List students

GET /api/partner/schools/{externalSchoolId}/students

Lists students for a school. Optional className query filters to one class.

Headers

HeaderValue
Acceptapplication/json
X-EdPay-Api-Key{partnerApiKey}
X-EdPay-Api-Secret{partnerApiSecret}

Query parameters

ParameterDescription
classNameOptional, filter to one class, e.g. "JSS 2A".

Response 200

This collection doesn’t include a captured example response for this endpoint. Expect the student records you last sent via Sync students , use Try it below to see the exact shape from staging.

Try it

GET/api/partner/schools/SCHOOL-001/students