{"title":"Custom cards","category":"default","creationDate":1702474380,"content":"<p>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.<\/p>\n<h2>Requirements<\/h2>\n<p>Before you begin, take into account the following requirements, limitations, and preparations.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Requirement<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>Integration type<\/strong><\/td>\n<td style=\"text-align: left;\">A <a href=\"\/pt\/point-of-sale\/basic-tapi-integration\/\">Terminal API integration<\/a> with payment terminals.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Limitations<\/strong><\/td>\n<td style=\"text-align: left;\">Only custom cards with a magnetic stripe are supported.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Setup steps<\/strong><\/td>\n<td style=\"text-align: left;\">Before you begin, ask our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a> to enable reading custom cards on your Adyen payment terminals.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>How it works<\/h2>\n<ol>\n<li>You make a card acquisition request.<\/li>\n<li>On the terminal, the shopper swipes the card.\n<div class=\"notices yellow\">\n<p>The only entry method for custom cards is <span translate=\"no\"><strong>Swipe<\/strong><\/span>.<\/p>\n<\/div><\/li>\n<li>You receive the card data in the card acquisition response.<\/li>\n<li>You pass the data from the card acquisition response to the card issuer.<\/li>\n<li>You send an enable service request to stop the card acquisition flow on the terminal.<\/li>\n<\/ol>\n<h2 id=\"card-acquisition-request\">Make a card acquisition request<\/h2>\n<p>To read the custom card:<\/p>\n<ol>\n<li>\n<p>Make a <a href=\"\/pt\/point-of-sale\/design-your-integration\/terminal-api\">Terminal API<\/a> card acquisition request, specifying:<\/p>\n<ul>\n<li>\n<p>The standard <a href=\"\/pt\/point-of-sale\/design-your-integration\/terminal-api#request-message-header\">\n  <code>SaleToPOIRequest.MessageHeader<\/code>\n<\/a> object, with <code>MessageClass<\/code> set to <span translate=\"no\"><strong>Service<\/strong><\/span> and <code>MessageCategory<\/code> set to <span translate=\"no\"><strong>CardAcquisition<\/strong><\/span>.<\/p>\n<table>\n<thead>\n<tr>\n<th>Parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>ProtocolVersion<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><strong>3.0<\/strong><\/td>\n<\/tr>\n<tr>\n<td><code>MessageClass<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Service<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td><code>MessageCategory<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>CardAcquisition<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td><code>MessageType<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Request<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td><code>ServiceID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal (<code>POIID<\/code>) being used.<\/td>\n<\/tr>\n<tr>\n<td><code>SaleID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">Your unique ID for the POS system component to send this request from.<\/td>\n<\/tr>\n<tr>\n<td><code>POIID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">The unique ID of the terminal to send this request to. Format: <em>[device model]-[serial number]<\/em>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>The  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/cardacquisition\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">CardAcquisitionRequest<\/a> object with:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>SaleData.SaleTransactionID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">An object with: <ul><li markdown=\"1\"><code>TransactionID<\/code>: your reference to identify a payment. We recommend using a unique value per payment.<\/li> <li markdown=\"1\"><code>TimeStamp<\/code>: date and time of the request in <a href=\"https:\/\/en.wikipedia.org\/wiki\/ISO_8601#Coordinated_Universal_Time_(UTC)\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">UTC format<\/a>.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleData.TokenRequestedType<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Customer<\/strong><\/span>. Returns the card alias in the <code>TokenValue<\/code> field of the response. Note that the card alias is always returned in the <code>AdditionalResponse<\/code>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>CardAcquisitionTransaction<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">A required object that can be empty or contain: <ul><li markdown=\"1\"><code>TotalAmount<\/code> (optional): The transaction amount. It is allowed to omit this parameter or to specify an initial placeholder amount.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Card acquisition request to read a custom card'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n       \\\"MessageHeader\\\":{\\n           \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n           \\\"MessageClass\\\":\\\"Service\\\",\\n           \\\"MessageCategory\\\":\\\"CardAcquisition\\\",\\n           \\\"MessageType\\\":\\\"Request\\\",\\n           \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n           \\\"ServiceID\\\":\\\"20207111104\\\",\\n           \\\"POIID\\\":\\\"V400m-346403161\\\"\\n       },\\n       \\\"CardAcquisitionRequest\\\":{\\n           \\\"SaleData\\\":{\\n               \\\"SaleTransactionID\\\":{\\n                   \\\"TransactionID\\\":\\\"02072\\\",\\n                   \\\"TimeStamp\\\":\\\"2023-10-18T07:57:045.000Z\\\"\\n               },\\n           },\\n           \\\"CardAcquisitionTransaction\\\":{\\n               \\\"TotalAmount\\\":24.98\\n           }\\n       }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>When the card acquisition succeeds, you receive a  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/cardacquisition#responses-200-Response\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">CardAcquisitionResponse<\/a> with <span translate=\"no\"><strong>message=CARD_ACQ_COMPLETED<\/strong><\/span> inside <code>Response.AdditionalResponse<\/code>. From the <code>PaymentInstrumentData.CardData.SensitiveCardData<\/code> object, save:<\/p>\n<ul>\n<li><code>PAN<\/code>: The value that uniquely identifies the shopper's card, for example <strong>88154351166602100<\/strong>.<\/li>\n<li><code>TrackData.TrackNumb<\/code>: The number on the track on the Magstripe that holds the encoded data. The vaalue can be <strong>1<\/strong>, <strong>2<\/strong>, or <strong>3<\/strong>.<\/li>\n<li><code>TrackData.TrackValue<\/code>: The raw value of the Magstripe track information, with the Sentinel values.<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Card acquisition response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"SaleToPOIResponse\\\": {\\n        \\\"CardAcquisitionResponse\\\": {\\n            \\\"POIData\\\": {\\n                \\\"POITransactionID\\\": {\\n                    \\\"TimeStamp\\\": \\\"2023-10-18T07:57:49.108Z\\\",\\n                    \\\"TransactionID\\\": \\\"8ha5001614946979000\\\"\\n            },\\n            \\\"SaleData\\\": {...}\\n            },\\n            \\\"PaymentInstrumentData\\\": {\\n                \\\"CardData\\\": {\\n                    \\\"MaskedPan\\\": \\\"881543 **** 2100\\\",\\n                    \\\"PaymentBrand\\\": \\\"YOUR_CARD_BRAND\\\",\\n                    \\\"SensitiveCardData\\\": {\\n                        \\\"ExpiryDate\\\": \\\"0228\\\"\\n                        \\\"PAN\\\": \\\"88154351166602100\\\",\\n                        \\\"TrackData\\\": [\\n                         {\\n                          \\\"TrackNumb\\\": 2,\\n                          \\\"TrackValue\\\": \\\";88154351166602100=6006491260550218157?&gt;\\\"\\n                         }\\n                       ]\\n                    }\\n                },\\n                \\\"PaymentInstrumentType\\\": \\\"Card\\\"\\n            },\\n            \\\"Response\\\": {\\n                \\\"AdditionalResponse\\\": \\\"giftcardIndicator=false&amp;iso8601TxDate=2023-10-18T07%3a45%3a59.261Z&amp;merchantReference=369&amp;message=CARD_ACQ_COMPLETED&amp;paymentMethod=YOUR_CARD_BRAND&amp;posAuthAmountCurrency=EUR&amp;osAuthAmountValue=0&amp;posEntryMode=MSR&amp;posOriginalAmountValue=0&amp;posadditionalamounts.originalAmountCurrency=EUR&amp;tid=52251152&amp;transactionType=GOODS_SERVICES&amp;txdate=18-10-2023&amp;txtime=09%3a45%3a59\\\",\\n                \\\"Result\\\": \\\"Success\\\"\\n            },\\n            \\\"SaleData\\\": {\\n                \\\"SaleTransactionID\\\": {\\n                    \\\"TimeStamp\\\": \\\"2023-10-18T07:45:59.249Z\\\",\\n                    \\\"TransactionID\\\": \\\"882\\\"\\n                }\\n            }\\n        },\\n        \\\"MessageHeader\\\": {...}\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ol>\n<h2>Complete the card acquisition<\/h2>\n<p>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.<\/p>\n<ol>\n<li>\n<p>Make a <a href=\"\/pt\/point-of-sale\/design-your-integration\/terminal-api\">Terminal API<\/a> enable service request, specifying:<\/p>\n<ul>\n<li>\n<p>The standard <a href=\"\/pt\/point-of-sale\/design-your-integration\/terminal-api#request-message-header\">\n  <code>SaleToPOIRequest.MessageHeader<\/code>\n<\/a> object, with <code>MessageClass<\/code> set to <span translate=\"no\"><strong>Service<\/strong><\/span> and <code>MessageCategory<\/code> set to <span translate=\"no\"><strong>EnableService<\/strong><\/span>.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>ProtocolVersion<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><strong>3.0<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageClass<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Service<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageCategory<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>EnableService<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>MessageType<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>Request<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>ServiceID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal (<code>POIID<\/code>) being used.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>SaleID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">Your unique ID for the POS system component to send this request from.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>POIID<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">The unique ID of the terminal to send this request to. Format: <em>[device model]-[serial number]<\/em>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>The  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/terminal-api\/latest\/post\/enableservice\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">EnableServiceRequest<\/a> object with:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>TransactionAction<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>AbortTransaction<\/strong><\/span>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>DisplayOutput<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\"><a href=\"\/pt\/point-of-sale\/card-acquisition\/#alternative\">Optional object<\/a> to show your own message and an 'Approved' icon (green check mark) or a 'Declined' icon (red cross).<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<p>The next example is the basic request, without <code>DisplayOutput<\/code> object, to end the card acquisition flow with a cancellation. The terminal will show <em>Canceled<\/em>, a red cross <strong><img alt=\"\" src=\"\/images\/6\/2\/0\/e\/0\/620e0c5c343676dd2b947bbdb1573f7eebc3caf7-cancel2x.png\" \/><\/strong>, and <em>Transaction canceled<\/em>. You can also choose a <a href=\"\/pt\/point-of-sale\/card-acquisition\/#alternative\">custom message<\/a> on the payment terminal display.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Basic request to cancel the card acquisition data'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"MessageHeader\\\":{\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageClass\\\":\\\"Service\\\",\\n         \\\"MessageCategory\\\":\\\"EnableService\\\",\\n         \\\"MessageType\\\":\\\"Request\\\",\\n         \\\"ServiceID\\\":\\\"20207111104\\\",\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"POIID\\\":\\\"V400m-346403161\\\"\\n      },\\n      \\\"EnableServiceRequest\\\":{\\n         \\\"TransactionAction\\\":\\\"AbortTransaction\\\"\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ol>\n<h2 id=\"see-also\">See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/point-of-sale\/card-acquisition\"\n                        target=\"_self\"\n                        >\n                    Card acquisition\n                <\/a><\/li><li><a href=\"\/point-of-sale\/gift-cards-terminal-api\"\n                        target=\"_self\"\n                        >\n                    Gift cards and other stored value cards\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/custom-cards","articleFields":{"description":"Use our payment terminals to read cards that are not compliant with PCI DSS.","type":"page","feedback_component":true,"filters_component":false,"decision_tree":"[]","page_id":"4e20c89b-e145-4cec-b2d3-05a190a89466","last_edit_on":"13-12-2023 14:33"},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/point-of-sale\/custom-cards","title":"Custom cards","content":"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.\nRequirements\nBefore you begin, take into account the following requirements, limitations, and preparations.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nA Terminal API integration with payment terminals.\n\n\nLimitations\nOnly custom cards with a magnetic stripe are supported.\n\n\nSetup steps\nBefore you begin, ask our Support Team to enable reading custom cards on your Adyen payment terminals.\n\n\n\nHow it works\n\nYou make a card acquisition request.\nOn the terminal, the shopper swipes the card.\n\nThe only entry method for custom cards is Swipe.\n\nYou receive the card data in the card acquisition response.\nYou pass the data from the card acquisition response to the card issuer.\nYou send an enable service request to stop the card acquisition flow on the terminal.\n\nMake a card acquisition request\nTo read the custom card:\n\n\nMake a Terminal API card acquisition request, specifying:\n\n\nThe standard \n  SaleToPOIRequest.MessageHeader\n object, with MessageClass set to Service and MessageCategory set to CardAcquisition.\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nProtocolVersion\n\n3.0\n\n\nMessageClass\n\nService\n\n\nMessageCategory\n\nCardAcquisition\n\n\nMessageType\n\nRequest\n\n\nServiceID\n\nYour 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.\n\n\nSaleID\n\nYour unique ID for the POS system component to send this request from.\n\n\nPOIID\n\nThe unique ID of the terminal to send this request to. Format: [device model]-[serial number].\n\n\n\n\n\n\n\nThe  CardAcquisitionRequest object with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nSaleData.SaleTransactionID\n\nAn 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.\n\n\nSaleData.TokenRequestedType\n\nCustomer. Returns the card alias in the TokenValue field of the response. Note that the card alias is always returned in the AdditionalResponse.\n\n\nCardAcquisitionTransaction\n\nA 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.\n\n\n\n\n\n\n\n\n\n\nWhen the card acquisition succeeds, you receive a  CardAcquisitionResponse with message=CARD_ACQ_COMPLETED inside Response.AdditionalResponse. From the PaymentInstrumentData.CardData.SensitiveCardData object, save:\n\nPAN: The value that uniquely identifies the shopper's card, for example 88154351166602100.\nTrackData.TrackNumb: The number on the track on the Magstripe that holds the encoded data. The vaalue can be 1, 2, or 3.\nTrackData.TrackValue: The raw value of the Magstripe track information, with the Sentinel values.\n\n\n\n\n\n\nComplete the card acquisition\nThe 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.\n\n\nMake a Terminal API enable service request, specifying:\n\n\nThe standard \n  SaleToPOIRequest.MessageHeader\n object, with MessageClass set to Service and MessageCategory set to EnableService.\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nProtocolVersion\n\n3.0\n\n\nMessageClass\n\nService\n\n\nMessageCategory\n\nEnableService\n\n\nMessageType\n\nRequest\n\n\nServiceID\n\nYour 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.\n\n\nSaleID\n\nYour unique ID for the POS system component to send this request from.\n\n\nPOIID\n\nThe unique ID of the terminal to send this request to. Format: [device model]-[serial number].\n\n\n\n\n\n\n\nThe  EnableServiceRequest object with:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\nTransactionAction\n\nAbortTransaction.\n\n\nDisplayOutput\n\nOptional object to show your own message and an 'Approved' icon (green check mark) or a 'Declined' icon (red cross).\n\n\n\n\n\nThe 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.\n\n\n\n\n\nSee also\n\n\n                    Card acquisition\n                \n                    Gift cards and other stored value cards\n                \n","type":"page","locale":"pt","boost":18,"hierarchy":{"lvl0":"Home","lvl1":"Terminais","lvl2":"Custom cards"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/point-of-sale","lvl2":"\/pt\/point-of-sale\/custom-cards"},"levels":3,"category":"In-person payments","category_color":"green","tags":["Custom","cards"]}}
