{"title":"Recognizing customers","category":"default","creationDate":1571158920,"content":"<p>After you have <a href=\"\/unified-commerce\/loyalty-program\/create-profiles\">created a profile for a customer<\/a>, you will be able to use the data in their profile to recognize them the next time they purchase in any of your sales channels.<\/p>\n<p>Here we'll show you how to use shopper identifiers received in API responses to recognize a returning customer <a href=\"#recognize-returning-customers-online\">online<\/a> or <a href=\"#recognize-returning-customers-in-store\">in store<\/a>.<\/p>\n<h2>Recognize returning customers online<\/h2>\n<p>Before making their online purchase, your customer will provide you with an email address. They do that, for example, when creating an account for your online store, or when using your guest checkout.<\/p>\n<p>To recognize whether they are a returning customer, check if their contact details match a <code>shopperEmail<\/code> that you have <a href=\"\/unified-commerce\/loyalty-program\/create-profiles#store-customer-data\">stored in your customer database<\/a>.<\/p>\n<ul>\n<li><em>If the email matches<\/em>, they are a returning customer.<\/li>\n<li><em>If the email is not in your database<\/em>, you can <a href=\"\/unified-commerce\/loyalty-program\/create-profiles#create-profile-from-online-payment\">create a customer profile for them<\/a>.<\/li>\n<\/ul>\n<h3>Showing a saved card in your online checkout<\/h3>\n<p>If the customer created an online store account and you have saved and tokenized their card details in a previous point-of-sale payment, you can then offer them a more frictionless online checkout experience by showing their saved card details.<\/p>\n<p>To present a customer's saved card in your online checkout:<\/p>\n<ol>\n<li>\n<p>Using the customer's email address, fetch their <code>shopperReference<\/code> and <code>storedPaymentMethodId<\/code> from your customer database.<\/p>\n<\/li>\n<li>\n<p>If you are using Drop-in or Components, you can also confirm if the customer has saved card details when you make a POST  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/paymentMethods\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/paymentMethods<\/a> call. In this request, additionally include the <code>shopperReference<\/code>.<\/p>\n<p>The following example shows how to do this for a customer with a <code>shopperReference<\/code> of <span translate=\"no\"><strong>ShopperID-A16729<\/strong><\/span>:<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Payment methods request'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"merchantAccount\\\": \\\"YOUR_MERCHANT_ACCOUNT\\\",\\n   \\\"{hint:This is the unique customer reference in your db}shopperReference{\\\/hint}\\\": \\\"ShopperID-A16729\\\",\\n   \\\"amount\\\": {\\n      \\\"currency\\\": \\\"EUR\\\",\\n      \\\"value\\\": 1099\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>You receive a response containing a list of available payment methods, including the customer's stored payment details. You can find the customer's stored card in the <code>storedPaymentMethods<\/code> array.<\/p>\n<p>The example below shows what this response would look like if this customer has a stored <span translate=\"no\"><strong>visa<\/strong><\/span> card. The <code>storedPaymentMethods.id<\/code> should match the <code>storedPaymentMethodId<\/code> that you stored for this customer in your database.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Payment methods response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"paymentMethods\\\":[...],\\n    \\\"storedPaymentMethods\\\":[\\n       {\\n          \\\"brand\\\":\\\"visa\\\",\\n          \\\"expiryMonth\\\":\\\"03\\\",\\n          \\\"expiryYear\\\":\\\"2030\\\",\\n          \\\"holderName\\\":\\\"John Smith\\\",\\n          \\\"{hint: This is the storedPaymentMethodId}id{\\\/hint}\\\":\\\"7219687191761347\\\",\\n          \\\"lastFour\\\":\\\"1111\\\",\\n          \\\"name\\\":\\\"VISA\\\",\\n          \\\"supportedShopperInteractions\\\":[\\n             \\\"Ecommerce\\\",\\n             \\\"ContAuth\\\"\\n          ],\\n          \\\"type\\\":\\\"scheme\\\"\\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>Present your customer's saved card details, and show a CVC\/CVV field to collect their card security code.<\/p>\n<ul>\n<li>\n<p>If you are using <strong>Drop-in<\/strong>, this integration supports showing saved card details by default. For presenting your customer's saved card details with <a href=\"\/payment-methods\/cards#how-do-you-want-to-integrate\">Components<\/a>, refer to <a href=\"\/payment-methods\/cards\/web-component#recurring-payments\">Web<\/a>, <a href=\"\/payment-methods\/cards\/ios-component#recurring-payments\">iOS<\/a>, or <a href=\"\/payment-methods\/cards\/android-component\/#recurring-payments\">Android<\/a>. Both Drop-in and Components integrations present the saved card details, and collect and encrypt your customer's card security code.<\/p>\n<\/li>\n<li>\n<p>If you are using an <a href=\"\/payment-methods\/cards\/api-only\">API-only integration<\/a>, you need to build your own UI to show the stored card details and to collect your customer's card security code. You can either build a custom <a href=\"\/payment-methods\/cards\/custom-card-integration#recurring-payments\">card integration with encryption<\/a>, or submit <a href=\"\/payment-methods\/cards\/raw-card-data#recurring-payments\">raw card data<\/a> if you are <a href=\"\/development-resources\/pci-dss-compliance-guide?tab=api_only_4\">fully PCI compliant<\/a>.<\/p>\n<!-- list separator -->\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>If the customer chooses to pay with their saved card, continue with the payment by making a POST  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments<\/a> request. In this request, additionally include:<\/p>\n<ul>\n<li><code>shopperReference<\/code>: the customer's <code>shopperReference<\/code>, from your database.<\/li>\n<li><code>shopperInteraction<\/code>: set this to <span translate=\"no\"><strong>ContAuth<\/strong><\/span> to indicate that the customer is a returning customer.<\/li>\n<li><code>recurringProcessingModel<\/code>: set to <span translate=\"no\"><strong>CardOnFile<\/strong><\/span> to specify a one-off payment.<\/li>\n<li>\n<p><code>paymentMethod<\/code>: an object that contains the customer's card details:<\/p>\n<ul>\n<li><code>storedPaymentMethodId<\/code>: the customer's tokenized card details.<\/li>\n<li>\n<p><code>encryptedSecurityCode<\/code> or <code>cvc<\/code>:  the customer's card security code sent either as encrypted data (returned from Drop-in, Components, or custom card integration) or as raw data (if you are fully PCI compliant).<\/p>\n<!-- list separator -->\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>The following example shows how to make a payment for a customer with a <code>shopperReference<\/code> of  <span translate=\"no\"><strong>ShopperID-A16729<\/strong><\/span>, and a <code>storedPaymentMethodId<\/code> of <strong>7219687191761347<\/strong>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Online payment request'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"amount\\\":{\\n      \\\"value\\\":2000,\\n      \\\"currency\\\":\\\"USD\\\"\\n   },\\n   \\\"paymentMethod\\\":{\\n      \\\"type\\\": \\\"scheme\\\",\\n      \\\"storedPaymentMethodId\\\":\\\"7219687191761347\\\",\\n      \\\"encryptedSecurityCode\\\": \\\"adyen_737x19daxH...\\\"\\n   },\\n   \\\"reference\\\":\\\"YOUR_ORDER_NUMBER\\\",\\n   \\\"merchantAccount\\\":\\\"YOUR_MERCHANT_ACCOUNT\\\",\\n   \\\"returnUrl\\\":\\\"https:\\\/\\\/your-company.example.com\\\/...\\\",\\n   \\\"shopperReference\\\":\\\"ShopperID-A16729\\\",\\n   \\\"shopperInteraction\\\":\\\"ContAuth\\\",\\n   \\\"recurringProcessingModel\\\": \\\"CardOnFile\\\"\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>If the payment is successful you receive a <code>resultCode<\/code> of <span translate=\"no\"><strong>Authorised<\/strong><\/span>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Online payment response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"pspReference\\\": \\\"881532984281546H\\\",\\n   \\\"resultCode\\\": \\\"Authorised\\\"\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ol>\n<h2>Recognize returning customers in store<\/h2>\n<p>When a customer makes a purchase at the point of sale, you can check if they are a returning customer by making a <em>card acquisition<\/em> request.<\/p>\n<p>Check if the card <code>alias<\/code> returned in the response matches a card alias that you have <a href=\"\/unified-commerce\/loyalty-program\/create-profiles#store-customer-data\">stored in your customer database<\/a>.<\/p>\n<ul>\n<li><em>If the alias matches<\/em>, they are a returning customer.<\/li>\n<li><em>If the alias is not in your database<\/em>, you can <a href=\"\/unified-commerce\/loyalty-program\/create-profiles#create-profile-from-point-of-sale-payment\">create a customer profile for them<\/a>.<\/li>\n<\/ul>\n<div class=\"notices blue\">\n<p>Apart from the card alias, the card acquisition request returns the <code>shopperReference<\/code> if you have previously stored it on our platform. You can also use that data to check whether the customer is a returning customer.<\/p>\n<\/div>\n<p>To recognize a customer when they make a purchase at the point of sale:<\/p>\n<ol>\n<li>\n<p>Make a <a href=\"\/point-of-sale\/card-acquisition\">card acquisition request<\/a>.<\/p>\n<p>The example below shows a card acquisition request for a customer who is making a <strong>EUR&nbsp;10.99<\/strong> purchase.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Card acquisition request'\" :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\\\":\\\"0207111104\\\",\\n            \\\"POIID\\\":\\\"V400m-324688179\\\"\\n        },\\n        \\\"CardAcquisitionRequest\\\": {\\n            \\\"SaleData\\\": {\\n                \\\"SaleTransactionID\\\": {\\n                    \\\"TransactionID\\\": \\\"15890\\\",\\n                    \\\"TimeStamp\\\": \\\"2019-12-04T12:02:49.000Z\\\"\\n                },\\n            },\\n            \\\"CardAcquisitionTransaction\\\": {\\n                \\\"TotalAmount\\\": 10.99\\n            }\\n        }\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>You receive a response that includes an <code>AdditionalResponse<\/code> object, with a base64-encoded string that you need to decode to get a JSON object, or a string of form-encoded key-value pairs. In our examples, we use form-encoded key-value pairs.<\/p>\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\\\": \\\"2019-12-04T12:02:49.000Z\\\",\\n                    \\\"TransactionID\\\": \\\"4rVu001575460969123\\\"\\n                },\\n                \\\"POIReconciliationID\\\": \\\"1000\\\"\\n            },\\n            \\\"SaleData\\\": {\\n                \\\"SaleTransactionID\\\": {\\n                    \\\"TimeStamp\\\": \\\"2019-12-04T12:02:49.000Z\\\",\\n                    \\\"TransactionID\\\": \\\"15890\\\"\\n                }\\n            },\\n            \\\"PaymentInstrumentData\\\": {...},\\n            \\\"Response\\\": {\\n                \\\"Result\\\": \\\"Success\\\",\\n                \\\"AdditionalResponse\\\":\\\"...alias=M469509594859802...shopperReference=ShopperID-A16729&amp;recurringDetailReference=...\\\"\\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<li>\n<p>Use the card <code>alias<\/code> in the <code>AdditionalResponse<\/code> object to look up the customer in your customer database.<br \/>\nIf you have previously stored the <code>shopperReference<\/code> with Adyen, this is also provided in this response.<\/p>\n<ul>\n<li>If you have a customer profile with the same <code>alias<\/code>, they are a returning customer.<\/li>\n<li>\n<p>If you <em>do not<\/em> have a customer profile with the same <code>alias<\/code> the customer's card is not recognized. This usually means that the customer is new, and has not purchased with you before. However, they could also be a returning customer using a new card.<\/p>\n<!-- list separator -->\n<\/li>\n<\/ul>\n<p>To confirm, you can <a href=\"\/unified-commerce\/loyalty-program\/create-profiles#create-profile-from-point-of-sale-payment\">collect their email address<\/a>, then check whether this matches a <code>shopperEmail<\/code> stored in your customer database:<\/p>\n<ul>\n<li>If the email matches a <code>shopperEmail<\/code> in your database, they are a returning customer. Ask them if they want to save their new card. If they do, tokenize their new card using their <code>shopperReference<\/code> from your database when you make a payment.<\/li>\n<li>\n<p>If the email is not your database, they are a new customer. Continue with the transaction, and <a href=\"\/unified-commerce\/loyalty-program\/create-profiles#create-profile-from-point-of-sale-payment\">create a profile for this customer<\/a>.<\/p>\n<!-- list separator -->\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Continue with the transaction by <a href=\"\/point-of-sale\/card-acquisition#continue-with-payment\">making a payment request from your POS app<\/a>, containing data returned in the card acquisition response.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Terminal API Request'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIRequest\\\":{\\n      \\\"MessageHeader\\\":{\\n         \\\"ProtocolVersion\\\":\\\"3.0\\\",\\n         \\\"MessageClass\\\":\\\"Service\\\",\\n         \\\"MessageCategory\\\":\\\"Payment\\\",\\n         \\\"MessageType\\\":\\\"Request\\\",\\n         \\\"ServiceID\\\":\\\"0207112304\\\",\\n         \\\"SaleID\\\":\\\"POSSystemID12345\\\",\\n         \\\"POIID\\\":\\\"V400m-324688179\\\"\\n      },\\n      \\\"PaymentRequest\\\":{\\n         \\\"SaleData\\\":{\\n            \\\"SaleTransactionID\\\":{\\n               \\\"TransactionID\\\":\\\"15887\\\",\\n               \\\"TimeStamp\\\":\\\"2019-12-04T12:02:49.000Z\\\"\\n            },\\n            \\\"SaleToAcquirerData\\\":\\\"shopperReference=ShopperID-A16729&amp;shopperEmail=john.smith@example.com&amp;recurringContract=UnscheduledCardOnFile\\\"\\n         },\\n         \\\"PaymentTransaction\\\":{\\n            \\\"AmountsReq\\\":{\\n               \\\"Currency\\\":\\\"EUR\\\",\\n               \\\"RequestedAmount\\\":10.99\\n            }\\n         },\\n         \\\"PaymentData\\\": {\\n            \\\"CardAcquisitionReference\\\": {\\n               \\\"TransactionID\\\":\\\"4rVu001575460969123\\\",\\n               \\\"TimeStamp\\\":\\\"2019-12-04T12:02:49.000Z\\\"\\n            }\\n         }\\n      }\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>If the request is successful, you receive a response containing:<\/p>\n<ul>\n<li><code>POIData.POITransactionID.TransactionID<\/code>: the transaction identifier for the payment.<\/li>\n<li>\n<p><code>PaymentResponse.Response.Result<\/code>: <span translate=\"no\"><strong>Success<\/strong><\/span><\/p>\n<!-- list separator -->\n<\/li>\n<\/ul>\n<p>The example result below indicates that the payment was successful. The transaction identifier for this payment is <span translate=\"no\"><strong>oLkO0012498220087000.981517998282382C<\/strong><\/span>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Payment response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n   \\\"SaleToPOIResponse\\\":{\\n      \\\"MessageHeader\\\":{...},\\n      \\\"PaymentResponse\\\":{\\n         \\\"POIData\\\":{\\n            \\\"POITransactionID\\\":{\\n               \\\"TransactionID\\\": \\\"oLkO0012498220087000.981517998282382C\\\"\\n           },\\n           ...\\n         },\\n         \\\"Response\\\":{\\n           \\\"Result\\\":\\\"Success\\\"\\n         },\\n         ...\\n      },\\n      \\\"PaymentReceipt\\\":{...}\\n   }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ol>","url":"https:\/\/docs.adyen.com\/unified-commerce\/loyalty-program\/recognize-customers","articleFields":{"description":"Identify your returning customers when they purchase in your online and physical stores.","next_steps_description":"Now that both your sales channels are able to create and recognize customers, you are able to offer these customers with better purchasing experiences.","next_steps":[{"title":"Payment-linked loyalty","description":"Reward your returning customers with a payment-linked loyalty program.","url":"\/unified-commerce\/loyalty-program\/payment-linked-loyalty","required":false},{"title":"Referenced refunds","description":"Refund purchases from any sales channel.","url":"\/unified-commerce\/referenced-refunds","required":false}],"last_edit_on":"18-06-2020 14:30"},"algolia":{"url":"https:\/\/docs.adyen.com\/unified-commerce\/loyalty-program\/recognize-customers","title":"Recognizing customers","content":"After you have created a profile for a customer, you will be able to use the data in their profile to recognize them the next time they purchase in any of your sales channels.\nHere we'll show you how to use shopper identifiers received in API responses to recognize a returning customer online or in store.\nRecognize returning customers online\nBefore making their online purchase, your customer will provide you with an email address. They do that, for example, when creating an account for your online store, or when using your guest checkout.\nTo recognize whether they are a returning customer, check if their contact details match a shopperEmail that you have stored in your customer database.\n\nIf the email matches, they are a returning customer.\nIf the email is not in your database, you can create a customer profile for them.\n\nShowing a saved card in your online checkout\nIf the customer created an online store account and you have saved and tokenized their card details in a previous point-of-sale payment, you can then offer them a more frictionless online checkout experience by showing their saved card details.\nTo present a customer's saved card in your online checkout:\n\n\nUsing the customer's email address, fetch their shopperReference and storedPaymentMethodId from your customer database.\n\n\nIf you are using Drop-in or Components, you can also confirm if the customer has saved card details when you make a POST  \/paymentMethods call. In this request, additionally include the shopperReference.\nThe following example shows how to do this for a customer with a shopperReference of ShopperID-A16729:\n\n\n\nYou receive a response containing a list of available payment methods, including the customer's stored payment details. You can find the customer's stored card in the storedPaymentMethods array.\nThe example below shows what this response would look like if this customer has a stored visa card. The storedPaymentMethods.id should match the storedPaymentMethodId that you stored for this customer in your database.\n\n\n\n\n\nPresent your customer's saved card details, and show a CVC\/CVV field to collect their card security code.\n\n\nIf you are using Drop-in, this integration supports showing saved card details by default. For presenting your customer's saved card details with Components, refer to Web, iOS, or Android. Both Drop-in and Components integrations present the saved card details, and collect and encrypt your customer's card security code.\n\n\nIf you are using an API-only integration, you need to build your own UI to show the stored card details and to collect your customer's card security code. You can either build a custom card integration with encryption, or submit raw card data if you are fully PCI compliant.\n\n\n\n\n\nIf the customer chooses to pay with their saved card, continue with the payment by making a POST  \/payments request. In this request, additionally include:\n\nshopperReference: the customer's shopperReference, from your database.\nshopperInteraction: set this to ContAuth to indicate that the customer is a returning customer.\nrecurringProcessingModel: set to CardOnFile to specify a one-off payment.\n\npaymentMethod: an object that contains the customer's card details:\n\nstoredPaymentMethodId: the customer's tokenized card details.\n\nencryptedSecurityCode or cvc:  the customer's card security code sent either as encrypted data (returned from Drop-in, Components, or custom card integration) or as raw data (if you are fully PCI compliant).\n\n\n\n\n\nThe following example shows how to make a payment for a customer with a shopperReference of  ShopperID-A16729, and a storedPaymentMethodId of 7219687191761347.\n\n\n\nIf the payment is successful you receive a resultCode of Authorised.\n\n\n\n\n\nRecognize returning customers in store\nWhen a customer makes a purchase at the point of sale, you can check if they are a returning customer by making a card acquisition request.\nCheck if the card alias returned in the response matches a card alias that you have stored in your customer database.\n\nIf the alias matches, they are a returning customer.\nIf the alias is not in your database, you can create a customer profile for them.\n\n\nApart from the card alias, the card acquisition request returns the shopperReference if you have previously stored it on our platform. You can also use that data to check whether the customer is a returning customer.\n\nTo recognize a customer when they make a purchase at the point of sale:\n\n\nMake a card acquisition request.\nThe example below shows a card acquisition request for a customer who is making a EUR&nbsp;10.99 purchase.\n\n\n\nYou receive a response that includes an AdditionalResponse object, with a base64-encoded string that you need to decode to get a JSON object, or a string of form-encoded key-value pairs. In our examples, we use form-encoded key-value pairs.\n\n\n\n\n\nUse the card alias in the AdditionalResponse object to look up the customer in your customer database.\nIf you have previously stored the shopperReference with Adyen, this is also provided in this response.\n\nIf you have a customer profile with the same alias, they are a returning customer.\n\nIf you do not have a customer profile with the same alias the customer's card is not recognized. This usually means that the customer is new, and has not purchased with you before. However, they could also be a returning customer using a new card.\n\n\n\nTo confirm, you can collect their email address, then check whether this matches a shopperEmail stored in your customer database:\n\nIf the email matches a shopperEmail in your database, they are a returning customer. Ask them if they want to save their new card. If they do, tokenize their new card using their shopperReference from your database when you make a payment.\n\nIf the email is not your database, they are a new customer. Continue with the transaction, and create a profile for this customer.\n\n\n\n\n\nContinue with the transaction by making a payment request from your POS app, containing data returned in the card acquisition response.\n\n\n\nIf the request is successful, you receive a response containing:\n\nPOIData.POITransactionID.TransactionID: the transaction identifier for the payment.\n\nPaymentResponse.Response.Result: Success\n\n\n\nThe example result below indicates that the payment was successful. The transaction identifier for this payment is oLkO0012498220087000.981517998282382C.\n\n\n\n\n","type":"page","locale":"en","boost":17,"hierarchy":{"lvl0":"Home","lvl1":"Omnichannel","lvl2":"Shopper loyalty","lvl3":"Recognizing customers"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/","lvl1":"https:\/\/docs.adyen.com\/unified-commerce","lvl2":"https:\/\/docs.adyen.com\/unified-commerce\/loyalty-program","lvl3":"\/unified-commerce\/loyalty-program\/recognize-customers"},"levels":4,"category":"Omnichannel","category_color":"green","tags":["Recognizing","customers"]},"articleFiles":{"ShopperRecognition.png":"<img alt=\"\" src=\"https:\/\/docs.adyen.com\/user\/pages\/docs\/06.unified-commerce\/14.loyalty-program\/04.recognize-customers\/ShopperRecognition.png\" \/>"}}
