Skip to Content
Partner APILoan Status & Parent SSO

Loan Status & Parent SSO

Check financing status without EdPay loan GUIDs in your UI, and optionally let parents skip an EdPay login screen entirely.

Loan status by student

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

Financing status for a student, looked up with your externalStudentId, no EdPay internal loan GUID required in your UI.

Parents may complete financing in EdPay’s own flow or your embedded one; either way, your dashboard can show status via this endpoint.

Headers

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

Response 200

Per the collection’s description, expect:

  • Application number
  • Requested amount and outstanding balance
  • Status, one of Draft, Submitted, UnderReview, Approved, Rejected, Disbursed, Active, Closed, PendingManualReview, Cancelled
  • Whether the parent has accepted loan terms
  • Whether the repayment mandate is set up
  • Whether the loan has been disbursed

This collection doesn’t include a captured example response, so exact field names aren’t listed here, use Try it below to see the live shape from staging.

Try it

GET/api/partner/schools/SCHOOL-001/students/STU-2025-001/loans

Create parent SSO session

POST /api/partner/sso/parent-session

Server-to-server only, call after you’ve authenticated the parent on your own platform. Returns a short-lived access token for your client to use, so the parent can complete BVN verification, credit assessment, and the loan application without ever seeing an EdPay login screen.

Requires the CanProvisionParents scope. Never call this from a browser or mobile app with your partner secret, it’s meant to be called from your backend, after your own auth check.

Headers

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

Request body

FieldDescription
externalUserIdYour identifier for this parent/guardian.
firstName / lastNameParent’s name.
emailParent’s email.
phoneNumberParent’s phone number.
{ "externalUserId": "PARENT-USER-9921", "firstName": "Chidi", "lastName": "Eze", "email": "chidi@example.com", "phoneNumber": "08099887766" }

Response 200

{ "success": true, "message": "Parent session created", "data": { "userId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "accessTokenExpiry": "2026-07-23T12:00:00Z", "isNewParent": true, "isBvnVerified": false, "message": "Use accessToken as Bearer token for /api/loans endpoints." }, "errors": [], "statusCode": 200 }
FieldDescription
userIdEdPay’s internal GUID for the parent.
accessTokenShort-lived JWT, pass to your client as the parentAccessToken for /api/loans and /api/auth/bvn/* calls.
accessTokenExpiryWhen accessToken expires.
isNewParenttrue if this call created the parent account.
isBvnVerifiedtrue if BVN is already verified, if so, your client can skip straight to credit assessment.

Since this endpoint is meant to run server-to-server, treat any token you paste into Try it below as a test credential only, it’s stored in your browser’s localStorage like the rest of the playground’s fields, same as testing any other API from a browser-based tool.

Try it

POST/api/partner/sso/parent-session