# EMV Application Selection Process

When cardholder interaction is required for application/acquirer selection or cardholder confirmation, the Reader must pause the transaction and return control to the Payment Application by sending the response to the Start Transaction with callback as onAppSelectionRequired. In addition to this the response data should include a list of applications that need to be displayed for the cardholder to select one application. In addition, for multi-acquirer setups, the data for each application must also contain a list of associated acquirers from which the user will be required to pick one acquirer.

During a CT EMV Transaction, at least one response with Status set to "Application Selection Required" MUST be sent in the transaction flow, even if there is only one AID in the candidate list and Cardholder Confirmation is not required for this AID. In this case the Poynt will not present the AID to the user for selection but will auto-select this AID after applying the necessary rules on how the given card should be processed (Credit or Debit, DCC enabled or not, etc.). If cardholder confirmation is required, then the Poynt will follow the normal EMV rules on how to handle the AID.

During a CL EMV Transaction, at least one response with Status set to "Application Selection Required" MUST be sent in the transaction flow, even if there is only one AID in the candidate list. In this case Poynt will not present the AID to the user for selection but will auto-select this AID after applying the necessary processing rules.

During a CL EMV Transaction, when the Reader sends this response, it must include the POS Entry Mode (Tag 9F39) data item in the response data in addition to the other data items to indicate that this is a Contactless transaction.

# For Contact (CT) Cards

This parameter indicates whether the Reader should ALWAYS send an Application Selection Required response to Poynt or only send it intelligently when needed.

Tag: 1F8164 Format: b1

Applies to CT Only

Presence: Optional

Default Value: 00 (If Tag is missing)

Possible Values:

01: The Reader should always send App Selection
   	  Required request to the Terminal and not auto-select
         an AID when it can (such as when there is a single
	     AID in the candidate list and no cardholder
    	 confirmation is required).
   00: The Reader should send an Application Selection  
         Required request to the Terminal intelligently only
   	  when needed i.e.
(a)   If a selection is to be made from multiple AIDs or
(b)   There is a single AID for which cardholder confirmation is required.
It should not send an Application Selection Required  request to the Terminal if there is a single application in the candidate list and no cardholder confirmation is required (i.e. the Reader should auto-select the AID in this case).

# For Contactless (CL) Cards

In case of Contactless cards, Payment Application on Android side could request Card Reader to invoke a special flow that allows Payment Application to prioritize and select the Application after enforcing certain business rules.

The following configuration tag could be sent by the Payment Application either as part of StartTransaction request or pre-set as part of the Card Reader EMV Configuration parameters.

Tag: 1F8207 Format: b

Applies to: CL Only

Presence: Optional

If this data item is missing, then no special flows will be used.

The data is encoded as follows.

Bit 0: Android App Selection
          	Value = 0: Disabled
             	When disabled, the Reader will perform CL App
             	Selection as per the CL EMV L2 requirements.
             	This is the preferred setting to comply with L2
             	certifications.
          	Value = 1: Enabled
             	When Android App Selection is enabled,
             	the Reader will allow the Android Terminal to
             	select an application and will not select the
             	highest priority application itself.
                 This setting allows the Android to support
             	features such as allowing the Android Terminal
             	to decide whether to treat an AID as a credit or
             	debit AID, support Common Debit AIDs as
    	         higher priority apps, etc.
             	Note: Enabling this feature will violate the CL
             	EMV Level 2 Requirements.
          	Refer to the following appendices for more details.
             	CL EMV Special Flow (Multi-Acquirer)
             	CL EMV Special Flow (Normal)
             	CL CUP QPS Special Flow
 	Bit 1: Single Tap App Selection
          	Value = 0: Double-Tap App Selection
             	This requires the card to be removed to allow
             	user interaction to assist in the selection process
             	after PPSE and before final selection. The card
             	must be re-presented before final selection can
             	be attempted.
             	Note: Enabling this feature will violate the CL
             	EMV Level 2 Requirements.
          	Value = 1: Single-Tap App Selection
             	The Reader will allow the Android Terminal to
              	do App Selection in a single card presentment
              	i.e. it will not enforce card removal or double-
              	tap. This can be used when the Android auto-
              	selects the AID.
              	Note: Enabling this feature will violate the CL
              	EMV Level 2 Requirements.
Bit 2: Always Send App Selection Required for CL
          	This parameter indicates whether the Reader
          	should ALWAYS send an Application Selection
          	Required Status to the Terminal or only send it
          	intelligently when needed. This only applies to CL
          	Transactions.
          	Value = 0: Intelligently Send App Sel Required
                           	for CL (Default if Tag is missing).
              	The Reader should send an Application
              	Selection Required request to the Terminal for
              	CL intelligently and only when needed i.e. If a
              	selection is to be made from multiple CL AIDs.
              	It should not send an Application Selection
              	Required request to the Terminal if there is a                           
              	single application in the candidate list (i.e. the
              	Reader should auto-select the AID in this case).
          	Value = 1: Always Send App Sel Required for CL.
              	The Reader should always send App Selection
              	Required request to the Terminal for CL and not
              	auto-select a CL AID when it can (such as
              	when there is a single AID in the candidate list.
          	Note: Bit 2 must be set to 1 if Android App
                    	Selection is being used to allow Android to
                    	perform any special processing based on
                    	the AID selected, such as for CL CUP QPS
                 	   Special Flow.
  	Bits 3-7: RFU. These bits must be set to zero.
Last Updated: 9/30/2020, 3:44:52 PM