Skip to main content
Save App gives every member access to short-term loans backed by their own contribution history. The loan amount a member can borrow is capped at three times their total approved contributions, so the more consistently a member contributes, the more they can access. All loan requests are created in PENDING status and become ACTIVE only after every admin in the group approves them.
A member can only hold one active loan at a time. A loan is considered active when its status is PENDING, APPROVED, or ACTIVE. Any new loan request from a member with an existing active loan will be rejected immediately.

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.
Response
If the member already has an active loan, 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.
Response
Interest is calculated as: 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. The memberName must exactly match a registered member’s name.
Response
Pass a unique idempotency_key (for example, combining the member name, date, and a counter) when submitting loans from a mobile app. If the network fails and you retry, the API will return the original loan record instead of creating a duplicate.
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.
Valid 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 to COMPLETED only once repaidAmount >= totalDue.
Response
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".
You cannot repay more than the remaining outstanding balance (totalDue - repaidAmount). The API will return a 400 error if the repayment amount exceeds the balance.

LoanResponse fields