Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Final Report for Google Summer of Code 2019 at The Mifos Initiative - Sidhant Gupta (@sidhant-gupta-004)

Google Summer of Code 2019 Final Report


Mifos Payment Hub Integration with GSMA Mobile Money APIs

Project Overview

Mobile money and other digital forms of money transfers are rapidly impacting the financial habits of consumers around the globe. To fully utilize the potential of these changes, financial institutions should have built-in components to help them leverage these services. Mifos Payment Hub is such a component which can allow organizations to deploy their payment applications out-of-the-box using Fineract.

This project includes extending the usability of Mifos Payment Hub by integrating it with the GSMA Mobile Money APIs. As the GSMA Mobile Money APIs are still in development, the scope revolves around creating a working demonstration of transaction use cases as Proof-Of-Concept for future integrations to the platform.

Work Overview

GSMA Mobile Money Use Cases

This part of the project was mainly concerned with determining which use cases could be integrated into the Mifos Payment Hub from the GSMA MM APIs. Development was done on v1.0 - a test version currently running on the sandbox at:

It is detailed and documented at

Postman collections were created while testing all the endpoints provided in v1.0 (Link).

Transaction Use Cases which have been implemented in the Payment Hub:

  1. Merchant Payment
  2. Peer-To-Peer Transfer

GSMA MM API Integration with Payment Hub - Link

Main Development Branch: test

In this part of the project the basic transaction use cases - Merchant Payment and Peer-To-Peer transfer - were integrated with the Payment Hub.

Mifos Payment Hub is based on Apache Camel and Spring Framework. The implementation involved building camel routes to support the multiple steps of the use cases for merchant payment and peer-to-peer transfer.

Transactions can be performed from the hub using simple REST POST requests. The following are the results of the basic transactions:



Web Integration - Link

A simple web UI was built for the demonstration of the basic transaction use cases implemented in the Payment Hub. It is deployed using npm http-server.

In the above demonstration the error messages are due to the fact that the web interface is being deployed using npm http-server which does not allow POST requests. However, through the server-side output we can confirm that a transaction issued by a web client is being serviced.

Future Work

  • Documentation on a streamlined process to add different Over-The-Top APIs to the Payment Hub
    • This would allow easier onboarding of fellow contributors to the Payment Hub project
    • Allow us to identify a set of practices to be followed for integration of different FSPs with the Payment Hub
      This involves both documentation of the existing codebase and of the methodology used to create it.
  • Integration with (FSP) Fineract-side API. This would allow for the Payment Hub to be better integrated with other Mifos components and is an immediate future goal in the scope of this project.
  • The list of use cases to still be covered by mobile money integration is as follows (Link to Swagger UI):
    • Interoperability between mobile money and banks, or among mobile money providers
    • Bill payments
    • Instant notification of payment
    • Basic account management
    • International transfers, including request for quotation
    • Bulk transactions
    • Cash in / Cash out
      As of September 2019, work on bulk transactions, international remittance and debitmandates is not feasible.
  • Migration from npm http-server to allow POST requests on the server for the web UI

Deployment Steps: (for Ubuntu)

Payment Hub

  1. Clone the repository:
$ git clone
  1. Navigate to sources/ and build with:
$ mvn clean install
  1. Copy work/application.yml file to sources/payment-hub/target
  2. Navigate to sources/payment-hub/target
  3. Run with
$ java -jar payment-hub-1.0.0-SNAPSHOT.jar

Web UI

  1. Clone the repository:
$ git clone
  1. Configure http-server (if you already have npm http-server installed you may skip this step):
$ npm install http-server -g
  1. Navigate to the source directory and run:
$ http-server


My Experience

I would like to thank Ed Cable for his guidance and effort in making the entire program a smooth experience. The orderly manner of meetings and responsiveness contributed a significant amount to my efficiency. I would also like to thank my mentors, especially Avik and Rahul whose guidance and suggestions helped this project take shape. Working on the Payment Hub made me learn and develop technically as a student and developer. Mifos is an exceptionally amazing organization to be part of and I look forward to contributing further to both Mifos and the Payment Hub project.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment