Skip to Content

Banks

Partner-authenticated bank catalog and account resolution, plus setting a school’s disbursement account.

Prefer the shorter Utils paths for most clients: GET /api/banks (anonymous) and POST /api/banks/resolve. Partner-prefixed routes below return the same data under Partner API key auth.

List banks

GET /api/partner/banks

Nigerian bank catalog (name + NIP code) for account-setup dropdowns.

Same data as the public Utils → List banks (GET /api/banks).

Headers

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

Response 200

{ "success": true, "message": "Request successful", "data": [ { "name": "Access Bank", "code": "044" }, { "name": "Guaranty Trust Bank", "code": "058" } ], "errors": [], "statusCode": 200 }

The real list covers the full Nigerian bank catalog, the example above is truncated. code is the bank’s NIP code, used as bankCode everywhere else in this API.

Try it

GET/api/partner/banks

Resolve bank account

POST /api/partner/banks/resolve

Name enquiry, resolves the account name for a 10-digit accountNumber on a given bank’s NIP bankCode. Call this before saving a school’s disbursement details, so you (and the school) can confirm the account name before it’s locked in.

Also available at Utils → Resolve bank account (POST /api/banks/resolve) with Parent JWT or Partner API keys.

Headers

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

Request body

FieldDescription
accountNumber10-digit account number.
bankCodeNIP bank code from List banks.
{ "accountNumber": "0123456789", "bankCode": "058" }

Response 200

{ "success": true, "message": "Request successful", "data": { "accountName": "JOHN DOE", "accountNumber": "0123456789", "bankCode": "058", "bankName": "Guaranty Trust Bank" }, "errors": [], "statusCode": 200 }

Try it

POST/api/partner/banks/resolve

Set school bank account

PUT /api/partner/schools/{externalSchoolId}/bank-account

Sets (or replaces) the disbursement bank account for a school already linked to your partner application.

Also accepts POST on the same path, with the same body.

Prerequisites

  1. The school is linked via Create or update school with the same externalSchoolId.
  2. Your partner application is Active with the CanSyncSchools scope.
  3. Prefer calling Utils → Resolve bank account first to confirm the account name.

Headers

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

Request body

FieldRules
bankAccountNumberRequired, exactly 10 digits.
bankCodeRequired, NIP code from List banks.
bankNameRequired, bank display name.

The account is verified before save. isBankAccountSetup becomes true on the school so loans against it can be approved for disbursement.

{ "bankAccountNumber": "0123456789", "bankCode": "058", "bankName": "Guaranty Trust Bank" }

Response 200

{ "success": true, "message": "Bank account verified and saved as JOHN DOE. Loans against this school can now be approved.", "data": { "schoolId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "externalSchoolId": "SCHOOL-001", "name": "Example Secondary School", "bankAccountName": "JOHN DOE", "bankAccountNumber": "0123456789", "bankCode": "058", "bankName": "Guaranty Trust Bank", "isBankAccountSetup": true }, "errors": [], "statusCode": 200 }

Try it

PUT/api/partner/schools/SCHOOL-001/bank-account