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/banksNigerian bank catalog (name + NIP code) for account-setup dropdowns.
Same data as the public Utils → List banks
(GET /api/banks).
Headers
| Header | Value |
|---|---|
Accept | application/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
Resolve bank account
POST /api/partner/banks/resolveName 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
| Header | Value |
|---|---|
Accept | application/json |
X-EdPay-Api-Key | {partnerApiKey} |
X-EdPay-Api-Secret | {partnerApiSecret} |
Content-Type | application/json |
Request body
| Field | Description |
|---|---|
accountNumber | 10-digit account number. |
bankCode | NIP 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
Set school bank account
PUT /api/partner/schools/{externalSchoolId}/bank-accountSets (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
- The school is linked via Create or update school with the same
externalSchoolId. - Your partner application is Active with the CanSyncSchools scope.
- Prefer calling Utils → Resolve bank account first to confirm the account name.
Headers
| Header | Value |
|---|---|
Accept | application/json |
X-EdPay-Api-Key | {partnerApiKey} |
X-EdPay-Api-Secret | {partnerApiSecret} |
Content-Type | application/json |
Request body
| Field | Rules |
|---|---|
bankAccountNumber | Required, exactly 10 digits. |
bankCode | Required, NIP code from List banks. |
bankName | Required, 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
}