# QR Payments # Introduction Show and scan QR. Register as merchant and user. Enable card acceptance immediately. The QR Payments solution was created to enable both merchants and individuals to generate and scan QR codes to perform transactions. Verestro supports the global QR standard and has its own QR standard which is an extension of the global standard. This functionality allows the user to generate his own QR code. Having generated QR code, users can order the execution of a transaction by sharing the code to the potential payer. Functionality also allows users to make a transfer by scanning the QR code shared by the potential recipient of the transfer. The scanned QR must support the global QR standard or the Verestro standard. QR code payments can be used by issuers, fintech providers, merchants, individual consumers for various use cases starting from Person-2-Person transactions, through SME merchant payments to sophisticated use cases for digital, TV or advertisement payments. ## How to connect with us? QR Payments is a solution developed on Android and iOS. Integration of the solution is available through the mobile QR SDK offered by Verestro. Integration through Verestro SDK, requires an account at Verestro Artifactory. To create such account, please contact the Customer Service. ### Mobile SDK Verestro provides Software Development Kit (SDK) which can be used for QR generating, QR scanning, encoding data into the QR code and decode data from the QR code. Verestro team actively supports Customer with integration. More information about each module in Mobile SDK can be found in [iOS QR SDK Documentation](https://developer-ios.verestro.com/p2pqrsdk/latest/documentation/) for iOS implementation and [Android QR SDK Documentation](https://developer-android.verestro.com/qrsdk/latest/documentation/) for Android implementation. # Overview This section provides general information about the solution, terminology description and a high-level description of the business and technical aspects. ## Abberations and Acronyms Abbreviations and Acronyms used in the document:
**Abbreviations** | **Description** |
ACQ | Acquiring Institution/Acquirer |
AP | Admin Panel |
ACS | Access Control Server |
C2C | Card to card |
DC | Data Core API |
P2P | Peer to peer API |
MDC | Mobile Data Core API |
SDK | Software Development Kit |
THC | Transaction History Core |
OS | Operative System |
URI | Uniform Resource Identifier |
Mid | Merchant Identifier |
**Name** | **Description** |
Customer | Institution which is using Verestro products. This institution decides which SDK should be used and how transaction should be processed. Basicly Customer can be called Verestro client. |
User | User which is using Money Transfer Hub Application. It is root of entity tree. User is identified in Wallet Server by some unique identifier which is provided after registration. User can have access to his data and operations based on session. User’s session is created after device pairing is performed. When session expires then user authentication have to be performed. Session is valid 10 minutes, however it is configurable parameter. |
Card | Card belongs to the user. User can have many cards. Card is identified via internal id given after storing card on Wallet Server. Whole PAN is stored on Wallet Server which has PCI DSS certificate. |
Device | Device belongs to user. When user starts using application after installation then device pairing is performed. After pairing device with some unique id, unique device installation id is generated and this installation is assigned to user. It is possible to have one active installation on specific device for specific user. |
Session Token | Token which defines User. It is an authorization way of the User. This entity is created after paring device and this is needed to perform any actions in the application. When session is expired then user authentication needs to be performed. Session is valid 10 minute s, however it is configurable parameter. |
Sender | Verestro Wallet user which triggers transaction to the Receiver (check User description). |
Receiver | Receiver can be identified in Wallet Server (Internal) or may be an entity that does not exist in Wallet Server (External) ◦ Internal – this type of Receiver has his own unique identifier just like sender. It can also act as a Sender in the transaction process, ◦ External – this type of Receiver does not exist in Wallet Server. Transfers that are made to this type of Receiver require the entering of his card data by Sender. |
Mid | Merchant identifier. This entity is representing Merchant in Acquirer’s system. Customer have to provide the mid information to enable mid configuration in the Verestro system. Required to process 3DS authentication via Verestro System. |
Acquirer | External institution responsible for processing transaction and 3ds requests ordered by the Verestro Money Transfer Hub Application. Acquirer connects with banks / card issuers and returns information whether the ordered action on a given card is possible. |
PAN | It is 7-15 digits of credit card number. These digits contain the Permanent Account Number (PAN) assigned by the bank to uniquely identify the account holder. |
Wallet Server | Provides the backend services to support Mobile Payment Application via Verestro Wallet SDK and is responsible for managing users, devices, cards , device tokens, storing transactions history and communication with Acquirers. |
PCI DSS | PCI DSS (Payment Card Industry Data Security Standard) is a security standard used in environments where the data of payment cardholders is processed. The standard covers meticulous data processing control and protection of users against violations. |
QR | QR code is a type of barcode or scannable pattern that contains various forms of data like website links, account information, phone numbers, or even entire object of the transaction. |
**Component** | **Description** |
Verestro Wallet Server | Backend services of Money Transfer solution. In the described product, they are responsible handling data provided from QR code. On the basis of such data, the backend enables the execution of transactions and 3ds authentication by connecting to various Acquirers. |
Verestro QR Wallet SDK | Provides all functionalities needed for Money Transfer Hub Solution with QR transfers. It is responsible for generate QR, parsing data embedded in it and deliver necessary data to pass all Verestro Wallet Server functionalities. |
Notification Service | Delivers all necessary information about transaction statuses and other actions which was performed between individual Verestro backend components and/or external. |
Admin Panel | Frontend component that allows Customer to check transaction statuses and transaction history of his clients. |
*The rest of the processes apply to "Money Transfer" as a product as a whole are described in separate [Money Transfer documentation](https://developer.verestro.com/books/money-transfers/page/money-transfers-overview). QR payments is one of the components of the Money Transfer product.*
### QR Payment flow The module responsible for QR payments can be divided into two functionalities. The first one allows you to make a payment by scanning the QR code. The second functionality allows user to generate a QR code with which user can order a transfer to his card. #### Scan QR code The scan QR option allows user to order a money transfer by scanning the QR code issued by the potential recipient. The execution of this path depends on whether the user's device has a QR scan function. Additionally, the application may request access to the camera of the device used. The pictures below show “scan QR code” view:[](https://developer.verestro.com/uploads/images/gallery/2022-05/image-1651756738245.png) | [](https://developer.verestro.com/uploads/images/gallery/2022-05/image-1651756740909.png) |
On the screen above the user selects the scan tab for the application to get all the information needed to make the transfer from the provided QR code. | On the screen above the redirection following scanning the QR code is shown. The user can see to whom the transfer will be made and which of his cards will be debited. If the user is ready to make the transfer, he confirms the action with the confirm button. Similar to a card to card transaction, the 3ds process may be required (See “Card to card” chapter). |
[](https://developer.verestro.com/uploads/images/gallery/2022-05/image-1651756760997.png) | [](https://developer.verestro.com/uploads/images/gallery/2022-05/image-1651756765259.png) |
On the screen above user is informed about the successfully money transfer. Return button will redirect the user to the main page. | On the screen above user is informed about the unsuccessfully money transfer. In this case user is able to try again the transfer or return to the main page. Example reasons of the transaction fail: - Luck of funds, - 3ds failed, - Invalid card data. |
[](https://developer.verestro.com/uploads/images/gallery/2022-05/image-1651756813066.png) | [](https://developer.verestro.com/uploads/images/gallery/2022-05/image-1651756816592.png) |
On the screen above user chooses which of his cards will be debited, and in what currency the transfer is to be made. If the above choices have been made, the user has to enter the amount he wants to receive. |
[](https://developer.verestro.com/uploads/images/gallery/2022-05/image-1651756829405.png) | [](https://developer.verestro.com/uploads/images/gallery/2022-05/image-1651756832375.png) |
On the screen above the user enters the amount he wants to receive and then confirms the selection with the green button in the lower right corner of the screen. After performing all the required actions, a QR code and information about the ordered transaction (card, currency and amount) are generated on the screen. |