MutualLink
Loans, savings, and collections for a multi-purpose cooperative
Building
MutualLink runs a multi-purpose cooperative’s members, savings, share capital, and loans: application to approval to release, payments with official receipts, delinquency aging, demand letters, reminders, reports, and an audit log, across five staff roles.
At a glance
- Scope
- Members, savings and share capital, loan products, application → approval → release, payments with official receipts, delinquency aging, demand letters, email reminders, reports, audit log
- Constraints
- Numbers had to match the spreadsheet staff already trusted; separation of duties (whoever encodes a loan cannot approve it); financial records reversed or voided, never deleted
The problem
The cooperative computed loans in a spreadsheet and tracked collections by hand. Any system replacing that had to produce the same peso-and-centavo numbers staff already trusted, and could never double-post a payment.
The approach
A PHP and MySQL system built around the cooperative’s own loan sheet: diminishing-balance schedules with equal principal, daily past-due accrual, and payments applied penalty, then interest, then principal. Money actions run in transactions with row locks, and financial records are only ever reversed or voided, never deleted.
Stack
- PHP 8.2
- MySQL 8.4
- AdminLTE
- Bootstrap
- DataTables
- Chart.js
- PHPMailer
Status
Amortization tested against the cooperative’s own sample loan
Have a project like this?
Tell me what you’re building, or book a short call about a similar system.


