Experiments in POS and ATM integration
This use case involves two parties: ATM and Customer. ATM initiates a Cash-Out request from the customer account and the customer confirms the request by providing authentication (OTP) on ATM. The customer pre-generates an OTP for cash-out and uses this OTP on ATM device to initiate ATM Cash-out. The Payer FSP validates the OTP received in ATM-Initiated Cash-Out request for the validity of OTP as well as for authentication. If the customer authentication via OTP is successful; then the customer’s account will be debited at Payer FSP and ATM account maintained at Payee FSP will be credited. As a result, the customer receives cash from ATM.
Firstly, customer will have to generate OTP through mobile application for desired ATM Initiated Cash-out amount. This OTP will be sent to customer’s mobile number. We intend to use the FSP simulator to simulate the Payer and Payee FSP's. An endpoint to generate and validate OTP will be implemented on the Simulator. The ATM/POS driver would be responsible for the conversion of ISO to Open API
- Customer generates an OTP before initiating the transaction request from ATM.
- The customer initiates withdrawal transaction on the ATM by entering their account ID and amount.
- Cash Out Request will be generated by ATM Driver in NDC protocol. This will be converted to OPEN API call and will be sent to Mojaloop.
- ALS (Account lookup Service) module will verify the Party Identifier(mobile number)and PartyIdType(MSISDN). For a registered user, the ALS module will give back a successful response and the transaction request will be sent to Payer FSP for authentication. For unregistered user the ALS module will respond as not a participant.
- The Payer FSP validates the transaction request and also calculate the Quote for the transaction.
- The calculated Quote will be displayed on the Terminal for confirmation by the Payee.
- The Customer will authenticate the transaction by entering pre-generated OTP.
- Payer FSP will authenticate the OTP.
- If successful, the customer’s account will be debited, and the ATM account maintained by Payee FSP will be credited.
- Payer FSP will send response back to Mojaloop.
- Response will be received by ATM Driver in OPEN API. This will be converted to ISO and is sent to ATM.
- ATM will perform the actions as mentioned by the message. (Dispense and Print etc.)
- ATM Driver will generate a completion message and send to Payer FSP for a successful transaction. For unsuccessful transactions, the completion message won't be sent.
This use case describes a merchant payment initiated by a merchant using a device such as POS, and how to authorize a transaction with an OTP or a QR code. The merchant initiates a merchant payment transaction using a POS device. This device has the capability to capture the customer’s authorization on POS instead of the customer’s mobile device. The authorization information captured in POS should be sent to Payer FSP to perform the authorization. The business process involves two parties, Merchant and Customer. The merchant initiates a request to pay for the customer, and the customer reviews the payment request on POS and authorizes the payment by OTP or QR code on the POS itself. The customer authentication information is sent from Payee FSP to Payer FSP for authentication by Payer FSP. If authentication is successful then transaction will be posted on Payer FSP and Payee FSP
- Customer requests for an OTP ( pre-generate OTP using mobile app/CMS)
- Merchant will initiate payment for the desired amount and Customer ID through POS device.
- The request will be converted from ISO to OPEN API and will be sent to Mojaloop. From there account lookup will be done and the request will be send to Payer FSP for authorization.
- ALS (Account lookup Service) module will verify the Party Identifier(mobile number) and PartyIdType(MSISDN). For a registered user, the ALS module will give back a successful response and the transaction request will be sent to Payer FSP for authentication. For unregistered user the ALS module will respond as not a participant.
- The Payer FSP validates the transaction request and also calculate the Quote for the transaction.
- The calculated Quote will be displayed on the Terminal for confirmation by the Payee.
- The Payer FSP will authorize the transaction with dynamic OTP (or QR Code) which is generated through mobile application and entered by the customer.
- If Payer FSP authorizes the transaction, funds will be sent to Merchant (Payee) FSP. If Payer FSP declines, the transaction will be aborted.
- Response will be sent back to POS driver through Mojaloop in OPEN API. It will be converted to ISO(POS) and will send the response to POS.
- Notification will be sent to Payer and Payee from respective FSP’s.
As a part of the terminal integration project, we will be making use of the FSP simulator, to function as the Payer and Payee FSP as per the use cases. In order to cater for this functionality, three new endpoints will be implemented on the simulator as below:
- OTP Endpoint
- ATM Endpoint
- POS Endpoint
The OTP Endpoint will be responsible for the handling of OTP requests from the Payer source. Upon receipt of an OTP request, the endpoint will generate the OTP and respond with the OTP through to the originator.
ATM Endpoint will be responsible for the handling and processing of transactions originating from ATM devices. The transactions in ISO/NDC/DDC formats will be converted to Open API and processed through the simulator.
The POS Endpoint is implemented to handle and process transactions originating from POS and mPOS devices. Similar to the ATM Endpoint, the transactions from POS devices in the ISO format will be processed by the endpoint through the simulator.
The Account Lookup Module will look up for a partyId(eg.mobile number) based on the PartyIdtype(eg.MSISDN) to check if the participantis registered or not. The party information, fspId and currency code will be PUT to the ALS cache and will be retrieved for a successful lookup.
The ISO-Open API adapter would process the ISO message versions 1987 and 1993 received from any ISO switch and send it through to the Mojaloop system in Open API format. ISO message fields will be mapped to Open API format within the adapter.
When the ISO Open API adapter receives a request from the ISO switch, the adapter will send a request to the ALS system to retrieve the fspId corresponding to the partyIdType and partyId.Once the adapter receives the successful response from the ALS, it will create a message in the Open API format and will be send to the mapped payerfsp to calculate quote.
The response for the quote request will be unpacked to ISO format and send back to ISO switch. For an accepted quote amount the transaction request will be send from switch to OTP Endpoint for OTP validation through adapter.
For a verified OTP, the transaction will be send to switch for transaction processing.
Once the transaction is successful at the terminal, a completion message(0202) will be send to the adapter which will be mapped and forwarded to the payerfsp as a fulfilment message.
Open API adapter processes ISO message versions 1993.The financial transaction request 1200 is identified and unpacked in Open API adapter then converted to Open API format. The Open API Quote request will be send to the corresponding payerfsp for calculating quote with payeefsp fee and acquirer fee.