AANI
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.
Field | Presence | Value |
---|---|---|
MsgFctn | M | FAUQ |
Envt/Card/CardBrnd | M | AANI |
Envt/POI/GrpId | M | Gateway Store ID |
Envt/POI/Id/Id | M | Terminal ID |
Tx/TxCaptr | M | 'false' for preauthorization | 'true' for sale |
Tx/TxTp | M | 'RESA' for preauthorization | 'CRDP' for sale |
Tx/SvcAttr | C | IRES (only present for preauthorization) |
Tx/TxDtls/AmtQlfr | M | 'RESD' for preauthorization | 'ACTL' for sale |
Tx/TxDtls/TtlAmt | M | |
Tx/TxDtls/Ccy | M | Only AED is supported. |
Cntxt/PmtCntxt/CardPres | M | false |
Cntxt/PmtCntxt/CardhldrPres | M | true |
Cntxt/PmtCntxt/CardDataNtryMd | M | PHYS |
TxId | M | Transaction identifier assigned by terminal (TxDtTm + TxRef) |
CstmrDvc/Tp | M | 'qr_code_based' for QR code payment |
IPG sends nexo Acceptor Authorisation Response incl. QR code string details to terminal (host)
Field | Presence | Value |
---|---|---|
MsgFctn | M | FAUP |
TxRspn/AuthstnRslt/AuthstnNtty/Tp | M | ITAG |
TxRspn/AuthstnRslt/RspnToAuthstn/Rspn | M | Response code + text |
TxRspn/AuthstnCd | M | 000000 |
TxRspn/CmpltnReqrd | M | false |
TxRspn/TxVrfctnRslt/Mtd | M | MANU |
TxRspn/TxVrfctnRslt/AddtlRslt | M | "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/Bal | C | present for preauthorisations |
TxRspn/Actn/ActnTp | M | RQDT |
Tx/RcptTxId | M | Gateway 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.
Field | Presence | Value |
---|---|---|
MsgFctn | M | AUTQ |
Envt/POI/GrpId | M | Gateway Store ID |
Envt/POI/Id/Id | M | Terminal ID |
Cntxt/PmtCntxt/CardPres | M | false |
Cntxt/PmtCntxt/CardhldrPres | M | false |
CardDataNtryMd | M | PHYS |
Tx/TxTp | M | BALC |
TxCaptr | M | false |
TxDtls/TtlAmt | M | 0 |
TxDtls/Ccy | M | AED |
TxDtls/AmtQlfr | M | 'RESD' for preauthorization | 'ACTL' for sale |
TxId | M | Transaction identifier assigned by terminal (TxDtTm + TxRef) |
Tx/OrgnlTx/RcptTxId | C | Reference to original transaction. Alternatively, terminal can send SaleRefId |
IPG sends the status to terminal via nexo Acceptor Authorisation Response.
Field | Presence | Value |
---|---|---|
MsgFctn | M | AUTP |
CmpltnReqrd | M | false |
RspnToAuthstn/Rspn | M | Depending 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.
Field | Presence | Value |
---|---|---|
MsgFctn | M | FCMV |
Tx/TxCaptr | M | true |
Tx/SvcAttr | M | PRES |
Tx/TxTp | M | RESA |
Tx/TxDtls/TtlAmt | M | Completed amount - lower or equal to reserved amount |
Tx/TxDtls/Ccy | M | Only AED is supported. |
Tx/OrgnlTx/RcptTxId | C | Reference to original transaction. Alternatively, terminal can send SaleRefId |
TxSucss | M | true |
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
.
Field | Presence | Value |
---|---|---|
Tx/OrgnlTx/RcptTxId | C | Reference to original transaction. Alternatively, terminal can send SaleRefId |
Tx/TxCaptr | M | true |
Tx/TxSucss | M | false |
Tx/TxTp | M | 'RESA' for preauthorization | 'CRDP' for sale |
Tx/FailrRsn | M | Depending on the scenario:FailrRsn ='TIMO' (timeout)FailrRsn ='CUCL' (customer cancellation)FailrRsn ='MALF' (malfunction) |
Updated about 9 hours ago