--- title: "Quick chip" description: "Use quick chip to reduce the waiting time for shoppers at checkout." url: "https://docs.adyen.com/point-of-sale/quick-chip" source_url: "https://docs.adyen.com/point-of-sale/quick-chip.md" canonical: "https://docs.adyen.com/point-of-sale/quick-chip" last_modified: "2024-10-23T12:59:00+02:00" language: "en" --- # Quick chip Use quick chip to reduce the waiting time for shoppers at checkout. [View source](/point-of-sale/quick-chip.md) In the United States, our terminals support quick chip. This feature allows shoppers to present and remove their EMV chip cards before all the goods have been scanned. The payment terminal does not need to wait for the final transaction amount or the authorization response to allow shoppers to remove their card. This speeds up the transaction processing and reduces the waiting time for shoppers. ## Requirements Before you begin, take into account the following requirements, limitations, and preparations. | Requirement | Description | | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Integration type** | A [Terminal API](/point-of-sale/design-your-integration/terminal-api) integration with payment terminals on software version 1.95 or later. | | **Limitations** | The quick chip feature is only available in the United States. | | **Setup steps** | To enable quick chip, contact our [Support Team](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other). Optionally, you can ask them to enable quick chip for specific local payment methods. | ## How it works 1. You make a card acquisition request to [get the card details](#card-acquisition-request) with a placeholder value for the `TotalAmount`. 2. The shopper presents their card. 3. The terminal informs the shopper to remove their card. 4. You process the details from the card acquisition response in your own system. 5. You make a payment request with the final `TotalAmount` to complete the transaction. ## Get the card details 1. [Make a card acquisition request](/point-of-sale/card-acquisition), specifying: * The standard [`SaleToPOIRequest.MessageHeader` ](/point-of-sale/design-your-integration/terminal-api#request-message-header)object, with `MessageClass` set to **Service** and `MessageCategory` set to **CardAcquisition**. | Parameter | Required | Description | | ----------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ProtocolVersion` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **3.0** | | `MessageClass` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **Service** | | `MessageCategory` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **CardAcquisition** | | `MessageType` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **Request** | | `ServiceID` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal (`POIID`) being used. | | `SaleID` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Your unique ID for the POS system component to send this request from. | | `POIID` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique ID of the terminal to send this request to. Format: *\[device model]-\[serial number]*. | - The [CardAcquisitionRequest](https://docs.adyen.com/api-explorer/terminal-api/latest/post/cardacquisition) object with: | Parameter | Required | Description | | ----------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `SaleData.SaleTransactionID` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | An object with:- `TransactionID`: Your reference to identify a payment. We recommend using a unique value per payment. - `TimeStamp`: The date and time of the request in [UTC format](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_\(UTC\)). | | `SaleData.TokenRequestedType` | | **Customer**. Returns the card alias in the `TokenValue` field of the response. Note that the card alias is always returned in the `AdditionalResponse`. | | `CardAcquisitionTransaction` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | A required object that can be empty or contain `TotalAmount` with the transaction amount. For quick chip, this can be a placeholder value if you do not know the final amount yet. | **Card acquisition request with an initial TotalAmount** ```json { "SaleToPOIRequest":{ "MessageHeader":{ "ProtocolVersion":"3.0", "MessageClass":"Service", "MessageCategory":"CardAcquisition", "MessageType":"Request", "SaleID":"POSSystemID12345", "ServiceID":"2020711110", "POIID":"V400m-346403161" }, "CardAcquisitionRequest":{ "SaleData":{ "SaleTransactionID":{ "TransactionID":"02072", "TimeStamp":"2023-10-18T07:57:045.000Z" }, "TokenRequestedType":"Customer" }, "CardAcquisitionTransaction":{ "TotalAmount":24.98 } } } } ``` 2. When you receive the [CardAcquisitionResponse](https://docs.adyen.com/api-explorer/terminal-api/latest/post/cardacquisition#responses-200-Response): * Check that the `AdditionalResponse` contains a `message` of **CARD\_ACQ\_COMPLETED**. * From the `POIData.POITransactionID` object, save the `TimeStamp` and the `TransactionID`. You need these card acquisition details in your payment request. **Card acquisition response** ```json { "SaleToPOIResponse": { "CardAcquisitionResponse": { "POIData": { "POITransactionID": { "{hint:For use in subsequent payment}TimeStamp{/hint}": "2023-10-18T07:57:49.108Z", "{hint:For use in subsequent payment}TransactionID{/hint}": "8ha5001614946979000" }, "SaleData": {...} }, "PaymentInstrumentData": { "CardData": { "CardCountryCode": "528", "MaskedPan": "541333 **** 9999", "PaymentBrand": "mc", "PaymentToken": { "TokenRequestedType": "Customer", "TokenValue": "M469509594859802" }, "SensitiveCardData": { "ExpiryDate": "0228" } }, "PaymentInstrumentType": "Card" }, "Response": { "AdditionalResponse": "AID=A000000004101002&applicationLabel=MCENUSAUSD&applicationPreferredName=mc%20en%20usa%20usd&cardBin=541333&cardHolderName=AD%20YEN-US&cardIssueNumber=22&cardIssuerCountryId=840&cardSummary=0002&cardType=mc&expiryMonth=12&expiryYear=2029&giftcardIndicator=false&iso8601TxDate=2023-10-18T07%3a45%3a59.261Z&merchantReference=882&message=CARD_ACQ_COMPLETED&paymentMethod=mc&posAmountCashbackValue=0&posAmountGratuityValue=0&posAuthAmountCurrency=USD&posAuthAmountValue=0&posEntryMode=ICC&posOriginalAmountValue=0&posadditionalamounts.originalAmountCurrency=USD&store=store_one&tid=46403161&transactionType=GOODS_SERVICES&txdate=18-10-2023&txtime=09%3a45%3a59&warnings=%aAt%20SaleToPOIRequest.CardAcquisitionRequest%2c%20field%20%27QuickChip%27%3a%20Unexpected%aAt%20SaleToPOIRequest.CardAcquisitionRequest%2c%20field%20%27TransactionConditions%27%3a%20Unexpected%aAt%20SaleToPOIRequest.CardAcquisitionRequest%2c%20field%20%27Validate%27%3a%20Unexpected", "Result": "Success" }, "SaleData": { "SaleTransactionID": { "TimeStamp": "2023-10-18T07:45:59.249Z", "TransactionID": "882" } } }, "MessageHeader": {...} } } ``` ## Make a payment request To complete the quick chip transaction, make a payment request with a reference to the card acquisition: 1. [Make a payment request](/point-of-sale/basic-tapi-integration/make-a-payment), specifying: * The standard [`SaleToPOIRequest.MessageHeader` ](/point-of-sale/design-your-integration/terminal-api#request-message-header)object, with `MessageClass` set to **Service** and `MessageCategory` set to **Payment**. | Parameter | Required | Description | | ----------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ProtocolVersion` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **3.0** | | `MessageClass` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **Service** | | `MessageCategory` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **Payment** | | `MessageType` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **Request** | | `ServiceID` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal (`POIID`) being used. | | `SaleID` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Your unique ID for the POS system component to send this request from. | | `POIID` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique ID of the terminal to send this request to. Format: *\[device model]-\[serial number]*. | - The [PaymentRequest](https://docs.adyen.com/api-explorer/terminal-api/latest/post/payment) object with: | Parameter | Required | Description | | -------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `SaleData.SaleTransactionID` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | An object with:- `TransactionID`: your reference to identify a payment. We recommend using a unique value per payment. - `TimeStamp`: date and time of the request in [UTC format](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_\(UTC\)). | | `SaleData.SaleToAcquirerData` | | Depending on your use case, you may need to provide [tender options](/point-of-sale/add-data/tender-options) or [additional data](/point-of-sale/add-data) here, or a [flag for tax free shopping](/point-of-sale/shopper-recognition/tax-free-shopping). | | `PaymentTransaction.AmountsReq` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | An object with:- `Currency`: the transaction [currency](/development-resources/currency-codes). - `RequestedAmount`: the final transaction amount. | | `PaymentData.CardAcquisitionReference` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | An object referring to the card acquisition:- `TimeStamp`: the time stamp returned in the `POIData.POITransactionID` of the card acquisition response. - `TransactionID`: the transaction ID returned in the `POIData.POITransactionID` of the card acquisition response. | Here is how you make a payment referring to a card acquisition that had a `TimeStamp` of **2023-10-18T07:57:49.108Z** and a `TransactionID` of **8ha5001697615869002**. **Quick chip Payment request** ```json { "SaleToPOIRequest":{ "MessageHeader":{ "ProtocolVersion":"3.0", "MessageClass":"Service", "MessageCategory":"Payment", "MessageType":"Request", "ServiceID":"2020711110", "SaleID":"POSSystemID12345", "POIID":"V400m-346403161" }, "PaymentRequest":{ "SaleData":{ "SaleToAcquirerData":"tenderOption=ReceiptHandler", "SaleTransactionID":{ "TransactionID":"8ha5001697614675003", "TimeStamp":"2023-10-18T07:57:55.662Z" } }, "PaymentTransaction":{ "AmountsReq":{ "Currency":"USD", "RequestedAmount":24.98 } }, "PaymentData":{ "CardAcquisitionReference":{ "TimeStamp":"2023-10-18T07:57:49.108Z", "TransactionID":"8ha5001697615869002" } } } } } ``` 2. In the [PaymentResponse](https://docs.adyen.com/api-explorer/terminal-api/latest/post/payment#responses-200) note the following: * `PaymentInstrumentData.CardData`: The same card details that you received in the card acquisition response. * `Response.AdditionalResponse`: Transaction data, including the same details that you received in the card acquisition response. You receive either [a string of form-encoded key-value pairs or a Base64 string](/point-of-sale/add-data/#receive-additional-data) that you need to decode to get a JSON object. **Payment response** ```json { "SaleToPOIResponse": { "PaymentResponse": { "POIData": { "POIReconciliationID": "1000", "POITransactionID": { "TimeStamp": "2023-10-18T07:57:59.108Z", "TransactionID": "8ha5001697615869002.NBMQMCTJC7TG5S82" }, "SaleData": {...}, "PaymentReceipt": [...], "PaymentResult": { "AmountsResp": { "AuthorizedAmount": 16.98, "Currency": "USD" }, ... "PaymentInstrumentData": { "CardData": { "CardCountryCode": "528", "EntryMode": [ "Contactless" ], "MaskedPan": "541333 **** 9999", "PaymentBrand": "mc", "SensitiveCardData": { "CardSeqNumb": "33", "ExpiryDate": "0228" } }, "PaymentInstrumentType": "Card" } }, "Response": { "AdditionalResponse": "AID=A000000004101002&PaymentAccountReference=Q5BLlWmYkBqsZCZroeVxM2xeBvU0e&acquirerResponseCode=APPROVED&adyen_giving_sale_id=AdyenGiving&adyen_giving_service_id=8ha5747724&alias=B813460732026089&aliasType=Default&applicationLabel=MCENUSAUSD&applicationPreferredName=mc%20en%20usa%20usd&backendGiftcardIndicator=false&batteryLevel=80%25&cardBin=510006&cardHolderVerificationMethodResults=1F0002&cardIssuerCountryId=840&cardScheme=mcpremiumcredit&cardSummary=0002&cardType=mc&expiryMonth=12&expiryYear=2029&giftcardIndicator=false&iso8601TxDate=2023-10-31T10%3a22%3a03.279Z&merchantReference=51&mid=50&offline=false&paymentMethod=mc&paymentMethodVariant=mcpremiumcredit&posAmountCashbackValue=0&posAmountGratuityValue=0&posAuthAmountCurrency=USD&posAuthAmountValue=10000&posEntryMode=ICC&posOriginalAmountValue=10000&posadditionalamounts.originalAmountCurrency=USD&posadditionalamounts.originalAmountValue=10000&pspReference=NBMQMCTJC7TG5S82&shopperCountry=NL&store=martys_guitars&tc=B16183A858B1B73B&tid=46403161&transactionLanguage=en&transactionReferenceNumber=NBMQMCTJC7TG5S82&transactionType=GOODS_SERVICES&txdate=31-10-2023&txtime=11%3a22%3a03", "Result": "Success" }, "MessageHeader": {...} } } ``` If the `Response.Result` is **Success**, the quick chip payment was successful. ## See also * [Card acquisition](/point-of-sale/card-acquisition)