Skip to Content
Parent Loans APILoan Tracking

Loan Tracking

List, summarize, inspect, or cancel a parent’s loan applications.

My loans (list)

GET /api/loans/my

Paginated list of the parent’s loans.

Headers

HeaderValue
Acceptapplication/json
AuthorizationBearer {parentAccessToken}

Query parameters

ParameterDescription
statusOptional filter by loan status.
fromDate / toDateOptional date range filter.
pageDefault 1.
pageSizeDefault 20.

Response 200

{ "success": true, "message": "Request successful", "data": { "items": [ { "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "applicationNumber": "LN-20250901-0001", "type": "K-12", "schoolName": "Greenfield Academy", "studentName": "Ada Eze", "loanAmount": 250000.00, "outstandingBalance": 281250.00, "status": "Submitted", "isDisbursed": false, "createdAt": "2025-09-01T10:30:00Z" } ], "page": 1, "pageSize": 20, "totalCount": 1, "totalPages": 1, "hasNextPage": false, "hasPreviousPage": false }, "errors": [], "statusCode": 200 }

Try it

GET/api/loans/my

Dashboard summary

GET /api/loans/dashboard

Outstanding balance, total received, total paid, and a recent activity feed.

Headers

HeaderValue
Acceptapplication/json
AuthorizationBearer {parentAccessToken}

Response 200

{ "success": true, "message": "Request successful", "data": { "outstandingLoanBalance": 187500.00, "totalAmountReceived": 250000.00, "totalAmountPaid": 93750.00, "recentActivity": [ { "loanId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "applicationNumber": "LN-20250901-0001", "type": "K-12", "schoolName": "Greenfield Academy", "amount": 250000.00, "status": "Active", "occurredAt": "2025-09-15T08:00:00Z", "eventDescription": "Loan disbursed" } ] }, "errors": [], "statusCode": 200 }

Try it

GET/api/loans/dashboard

Loan detail

GET /api/loans/{loanId}

Full loan view: amounts, progress stages, available actions, repayment schedule, and payment history.

Headers

HeaderValue
Acceptapplication/json
AuthorizationBearer {parentAccessToken}

Response 200

{ "success": true, "message": "Request successful", "data": { "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "applicationNumber": "LN-20250901-0001", "type": "K-12", "schoolName": "Greenfield Academy", "studentName": "Ada Eze", "className": "JSS 2", "academicSession": "2025/2026", "loanType": "Termly", "term": "FirstTerm", "requestedAmount": 250000.00, "tuitionAmount": 250000.00, "discountAmount": 0, "loanAmount": 250000.00, "isCustomAmount": false, "interestRate": 12.5, "totalRepayableAmount": 281250.00, "monthlyRepaymentAmount": 46875.00, "tenure": "SixMonths", "tenureMonths": 6, "status": "Submitted", "dateSubmitted": "2025-09-01T10:30:00Z", "termsAccepted": true, "isMandateSetup": false, "isDisbursed": false, "outstandingBalance": 281250.00, "dateDeclined": null, "declineReason": null, "dateCancelled": null, "cancellationReason": null, "batchId": null, "batchReference": null, "nextOfKin": { "name": "Ngozi Eze", "phone": "08012345678", "relationship": "Spouse", "occupation": "Teacher" }, "documents": { "hasExamInvoice": false, "hasAdmissionLetter": false, "hasUtilityBill": false }, "progressStages": ["Application", "Under Review", "Approved", "Disbursed"], "currentStageIndex": 0, "availableActions": ["CancelLoan"], "repaymentSchedule": [], "paymentHistory": [], "monthlyInterestRatePercent": 2.08, "totalInterestAmount": 31250.00, "insuranceFeePercent": 0, "insuranceFeeAmount": 0, "firstInstallmentAmount": 46875.00 }, "errors": [], "statusCode": 200 }

Once approved and disbursed, expect status: "Active", currentStageIndex: 3, availableActions: ["MakePayment", "DownloadStatement"], and populated repaymentSchedule / paymentHistory arrays, see Repayment schedule and Payment history for their shapes.

Try it

GET/api/loans/00000000-0000-0000-0000-000000000001

Cancel loan

POST /api/loans/{loanId}/cancel

Parent withdraws their application, only possible before disbursement.

Headers

HeaderValue
Acceptapplication/json
AuthorizationBearer {parentAccessToken}
Content-Typeapplication/json

Request body

FieldDescription
reasonFree-text cancellation reason.
{ "reason": "Applied by mistake" }

Response 200

{ "success": true, "message": "Request successful", "data": "Application cancelled.", "errors": [], "statusCode": 200 }

Try it

POST/api/loans/00000000-0000-0000-0000-000000000001/cancel