Native Banking App

Content Type: Industry Template


This Native app combines different types of technologies to deliver a user-oriented banking experience. It uses biometrics to access the app and once you are in you can see your current and savings accounts, you can transfer money between the two, get push notifications for your transactions, split a bill with a friend or request/send money directly from/to them, freeze your card, check the closest bank branches and navigate to them and finally ask the chatbot for anything extra you may need. It works nicely on both Android and iOS devices and is compatible with Light and Dark theme modes.


Native Banking App

Retail banking apps are apps that pretty much all of us are familiar with, as we all have at least one bank account and the majority of the banks have their own native app. Committed to delivering leading customer experiences and UIs for our partners, we developed our own banking app. We wanted to show you the various native capabilities of the Mendix platform and help you deliver similar, user-oriented apps for your customers.

To summarise, the app allows you to:

  • use biometrics to access the app (fingerprint or facial recognition)
  • see, on a split view, both of your current and savings accounts
  • transfer money between those accounts
  • split a bill with a friend
  • request/send money directly from/to them
  • freeze your card if you misplaced it and request a new one
  • check the closest bank branches to you and navigate to them
  • use the chatbot for anything extra you may need
  • get push notifications about your various interactions
  • use both light and dark themes on your device without implications on the user experience

How to Setup?

The native banking app is available via the create new app flow on the private AppStore to demo your own version.

Feel free to customize this application for PoC's and demos. The following steps will help you provision the banking app.

  1. Find the app via the create new app flow.
  2. Create a new application, which will contain a data snapshot
  3. Edit in Studio Pro
  4. Download the 'Make it Native' app from your app store
  5. Scan the QR code on the 'Make it Native' app
  6. The app should be ready to use


The data will be imported automatically when you execute the app for the first time. However, if you want to clean the data you may have added (new transactions, for example), you can open the app's website and follow the next steps.

  1. Select the user and change the current user to 'demo_administrator'
  2. Click the "Re-import Data" button on the top of the page (see image below)


admin view


The 'Select Customer' button will pick a random customer (different than the preselected) to show during a demo.

Explaining the Model

This model has been built to be easily extendable and contains a few core functions that all claims processes require:


Banking Module

This module is used to store and capture the transactions and banking details of the customer. It contains the following entities:


domain model


  • Customer: Used to store the details of the account holder/customer.
  • CreditCard: Each customer has a credit card associated with their current bank account to use for their purchases. It contains the number, the expiration date, and the type of the card (Visa, MasterCard or AMEX) and if the card is frozen or not.
  • Bank Account - Each customer has two bank accounts associated with them, current and savings, and that's where those details are stored.
  • Transactions - Here, we are capturing all the transactions that took place with both of your accounts, and they contain purchases from different stores, transfers of money between your two accounts, sending and requesting money from friends.
  • Friends - This entity stores the user's friends who have the same app on their devices.
  • SplitBill - This entity interacts with the two above entities to facilitate a split the bill function. If you went out to a restaurant with a friend, and you paid the whole bill, you can request half of it by splitting that 'transaction' with a friend of yours.
  • TransactionCategories - This entity is generated/changes automatically whenever the user is buying something from a store. It keeps track of how much money they spent, for example, on electronics, gaming or gardenings stuff.
  • MonthlyTransactions - This entity groups all the transactions that took place on the same Month of the Year.


Conversation Module

This module is used to store the conversation messages for chatbot integration.

Conversation Module


  • Chat Message - This entity is used to store the messages to and from the chatbot. These chat messages are stored against an account and a conversation entity.
  • Conversation - Used to store the conversation history and dialogue.
  • InputMessage - This is a temporary non-persistent entity to display the messages that the user wrote.



This module is based on the implementation from Andrej featured here: This module is used for the chatbot for helping a customer understand how their claim is progressing. It uses AWS Lex, a chatbot engine that we have trained to respond to certain triggers. The chatbot used to leverage IBM Watson, but we transitioned this off IBM because the service was being deprecated.


  • LexResult - Used to capture the response message back from AWS Lex.
  • Slot - Used to store key data returned with a lex result based on the user's message input, like days of the week, for example.


Chatbot dialogue


You can use the chatbot for those things:

  • Ask for a replacement card
  • Get certain words described to us like interest or apr etc
  • Get an appointment for a mortgage

For example, if you type

"I would like to order a card replacement"

a successful response will look like this:

"What day did you lose your current card?"


Version: 1.0.0
Framework Version: 9.5.0
Release Notes: initial upload