EMV Contactless Payment Flow Visualizer

Step-by-step visualization of an EMV contactless payment transaction. Walk through every APDU command and response — from card detection to cryptogram generation. See exactly what SELECT PPSE, GPO, READ RECORD, and GENERATE AC look like on the wire. Essential for EMVCo kernel developers and payment terminal testers.

This is a reference trace of a typical EMV contactless transaction (Visa payWave / Mastercard PayPass / Amex ExpressPay). Actual APDU data varies by card and terminal configuration. Use our EMV Cryptogram Visualizer to compute ARQC/ARPC with your own data.

Related Tools

EMV Cryptogram Visualizer | EMV TLV Parser | CVM List Decoder | APDU Command Builder

Understanding Contactless Payment Flow

The contactless transaction flow follows the EMVCo Contactless Communication Protocol specification. When a card enters the terminal's RF field, a sequence of protocol steps occurs before any payment application logic begins. The terminal first performs anti-collision and activation per ISO 14443-3, then selects the payment application via PPSE (Proximity Payment Systems Environment), and finally executes the EMV contactless kernel to process the transaction.

PPSE and Application Selection

The terminal sends a SELECT command targeting the PPSE AID (2PAY.SYS.DDF01). The card responds with an FCI (File Control Information) template containing a list of available payment applications and their priority indicators. The terminal selects the highest-priority application and retrieves the PDOL (Processing Data Object List), which specifies what terminal data the card needs to proceed.

GPO and Data Reading

The terminal sends GET PROCESSING OPTIONS (GPO) with the PDOL data. The card returns AIP (Application Interchange Profile) and AFL (Application File Locator). The AFL tells the terminal which records to read using READ RECORD commands. Each record contains EMV data objects like PAN, expiry date, CDOL1, CVM List, and Application Usage Control.

Cryptogram Generation

After reading all application data, the terminal sends GENERATE AC with CDOL1 data. The card responds with a cryptogram: ARQC (Authorization Request Cryptogram) for online transactions, TC (Transaction Certificate) for offline approval, or AAC (Application Authentication Cryptogram) for decline. The CID byte (9F27) indicates which cryptogram type was returned. For online transactions, the issuer validates the ARQC and returns ARPC, which the card verifies before issuing a final TC.

Contactless vs Contact Transaction Differences

While both use the same EMV application layer (SELECT, GPO, READ RECORD, GENERATE AC), the contactless path adds several protocol layers below it. The card first goes through ISO 14443-3 anti-collision (REQA/WUPA, ANTICOLLISION, SELECT) before activating ISO 14443-4 transport protocol (R-PDU/I-PDU framing). The terminal must handle protocol parameter negotiation (FSDI/CID/NAD) and may need to switch between T=CL block chaining modes. A key optimization in contactless EMV is that the PPSE response, AID selection, and GPO can sometimes be combined using the EMVCo Contactless Communication Protocol's "alternate command set" to reduce round trips — crucial for the sub-500ms transaction time target.

Visa payWave vs Mastercard PayPass vs Amex ExpressPay

Each payment scheme implements the EMV contactless kernel differently. Visa payWave uses a "Quick Chip" approach that streamlines GPO and allows data reading after cryptogram generation. Mastercard PayPass (now M/Chip) uses the M/Chip Advance kernel with unique handling of M-CHIP-based IAD (tag 9F10) format and a specific CDA signature. Amex ExpressPay uses the EMVCo common kernel but adds ExpressPay-specific CVM rules (like "no CVM required" for small amounts). All three expose the same high-level steps visible in the flow visualizer above, but the PDOL contents, IAD structure, and CVM processing differ significantly. When debugging a contactless transaction, check the AID in the PPSE response to determine which kernel is active.

Transaction Time Budget and Optimization

The EMVCo specification targets a total contactless transaction time under 400-500ms from field activation to card removal. Each APDU round trip consumes roughly 20-40ms, so the 6-step flow above typically takes 150-250ms. Terminal-side processing (risk management, CVM evaluation, issuer host communication) must fit within the remaining budget. To accelerate transactions, some kernels pre-select the AID without PPSE (known AID fast path), combine READ RECORD commands for multiple records, or skip CDA signature verification for small-amount transactions (relying on online ARQC verification instead). The AFL optimization flag (byte 4 of each AFL entry) tells the terminal which records contain static data that can be cached across transactions.

Debugging Contactless Failures

Common contactless transaction failures include: no PPSE response (card not in field, wrong protocol, low battery on mobile); no GPO response (wrong PDOL data format — check byte order and encoding); 6A82 on READ RECORD (AFL points to a record that doesn't exist — card may be misconfigured); declined by AAC (card risk management declined the transaction — check CVR in tag 9F52, ATC in 9F36, and terminal risk parameters). Use the APDU Debugger to decode each response, and the EMV TLV Parser to inspect the raw response data byte by byte.

Follow the Flow on a Reader

The anti-collision and activation flow the guide describes plays out on the wire; watch it live.

ACR122U NFC Reader ACR122U NFC Reader (~$40) — Observe REQA/ATQA/SAK exchange directly; the flow diagrams in this page match its output.
Check Price on Amazon

Disclosure: As an Amazon Associate, CardWise earns from qualifying purchases at no additional cost to you. This does not affect our recommendations.