# Basic functionality requirements

To integrate with Google Wallet, the following basic functionalities must be
implemented.

## EMV certification

Terminals need to meet EMVCo Level 1 and 2 certification. For more details, see the
[EMVCo website](https://www.emvco.com/).

## Offline data authentication

To allow users quick passage through a terminal, transit terminals must support
[Offline data authentication (ODA)](https://en.wikipedia.org/wiki/EMV#Offline_data_authentication_(ODA)). ODA is a cryptographic check that
allows a payment terminal to perform offline authentication with a contactless payment card or
mobile device. ODA provides a high level of trust that the card presented is genuine. It allows
the transit gate to open without a need for the user to wait for the network to process the
payment. ODA is also used when transit terminals are intermittently offline. When the transit
terminal is back online, the payment is processed.

The ODA feature is ideal for transit stations that have terminals that aren't always online or
have less-reliable connections. It's also used when payment processing time might slow the
commuter down as they enter the gate. The gates usually open within 500 milliseconds of when the
user taps their mobile device.

To use ODA, the transit terminal needs to be configured correctly. Contact your payment processor
or system integrator for details on how to configure the terminals.

Google Wallet supports ODA for the following networks:

- Visa
- Mastercard
- Amex

> [!NOTE]
> **Note:** If a transit terminal is online with a highly reliable and fast internet connection, the open loop transaction still works. However, the transaction is treated like a simple merchant transaction rather than a specific "transit" tap.

## Polling and card clash

Physical NFC cards have a static UID. However, all Android mobile devices have a dynamic UID that
changes on every transaction. This adds a level of privacy for users because it prevents tracking, but
it can cause a "card clash," which is when transit terminals recognize more than one card in the
NFC field.

As a user approaches a terminal with their phone, the NFC field strength increases and their
device might start a transaction before the field is strong and stable enough to establish a
connection. If the phone loses connection, it stops and retries the transaction. This causes the
mobile device UID to change, and if the terminal is configured with card clash logic, it might
falsely recognize more than one UID in a short span and stops the transaction. This situation is
exacerbated when terminals with card clash logic have terminal polling speeds that are too high.
To resolve this situation, either disable the UID card clash logic or lower the polling speed of
the terminal.

## AID select, PPSE, and ePPSE

For terminals that support both open loop and closed loop cards, it's best to set them up in the
following order:

1. All the closed loop cards that use AID select first.
2. All open loop cards that use PPSE.

### ePPSE

ePPSE is a new specification from EMVCo that helps provide information from the terminal to the
mobile device about the type of transaction right before the transaction occurs. This allows the
phone to choose a specific payment card, predefined by the user, for that particular type of
transaction. For transit, this could mean setting a default card for transit, which would override
the default payment card, when tapped on a transit terminal.

Google Wallet does not currently support ePPSE, however if you are interested in enabling ePPSE
for transit, please indicate that when you submit the
[open loop
transit form](https://support.google.com/pay/merchants/contact/open_loop_transit_onboarding) to Google Wallet.