Point-of-sale 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 the card transactions through the issuer of your custom cards.

How it works

To enable using custom cards on our payment terminals, contact our Support Team

  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 EnableServiceRequest to stop the card acquisition request on the terminal.

Make a card acquisition request

  1. Make a POST request to a Terminal API endpoint, specifying:

    • MessageHeader: the standard SaleToPOIRequest.MessageHeader object. Specify:

      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].
    • CardAcquisitionRequest : the request body 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. When you don't know the amount yet, you can omit this parameter or specify an initial amount and provide the final amount later, in the payment request.
      • PaymentType (optional): if you intend to continue with a payment, either omit this parameter or specify Normal. If you intend to continue with an unreferenced refund, see Card check before refund.
  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.TrackNumber: the number on the track on the Magstripe that holds the encoded data. Value 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 EnableServiceRequest. This stops the loading screen and the terminal discards the card data.

  1. Make a POST request to a Terminal API endpoint, specifying:

    • MessageHeader: the standard SaleToPOIRequest.MessageHeader object. Specify:

      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].
    • EnableServiceRequest : the request body 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