Terminal-2 icon

Custom cards

Use our payment terminals to read cards that are not compliant with PCI DSS.

You can use Adyen payment terminals to read your own custom cards, such as employee benefit cards, and send the data to your POS system. You can then process transactions with that card through the issuer of your custom cards.

Requirements

Before you begin, take into account the following requirements, limitations, and preparations.

Requirement Description
Integration type A Terminal API integration with payment terminals.
Limitations Only custom cards with a magnetic stripe are supported.
Setup steps Before you begin, ask our Support Team to enable reading custom cards on your Adyen payment terminals.

How it works

  1. You make a card acquisition request.
  2. On the terminal, the shopper swipes the card.

    The only entry method for custom cards is Swipe.

  3. You receive the card data in the card acquisition response.
  4. You pass the data from the card acquisition response to the card issuer.
  5. You send an enable service request to stop the card acquisition flow on the terminal.

Make a card acquisition request

To read the custom card:

  1. Make a Terminal API card acquisition request, specifying:

    • The standard SaleToPOIRequest.MessageHeader object, with MessageClass set to Service and MessageCategory set to CardAcquisition.

      Parameter Required Description
      ProtocolVersion -white_check_mark- 3.0
      MessageClass -white_check_mark- Service
      MessageCategory -white_check_mark- CardAcquisition
      MessageType -white_check_mark- Request
      ServiceID -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- Your unique ID for the POS system component to send this request from.
      POIID -white_check_mark- The unique ID of the terminal to send this request to. Format: [device model]-[serial number].
    • The CardAcquisitionRequest object with:

      Parameter Required Description
      SaleData.SaleTransactionID -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.
      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- A required object that can be empty or contain:
      • TotalAmount (optional): The transaction amount. It is allowed to omit this parameter or to specify an initial placeholder amount.
  2. When the card acquisition succeeds, you receive a CardAcquisitionResponse with message=CARD_ACQ_COMPLETED inside Response.AdditionalResponse. From the PaymentInstrumentData.CardData.SensitiveCardData object, save:

    • PAN: The value that uniquely identifies the shopper's card, for example 88154351166602100.
    • TrackData.TrackNumb: The number on the track on the Magstripe that holds the encoded data. The vaalue can be 1, 2, or 3.
    • TrackData.TrackValue: The raw value of the Magstripe track information, with the Sentinel values.

Complete the card acquisition

The card acquisition loading screen will continue to show until it times out. To free up the terminal to process other transactions, you need to make an enable service request. This stops the loading screen and the terminal discards the card data.

  1. Make a Terminal API enable service request, specifying:

    • The standard SaleToPOIRequest.MessageHeader object, with MessageClass set to Service and MessageCategory set to EnableService.

      Parameter Required Description
      ProtocolVersion -white_check_mark- 3.0
      MessageClass -white_check_mark- Service
      MessageCategory -white_check_mark- EnableService
      MessageType -white_check_mark- Request
      ServiceID -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- Your unique ID for the POS system component to send this request from.
      POIID -white_check_mark- The unique ID of the terminal to send this request to. Format: [device model]-[serial number].
    • The EnableServiceRequest object with:

      Parameter Required Description
      TransactionAction -white_check_mark- AbortTransaction.
      DisplayOutput Optional object to show your own message and an 'Approved' icon (green check mark) or a 'Declined' icon (red cross).

    The next example is the basic request, without DisplayOutput object, to end the card acquisition flow with a cancellation. The terminal will show Canceled, a red cross , and Transaction canceled. You can also choose a custom message on the payment terminal display.

See also