Skip to content

Loan-Level Reconciliation

Loan-level reconciliation compares a lender's outstanding balance report against Fineract's loan data to identify discrepancies in principal, interest, and fees.

How It Works

  1. Upload a lender's outstanding balance CSV
  2. The system fetches each loan's outstanding amounts from Fineract
  3. Compares the two and flags mismatches

Using Loan-Level Recon

1. Select Cutoff Date

Choose the date the lender report was generated. This is used for reference only - the comparison uses current Fineract balances.

2. Upload Lender CSV

Click Upload Lender CSV and select the file. Expected columns:

ColumnDescriptionExample
loan_idFineract loan external IDVCPL006546
outstanding_principalLender's principal balance308101.61
outstanding_interestLender's interest balance102871.99
outstanding_feesLender's fee balance0

A template CSV can be downloaded using the Template button.

3. Review Results

Summary cards show:

  • Total Loans - number of loans in the CSV
  • Matched - amounts match between lender and Fineract
  • Mismatched - amounts differ (highlighted in red)
  • Not Found - loan doesn't exist in Fineract

The comparison table shows side-by-side:

  • Lender principal vs Fineract principal
  • Lender interest vs Fineract interest
  • Lender fees vs Fineract fees

Mismatched values are highlighted in red. "Not Found" rows are highlighted in amber.

4. Filter & Export

  • Filter by: All, Matched, Mismatched, Not Found
  • Export downloads the full comparison as CSV

Status Values

StatusDescription
MatchedAll three components (principal, interest, fees) match
MismatchedOne or more components differ between lender and Fineract
Not FoundLoan external ID not found in Fineract

API Endpoints

MethodPathDescription
POST/api/reconciliation/loan-level/compareUpload CSV and compare
GET/api/reconciliation/loan-level/latestGet most recent comparison
GET/api/reconciliation/loan-level/{id}/exportDownload comparison as CSV

Fineract Report

The loan-level recon uses a registered Fineract SQL report (Loan Outstanding By Date) to fetch outstanding balances. This report is registered using:

bash
./venv/bin/python scripts/register_loan_outstanding_report.py

Turno Fineract LMS Documentation