Loan Origination Done Right with Fineract

TL;DR: In this post, I will try to showcase a simple approach to creating a digital loan origination process on top of Fineract and Mifos X. It will allow anyone that comes across our website, to quickly start the process of requesting a loan and providing the necessary information to make a decision.

Want to hear more? Join the Fineract track at ApacheCon 2020! Or contact me directly.

Connect your loan origination process to the digital age with Fineract

Since our announcement of Fineract as a Service we were approached by many organizations that want to use Fineract as their new financial core as it allows for full management of most financial products while keeping the solution simple and extensible.

One topic most FIs are tackling is the online loan origination process. Most FIs offer a simple online form that basically asks the customer for some very basic details regarding the loan they request and some personal info. In most cases, the form is then submitted to a CRM that allows the FI agents to followup on this lead.

Simple Loan Request Form (From

This approach creates a list of leads, that our staff could later on use to contact the customer and complete the required information for us to move the loan request to a decision stage.

What if we could reduce the effort needed to make it to the decision stage?

In this approach, we would be asking the customer for all the information required to make a decision regarding the loan requested and directly submit that information to a loan management system such as Fineract.

This way, we could not only see the new loan request against our current portfolio but also we could automate our KYC process with services such as SumSub, Onfido, or any other KYC services.

Designing Our Solution

The solution we are building consists of three main parts:

  1. The customer-facing form — We will use Typeform to build our form.
  2. An instance of Fineract — it allows us to manage our loan portfolio with a first-class Rest API and also provides us with a back-office web application called Mifos X Community App. We will use FaaS as a way to quickly get a new instance of Fineract.
  3. A backend service that connects the two together.

Making Our Online Form

In order to build this new approach, we could use one of the best Forms as a service product out there — TypeForm.

Not only that TypeForm allows us to create a beautiful and easy to use forms, but it also makes integration with it very easy. This is the form I’ve created:

Now, I can instruct TypeForm to insert the information entered into google sheets or a proper CRM solution but also, I can use its webhook support to notify our service about the new request.

Submitting to Fineract

Fineract is designed to provide all of the functionality as a first-class API. Meaning that the creation of clients and loans could be done directly through our backend service. In our case, we would need to use Fineract’s clients, loans, documents, and lastly a data tables API. In short data tables allow us to add custom fields to either our client or our loan.

Now once our customers have submitted the form, all that’s left for us to do is call Fineract’s APIs with info we got from our form.

Data we got from Typeform

The first step would be to call the create client API with basic customer information.

POST https://fineract.instance/client{
"officeId": 1,
"legalFormId": 2,
"fullname": "Monsters Inc",
"locale": "en",
"active": true,
"dateFormat": "dd MMMM yyyy",
"activationDate": "21 September 2020",
"submittedOnDate": "21 September 2020",
"datatables": [
"registeredTableName": "Owners",
"data": {
"locale": "en",
"Name": "Mike Wazowski",
"Email": ""

After the client was created we need to call Finertact’s create loan API with the respectful amounts requested by our customer.

POST https://fineract.instance/loans{
"clientId": "100",
"productId": 2,
"disbursementData": [],
"fundId": 1,
"principal": 10000,
"loanTermFrequency": 6,
"loanTermFrequencyType": 1,
"numberOfRepayments": 6,
"repaymentEvery": 1,
"repaymentFrequencyType": 1,
"interestRatePerPeriod": 0,
"amortizationType": 1,
"isEqualAmortization": false,
"interestType": 1,
"interestCalculationPeriodType": 1,
"allowPartialPeriodInterestCalcualtion": false,
"transactionProcessingStrategyId": 4,
"loanPurposeId": 26,
"charges": [
{ "chargeId": 1, "amount": 89 },
{ "chargeId": 2, "amount": 50 }
"locale": "en",
"dateFormat": "dd MMMM yyyy",
"loanType": "individual",
"expectedDisbursementDate": "21 September 2020",
"submittedOnDate": "21 September 2020"

Then we would want to add some important information only we request from our customers as it helps us assess the request better.

POST https://fineract.instance/datatables/extra_details/:client_id{ 
"Favorite Color": "blue",
"locale": "en",
"dateFormat": "dd MMMM yyyy"

And lastly, we need to upload the different files we’ve requested from the customer.

POST https://fineract.instance/loans/{loanId}/documentscontent-type: multipart/form-data
name: "Incorporation Document"
filename: "Certificate_of_Incorporation.jpg"

Note that the multipart/form-data request above is a simplified and nonaccurate request body. Just use the appropriate library for this.

This completes our submission to Fineract and our staff can now find the loan application available on the Mifos X Community App and process the request however we need.

I have left the implementation of this backend service out of this post for simplicity’s sake. but do let me know in the comments below if you’d like to read more about the best approach to implement that in a future post.

Future Improvements

The approach I’ve suggested is one step ahead into automation of the loan origination process. Under the quarantines and work-at-home orders that many countries face at these times, I believe this a crucial step to take in order to keep the deal flow and provide accessibility to our clients. That being said, there are many more such improvements that can be done. From automation of the KYC process — as suggested above — to checks of credit scoring and assets being provided as guarantees. Also, Fineract offers us so much more abilities that you should definitely explore if you’d like to improve on the current business processes.

Want More?

Apache — The open-source organization that facilitates Fineract — hosts it’s yearly, 3 days, convention online next week! (starting on the 29th of September). The convention will feature a dedicated Fineract track where you could hear more about the project and its community.

More specifically, I will be one of the speakers in the “Fineract in 2030” panel alongside James Daley — The founder of Fineract — and other strong members of the Fineract community. And I might even add to the conversation 😄.

The panel will be held on September 30th, 16:15 UTC (Click here to get localized time).

First Timer? Here’s a bit of info about us

Hey there, thanks for reading thus far. I’m David, co-founder of Hypercore. Hypercore is an all-in-one platform for non-bank lenders built on top of Fineract. Our platform provides full automation of loan origination and management, risk management, and credit policy enforcement. On top of that, our platform also takes care of compliance and accountancy specific for your country.

Want to hear more? Check us out!



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store