# Overview
source: https://developer.mastercard.com/mastercard-merchant-presented-qr/documentation/server-apis/reference-app/overview/index.md

The MPQR APIs and SDKs support two types of institutions: Originating Institutions (OIs) and Wallet Providers. OIs are the banks issuing the consumer card or account. Wallet providers are the third party entity that provide a Digital Wallet separate from a Bank Wallet. When a consumer initiates an MPQR transaction through an OI wallet, the OI verifies available funds and debits the consumer's account. When the consumer initiates an MPQR transaction through a Wallet Provider, the Wallet Provider performs "pull or funding transaction" from the consumer's bank, and the consumer's bank account subsequently debits the consumer's account. The OI or the Wallet Provider then sends the payment to the Receiving Institution (RI), which is the merchant's bank. The RI then credits the merchant's account with the payment and notifies the merchant.

### What You Will Need {#what-you-will-need}

* A development environment set up with Android Studio or a different Android IDE
* Java 8 installed locally
* Maven 3 installed locally
* Spring Boot application that can be downloaded [here](https://static.developer.mastercard.com/content/mastercard-merchant-presented-qr/uploads/mpqr-api-reference-application.zip)
* Android reference applications that can be downloaded [here](https://static.developer.mastercard.com/content/mastercard-merchant-presented-qr/uploads/mpqr-tutorial-android.zip)

### What You Will Build {#what-you-will-build}

* A mobile application that communicates with an application server to perform push payments to a merchant
* An application server that securely communicates with the MPQR API to facilitate a push payments

### What You Will Learn {#what-you-will-learn}

* How to use the MPQR Device SDKs to scan QR codes
* How to use the MPQR Device SDKs to parse QR codes
* How to use the MPQR Device library to communicate with Mastercard to securely push payments
