PENDING status and become ACTIVE only after every admin in the group approves them.
Check loan eligibility
Before showing a loan request form, call this endpoint to confirm the member is eligible and to learn the maximum amount they can borrow.is_eligible will be false and reason will explain why. The max_eligible_amount is always returned so you can display it in your UI regardless of eligibility.
Eligibility is calculated as:
max_eligible_amount = contribution_paid × 3, capped at the group’s configured max_loan_limit. A member also needs a credit score of at least 60 to be eligible.Generate a repayment schedule
Let members preview exactly what they will owe each month before committing to a loan.interest = principal × (rate / 100) × (duration_months / 12). The default interest rate is 5% per annum.
Submit a loan request
Once the member has reviewed the schedule and confirmed their intent, submit the loan request. ThememberName must exactly match a registered member’s name.
guarantor and guarantorPhone are optional but recommended for larger loan amounts.
View loans
Retrieve loans with an optional status filter. Members only see their own loans; admins see all loans in the group.status filter values: pending, approved, active, completed, overdue, rejected.
Loan lifecycle
Every loan moves through a defined set of statuses:Loan approval requires unanimous consent from all active admins in the group. Each admin calls
POST /api/loans/{id}/approve independently. The API responds with progress (2/3 admins have approved) until the final admin’s vote triggers the status change to ACTIVE.Repay a loan
Record a repayment against an active, approved, or overdue loan. Partial repayments are allowed — the loan moves toCOMPLETED only once repaidAmount >= totalDue.
phoneNumber is optional and is recorded for mobile money transactions for reconciliation purposes. paymentMethod is a free-form string — common values used by Save App groups include "mobile_money" and "cash".

