🚧

Coming soon

📘

This feature is only available in Middle East region and limited to certain acquirers.

This feature can only be used if your account has been enabled with the respective service.

Below flow describes the required steps and nexo message layouts for an AANI QR code payment.
For more information about AANI please refer to the official web page of AANI.

Terminal (host) sends Acceptor Authorisation Request to IPG to request QR code.

FieldPresenceValue
MsgFctnMFAUQ
Envt/Card/CardBrndMAANI
Envt/POI/GrpIdMGateway Store ID
Envt/POI/Id/IdMTerminal ID
Tx/TxCaptrM'false' for preauthorization | 'true' for sale
Tx/TxTpM'RESA' for preauthorization | 'CRDP' for sale
Tx/SvcAttrCIRES (only present for preauthorization)
Tx/TxDtls/AmtQlfrM'RESD' for preauthorization | 'ACTL' for sale
Tx/TxDtls/TtlAmtM
Tx/TxDtls/CcyM Only AED is supported.
Cntxt/PmtCntxt/CardPresMfalse
Cntxt/PmtCntxt/CardhldrPresMtrue
Cntxt/PmtCntxt/CardDataNtryMdMPHYS
TxIdMTransaction identifier assigned by terminal (TxDtTm + TxRef)
CstmrDvc/TpM'qr_code_based' for QR code payment

IPG sends nexo Acceptor Authorisation Response incl. QR code string details to terminal (host)

FieldPresenceValue
MsgFctnMFAUP
TxRspn/AuthstnRslt/AuthstnNtty/TpMITAG
TxRspn/AuthstnRslt/RspnToAuthstn/RspnMResponse code + text
TxRspn/AuthstnCdM000000
TxRspn/CmpltnReqrdMfalse
TxRspn/TxVrfctnRslt/MtdMMANU
TxRspn/TxVrfctnRslt/AddtlRsltM"IPG:QR/$TYPE$/$QR-code-payload$" with $TYPE$=DEFAULT
&$QR-code-payload$=TLV string based on EMV standard following structure of UAEIPP Overlay service specification
TxRspn/BalCpresent for preauthorisations
TxRspn/Actn/ActnTpMRQDT
Tx/RcptTxIdMGateway Order ID

Terminal builds the QR from NEXO response and displays it on the terminal screen


Customer scans QR code and completes the AANI payment on his mobile device


Once the terminal has displayed the QR code on the terminal screen, the terminal (host) starts pulling the status via Acceptor Authorisation Request (balance inquiry) from IPG.

The terminal should pull the status from IPG every 6 seconds, not earlier. The terminal (host) can decide for how long it pulls the status. Fiserv recommends a maximum period of 5 minutes.

FieldPresenceValue
MsgFctnMAUTQ
Envt/POI/GrpIdMGateway Store ID
Envt/POI/Id/IdMTerminal ID
Cntxt/PmtCntxt/CardPresMfalse
Cntxt/PmtCntxt/CardhldrPresMfalse
CardDataNtryMdMPHYS
Tx/TxTpMBALC
TxCaptrMfalse
TxDtls/TtlAmtM0
TxDtls/CcyMAED
TxDtls/AmtQlfrM'RESD' for preauthorization | 'ACTL' for sale
TxIdMTransaction identifier assigned by terminal (TxDtTm + TxRef)
Tx/OrgnlTx/RcptTxIdCReference to original transaction. Alternatively, terminal can send SaleRefId

IPG sends the status to terminal via nexo Acceptor Authorisation Response.

FieldPresenceValue
MsgFctnMAUTP
CmpltnReqrdMfalse
RspnToAuthstn/RspnMDepending on the payment status:

- Rspn='APPR' if payment has been successfully completed
- Rspn='DECL' && ActnTp='RQDT' if payment is still in waiting status. In this case it is expected that terminal continues to pull status from IPG.
- Rspn='DECL' if payment failed (e.g. customer has not completed the payment in app or merchant has deleted the QR code)

OPTIONAL: If transaction type is preauthorization, then terminal (host) needs to complete the payment by sending a nexo Acceptor Completion Advice to the Gateway.

FieldPresenceValue
MsgFctnMFCMV
Tx/TxCaptrMtrue
Tx/SvcAttrMPRES
Tx/TxTpMRESA
Tx/TxDtls/TtlAmtMCompleted amount - lower or equal to reserved amount
Tx/TxDtls/CcyM Only AED is supported.
Tx/OrgnlTx/RcptTxIdCReference to original transaction. Alternatively, terminal can send SaleRefId
TxSucssMtrue

OPTIONAL: If the terminal (host) doesn't receive a successful response within the defined period, the customer cancels the payment, the customer hasn't scanned the QR code in time or there's any kind of malfunction on the terminal, then the terminal (host) should send an auto-void to IPG by using negative Acceptor Completion Advice with Tx/FailrRsn.

FieldPresenceValue
Tx/OrgnlTx/RcptTxIdCReference to original transaction. Alternatively, terminal can send SaleRefId
Tx/TxCaptrMtrue
Tx/TxSucssMfalse
Tx/TxTpM'RESA' for preauthorization | 'CRDP' for sale
Tx/FailrRsnMDepending on the scenario:
FailrRsn='TIMO' (timeout)
FailrRsn='CUCL' (customer cancellation)
FailrRsn='MALF' (malfunction)

Want a quick overview?