{"title":"Name validation","category":"default","creationDate":1567783140,"content":"<p>Name validation allows you to verify if the cardholder name provided by a shopper matches the cardholder name on file at the issuing bank. The service is offered by Visa and Mastercard, and requires you to pay a fee for each transaction where name validation is performed.<\/p>\n<p>You can request this validation with a <a href=\"\/pt\/get-started-with-adyen\/adyen-glossary\/#zero-value-auth\">zero-value auth<\/a> transaction to:<\/p>\n<ul>\n<li>Reduce fraud and chargeback losses.<\/li>\n<li>Comply with Know Your Customer (KYC) requirements.<\/li>\n<li>Improve the reliability of <a href=\"\/pt\/payouts\/payout-service\/\">payouts<\/a> by making sure funds are sent to the right person.<\/li>\n<\/ul>\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;\">An <a href=\"\/pt\/online-payments\/build-your-integration\/advanced-flow\">online payments integration using the Advanced flow<\/a> with Checkout API v69 or later.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/pt\/development-resources\/api-credentials\/roles\/\">API credential roles<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">You need an API credential with an API key and the <strong>Checkout webservice role<\/strong>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Limitations<\/strong><\/td>\n<td style=\"text-align: left;\">This feature is dependent on issuer readiness, and is only supported for: <ul><li>Zero-value auth transactions.<\/li><li>Visa and Mastercard payments in the United States, United Kingdom, and Europe.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>How it works<\/h2>\n<div class=\"additional-info-block output-inline\">\n<h5 class=\"article__heading additional-info-block__title\">Learn more<\/h5><div class=\"additional-info-block__body\"><p>Our name validation feature uses the validation services offered by card schemes.<\/p><ul><li><a href=\"https:\/\/developer.mastercard.com\/account-validation\/documentation\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Mastercard Account Validation<\/a><\/li><li><a href=\"https:\/\/corporate.visa.com\/content\/dam\/VCOM\/regional\/na\/us\/support-legal\/documents\/account-name-inquiry-onesheet-merchant-version.pdf\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Visa Account Name Inquiry<\/a><\/div><\/div>\n<\/li>\n<\/ul>\n<p>To validate a cardholder's name:<\/p>\n<ol>\n<li>You make a  <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 for a zero-value auth transaction. In the request, you include the cardholder's name and the <code>paymentValidations<\/code> object to <a href=\"#request-a-name-validation\">request a name validation<\/a>.<\/li>\n<li>Adyen forwards the validation request to Visa or Mastercard.<\/li>\n<li>The cardholder's issuing bank checks if the name the shopper provided matches the name they have on file.<\/li>\n<li><a href=\"#validation-results\">Adyen receives the result and forwards it to you<\/a> in the <code>paymentValidations<\/code> object within the synchronous API response.<\/li>\n<li>You monitor the <code>result<\/code> object to get the outcome of the name validation.<\/li>\n<li>You build your own logic based on the validation outcome. For example, depending on the match results, you can proceed to authorize the payment or request additional verification.<\/li>\n<\/ol>\n<div class=\"notices green\">\n<p>We are working on expanding the <code>paymentValidations<\/code> field with support for additional validation types, such as the <a href=\"\/pt\/risk-management\/avs-checks\">Address Verification System<\/a>. We recommend you prepare your implementation to handle new verification objects that will be introduced in <code>paymentValidations<\/code>.<\/p>\n<\/div>\n<div style=\"text-align: center;\">\n<p><img style=\"width: 800px;\" alt=\"\" src=\"\/user\/pages\/docs\/08.payment-methods\/04.cards\/name-validation\/Name-validation.svg?decoding=auto&amp;fetchpriority=auto\" \/><\/p>\n<\/div>\n<h2>Request a name validation<\/h2>\n<p>To request a name validation, <a href=\"\/pt\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=API%20only&amp;version=latest#make-a-payment\">use your online payments integration<\/a> to make a  <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, and include:<\/p>\n<table>\n<thead>\n<tr>\n<th>Field<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>amount.value<\/code><\/td>\n<td>The transaction amount. Set to <strong>0<\/strong> when performing a name validation.<\/td>\n<\/tr>\n<tr>\n<td><code>paymentMethod<\/code><\/td>\n<td>The payment details. For cards, set <code>type<\/code> to <span translate=\"no\"><strong>scheme<\/strong><\/span>, and send the encrpyted card fields. If you are fully <a href=\"\/pt\/development-resources\/pci-dss-compliance-guide\">PCI compliant<\/a>, send the unencrypted card fields.<\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-shopperName\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">shopperName<\/a><\/td>\n<td>The name of the cardholder, consisting of <code>firstName<\/code> and <code>lastName<\/code>. <br> If you do not include this field when requesting a name validation, we will <a href=\"#fallback-logic\">fallback<\/a> to the <code>paymentMethod.holderName<\/code>.<\/td>\n<\/tr>\n<tr>\n<td><code>paymentValidations.name.status<\/code><\/td>\n<td>Set to <span translate=\"no\"><strong>requested<\/strong><\/span> to request a name validation.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"notices yellow\">\n<p><a href=\"\/pt\/payment-methods\/apple-pay\">Apple Pay<\/a> and <a href=\"\/pt\/payment-methods\/google-pay\">Google Pay<\/a> do not return the shopper name. For these payment methods, you must build your own logic to pass the details your <a href=\"\/pt\/online-payments\/build-your-integration\/advanced-flow?platform=Web&amp;integration=API%20only&amp;version=71#collect-shopper-details\">shopper enters at checkout<\/a> from your front-end to the  <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.<\/p>\n<\/div>\n<p>The following example shows how to request a name validation for John Smith.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Request name validation'\" :id=\"'name-validation'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;curl&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/checkout-test.adyen.com\\\/v72\\\/payments \\\\\\n-H 'x-api-key: ADYEN_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-d '{\\n      \\&quot;amount\\&quot;: {\\n        \\&quot;currency\\&quot;: \\&quot;EUR\\&quot;,\\n        \\&quot;value\\&quot;: 0\\n      },\\n      \\&quot;reference\\&quot;: \\&quot;YOUR_ORDER_NUMBER\\&quot;,\\n      \\&quot;shopperName\\&quot;: {\\n        \\&quot;firstName\\&quot;: \\&quot;John\\&quot;,\\n        \\&quot;lastName\\&quot;: \\&quot;Smith\\&quot;\\n      },\\n      \\&quot;paymentMethod\\&quot;: {\\n        \\&quot;type\\&quot;: \\&quot;scheme\\&quot;,\\n        \\&quot;encryptedCardNumber\\&quot;: \\&quot;test_4111111111111111\\&quot;,\\n        \\&quot;encryptedExpiryMonth\\&quot;: \\&quot;test_03\\&quot;,\\n        \\&quot;encryptedExpiryYear\\&quot;: \\&quot;test_2030\\&quot;,\\n        \\&quot;encryptedSecurityCode\\&quot;: \\&quot;test_737\\&quot;,\\n        \\&quot;holderName\\&quot;: \\&quot;John Smith\\&quot;\\n      },\\n      \\&quot;paymentValidations\\&quot;: {\\n        \\&quot;name\\&quot;: {\\n          \\&quot;status\\&quot;: \\&quot;requested\\&quot;\\n        }\\n      },\\n      \\&quot;merchantAccount\\&quot;: \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;\\n}'&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v40.0.0\\nimport com.adyen.Client;\\nimport com.adyen.enums.Environment;\\nimport com.adyen.model.checkout.*;\\nimport java.time.OffsetDateTime;\\nimport java.util.*;\\nimport com.adyen.model.RequestOptions;\\nimport com.adyen.service.checkout.*;\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nClient client = new Client(\\&quot;ADYEN_API_KEY\\&quot;, Environment.TEST);\\n\\n\\\/\\\/ Create the request object(s)\\nAmount amount = new Amount()\\n  .currency(\\&quot;EUR\\&quot;)\\n  .value(0L);\\n\\nName name = new Name()\\n  .firstName(\\&quot;John\\&quot;)\\n  .lastName(\\&quot;Smith\\&quot;);\\n\\nCardDetails cardDetails = new CardDetails()\\n  .encryptedCardNumber(\\&quot;test_4111111111111111\\&quot;)\\n  .holderName(\\&quot;John Smith\\&quot;)\\n  .encryptedSecurityCode(\\&quot;test_737\\&quot;)\\n  .encryptedExpiryYear(\\&quot;test_2030\\&quot;)\\n  .encryptedExpiryMonth(\\&quot;test_03\\&quot;)\\n  .type(CardDetails.TypeEnum.SCHEME);\\n\\nPaymentRequest paymentRequest = new PaymentRequest()\\n  .reference(\\&quot;YOUR_ORDER_NUMBER\\&quot;)\\n  .amount(amount)\\n  .shopperName(name)\\n  .merchantAccount(\\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;)\\n  .paymentMethod(new CheckoutPaymentMethod(cardDetails));\\n\\n\\\/\\\/ Send the request\\nPaymentsApi service = new PaymentsApi(client);\\nPaymentResponse response = service.payments(paymentRequest, new RequestOptions().idempotencyKey(\\&quot;UUID\\&quot;));&quot;},{&quot;language&quot;:&quot;php&quot;,&quot;tabTitle&quot;:&quot;PHP&quot;,&quot;content&quot;:&quot;&lt;?php\\n\\\/\\\/ Adyen PHP API Library v28.3.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Model\\\\Checkout\\\\Amount;\\nuse Adyen\\\\Model\\\\Checkout\\\\Name;\\nuse Adyen\\\\Model\\\\Checkout\\\\CheckoutPaymentMethod;\\nuse Adyen\\\\Model\\\\Checkout\\\\PaymentRequest;\\nuse Adyen\\\\Service\\\\Checkout\\\\PaymentsApi;\\n\\n$client = new Client();\\n$client-&gt;setXApiKey(\\&quot;ADYEN_API_KEY\\&quot;);\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\n$client-&gt;setEnvironment(Environment::TEST);\\n\\n\\n\\\/\\\/ Create the request object(s)\\n$amount = new Amount();\\n$amount\\n  -&gt;setCurrency(\\&quot;EUR\\&quot;)\\n  -&gt;setValue(0);\\n\\n$name = new Name();\\n$name\\n  -&gt;setFirstName(\\&quot;John\\&quot;)\\n  -&gt;setLastName(\\&quot;Smith\\&quot;);\\n\\n$checkoutPaymentMethod = new CheckoutPaymentMethod();\\n$checkoutPaymentMethod\\n  -&gt;setEncryptedCardNumber(\\&quot;test_4111111111111111\\&quot;)\\n  -&gt;setHolderName(\\&quot;John Smith\\&quot;)\\n  -&gt;setEncryptedSecurityCode(\\&quot;test_737\\&quot;)\\n  -&gt;setEncryptedExpiryYear(\\&quot;test_2030\\&quot;)\\n  -&gt;setEncryptedExpiryMonth(\\&quot;test_03\\&quot;)\\n  -&gt;setType(\\&quot;scheme\\&quot;);\\n\\n$paymentRequest = new PaymentRequest();\\n$paymentRequest\\n  -&gt;setReference(\\&quot;YOUR_ORDER_NUMBER\\&quot;)\\n  -&gt;setAmount($amount)\\n  -&gt;setShopperName($name)\\n  -&gt;setMerchantAccount(\\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;)\\n  -&gt;setPaymentMethod($checkoutPaymentMethod);\\n\\n$requestOptions['idempotencyKey'] = 'UUID';\\n\\n\\\/\\\/ Send the request\\n$service = new PaymentsApi($client);\\n$response = $service-&gt;payments($paymentRequest, $requestOptions);&quot;},{&quot;language&quot;:&quot;cs&quot;,&quot;tabTitle&quot;:&quot;C#&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen .NET API Library v32.2.1\\nusing Adyen;\\nusing Environment = Adyen.Model.Environment;\\nusing Adyen.Model;\\nusing Adyen.Model.Checkout;\\nusing Adyen.Service.Checkout;\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nvar config = new Config()\\n{\\n    XApiKey = \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment = Environment.Test\\n};\\nvar client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\nAmount amount = new Amount\\n{\\n  Currency = \\&quot;EUR\\&quot;,\\n  Value = 0\\n};\\n\\nName name = new Name\\n{\\n  FirstName = \\&quot;John\\&quot;,\\n  LastName = \\&quot;Smith\\&quot;\\n};\\n\\nCardDetails cardDetails = new CardDetails\\n{\\n  EncryptedCardNumber = \\&quot;test_4111111111111111\\&quot;,\\n  HolderName = \\&quot;John Smith\\&quot;,\\n  EncryptedSecurityCode = \\&quot;test_737\\&quot;,\\n  EncryptedExpiryYear = \\&quot;test_2030\\&quot;,\\n  EncryptedExpiryMonth = \\&quot;test_03\\&quot;,\\n  Type = CardDetails.TypeEnum.Scheme\\n};\\n\\nPaymentRequest paymentRequest = new PaymentRequest\\n{\\n  Reference = \\&quot;YOUR_ORDER_NUMBER\\&quot;,\\n  Amount = amount,\\n  ShopperName = name,\\n  MerchantAccount = \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;,\\n  PaymentMethod = new CheckoutPaymentMethod(cardDetails)\\n};\\n\\n\\\/\\\/ Send the request\\nvar service = new PaymentsService(client);\\nvar response = service.Payments(paymentRequest, requestOptions: new RequestOptions { IdempotencyKey = \\&quot;UUID\\&quot;});&quot;},{&quot;language&quot;:&quot;js&quot;,&quot;tabTitle&quot;:&quot;NodeJS (JavaScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v30.0.0\\nconst { Client, CheckoutAPI } = require('@adyen\\\/api-library');\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nconst config = new Config({\\n  apiKey: \\&quot;ADYEN_API_KEY\\&quot;,\\n  environment: EnvironmentEnum.TEST\\n});\\n\\nconst client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\nconst paymentRequest = {\\n  amount: {\\n    currency: \\&quot;EUR\\&quot;,\\n    value: 0\\n  },\\n  reference: \\&quot;YOUR_ORDER_NUMBER\\&quot;,\\n  shopperName: {\\n    firstName: \\&quot;John\\&quot;,\\n    lastName: \\&quot;Smith\\&quot;\\n  },\\n  paymentMethod: {\\n    type: \\&quot;scheme\\&quot;,\\n    encryptedCardNumber: \\&quot;test_4111111111111111\\&quot;,\\n    encryptedExpiryMonth: \\&quot;test_03\\&quot;,\\n    encryptedExpiryYear: \\&quot;test_2030\\&quot;,\\n    encryptedSecurityCode: \\&quot;test_737\\&quot;,\\n    holderName: \\&quot;John Smith\\&quot;\\n  },\\n  paymentValidations: {\\n    name: {\\n      status: \\&quot;requested\\&quot;\\n    }\\n  },\\n  merchantAccount: \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;\\n}\\n\\n\\\/\\\/ Send the request\\nconst checkoutAPI = new CheckoutAPI(client);\\nconst response = checkoutAPI.PaymentsApi.payments(paymentRequest, { idempotencyKey: \\&quot;UUID\\&quot; });&quot;},{&quot;language&quot;:&quot;go&quot;,&quot;tabTitle&quot;:&quot;Go&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Go API Library v21.1.0\\nimport (\\n  \\&quot;context\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v21\\\/src\\\/common\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v21\\\/src\\\/adyen\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v21\\\/src\\\/checkout\\&quot;\\n)\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nclient := adyen.NewClient(&amp;common.Config{\\n  ApiKey:      \\&quot;ADYEN_API_KEY\\&quot;,\\n  Environment: common.TestEnv,\\n})\\n\\n\\\/\\\/ Create the request object(s)\\namount := checkout.Amount{\\n  Currency: \\&quot;EUR\\&quot;,\\n  Value: 0,\\n}\\n\\nname := checkout.Name{\\n  FirstName: \\&quot;John\\&quot;,\\n  LastName: \\&quot;Smith\\&quot;,\\n}\\n\\ncardDetails := checkout.CardDetails{\\n  EncryptedCardNumber: common.PtrString(\\&quot;test_4111111111111111\\&quot;),\\n  HolderName: common.PtrString(\\&quot;John Smith\\&quot;),\\n  EncryptedSecurityCode: common.PtrString(\\&quot;test_737\\&quot;),\\n  EncryptedExpiryYear: common.PtrString(\\&quot;test_2030\\&quot;),\\n  EncryptedExpiryMonth: common.PtrString(\\&quot;test_03\\&quot;),\\n  Type: common.PtrString(\\&quot;scheme\\&quot;),\\n}\\n\\npaymentRequest := checkout.PaymentRequest{\\n  Reference: \\&quot;YOUR_ORDER_NUMBER\\&quot;,\\n  Amount: amount,\\n  ShopperName: &amp;name,\\n  MerchantAccount: \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;,\\n  PaymentMethod: checkout.CardDetailsAsCheckoutPaymentMethod(&amp;cardDetails),\\n}\\n\\n\\\/\\\/ Send the request\\nservice := client.Checkout()\\nreq := service.PaymentsApi.PaymentsInput().IdempotencyKey(\\&quot;UUID\\&quot;).PaymentRequest(paymentRequest)\\nres, httpRes, err := service.PaymentsApi.Payments(context.Background(), req)&quot;},{&quot;language&quot;:&quot;py&quot;,&quot;tabTitle&quot;:&quot;Python&quot;,&quot;content&quot;:&quot;# Adyen Python API Library v13.6.0\\nimport Adyen\\n\\nadyen = Adyen.Adyen()\\nadyen.client.xapikey = \\&quot;ADYEN_API_KEY\\&quot;\\n# For the LIVE environment, also include your liveEndpointUrlPrefix.\\nadyen.client.platform = \\&quot;test\\&quot; # The environment to use library in.\\n\\n# Create the request object(s)\\njson_request = {\\n  \\&quot;amount\\&quot;: {\\n    \\&quot;currency\\&quot;: \\&quot;EUR\\&quot;,\\n    \\&quot;value\\&quot;: 0\\n  },\\n  \\&quot;reference\\&quot;: \\&quot;YOUR_ORDER_NUMBER\\&quot;,\\n  \\&quot;shopperName\\&quot;: {\\n    \\&quot;firstName\\&quot;: \\&quot;John\\&quot;,\\n    \\&quot;lastName\\&quot;: \\&quot;Smith\\&quot;\\n  },\\n  \\&quot;paymentMethod\\&quot;: {\\n    \\&quot;type\\&quot;: \\&quot;scheme\\&quot;,\\n    \\&quot;encryptedCardNumber\\&quot;: \\&quot;test_4111111111111111\\&quot;,\\n    \\&quot;encryptedExpiryMonth\\&quot;: \\&quot;test_03\\&quot;,\\n    \\&quot;encryptedExpiryYear\\&quot;: \\&quot;test_2030\\&quot;,\\n    \\&quot;encryptedSecurityCode\\&quot;: \\&quot;test_737\\&quot;,\\n    \\&quot;holderName\\&quot;: \\&quot;John Smith\\&quot;\\n  },\\n  \\&quot;paymentValidations\\&quot;: {\\n    \\&quot;name\\&quot;: {\\n      \\&quot;status\\&quot;: \\&quot;requested\\&quot;\\n    }\\n  },\\n  \\&quot;merchantAccount\\&quot;: \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;\\n}\\n\\n# Send the request\\nresult = adyen.checkout.payments_api.payments(request=json_request, idempotency_key=\\&quot;UUID\\&quot;)&quot;},{&quot;language&quot;:&quot;rb&quot;,&quot;tabTitle&quot;:&quot;Ruby&quot;,&quot;content&quot;:&quot;# Adyen Ruby API Library v11.0.0\\nrequire \\&quot;adyen-ruby-api-library\\&quot;\\n\\nadyen = Adyen::Client.new\\nadyen.api_key = 'ADYEN_API_KEY'\\n# For the LIVE environment, also include your liveEndpointUrlPrefix.\\nadyen.env = :test # Set to \\&quot;live\\&quot; for live environment\\n\\n# Create the request object(s)\\nrequest_body = {\\n  :amount =&gt; {\\n    :currency =&gt; 'EUR',\\n    :value =&gt; 0\\n  },\\n  :reference =&gt; 'YOUR_ORDER_NUMBER',\\n  :shopperName =&gt; {\\n    :firstName =&gt; 'John',\\n    :lastName =&gt; 'Smith'\\n  },\\n  :paymentMethod =&gt; {\\n    :type =&gt; 'scheme',\\n    :encryptedCardNumber =&gt; 'test_4111111111111111',\\n    :encryptedExpiryMonth =&gt; 'test_03',\\n    :encryptedExpiryYear =&gt; 'test_2030',\\n    :encryptedSecurityCode =&gt; 'test_737',\\n    :holderName =&gt; 'John Smith'\\n  },\\n  :paymentValidations =&gt; {\\n    :name =&gt; {\\n      :status =&gt; 'requested'\\n    }\\n  },\\n  :merchantAccount =&gt; 'YOUR_MERCHANT_ACCOUNT'\\n}\\n\\n# Send the request\\nresult = adyen.checkout.payments_api.payments(request_body, headers: { 'Idempotency-Key' =&gt; 'UUID' })&quot;},{&quot;language&quot;:&quot;ts&quot;,&quot;tabTitle&quot;:&quot;NodeJS (TypeScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v30.0.0\\nimport { Client, CheckoutAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nconst config = new Config({\\n  apiKey: \\&quot;ADYEN_API_KEY\\&quot;,\\n  environment: EnvironmentEnum.TEST\\n});\\n\\nconst client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\nconst amount: Types.checkout.Amount = {\\n  currency: \\&quot;EUR\\&quot;,\\n  value: 0\\n};\\n\\nconst name: Types.checkout.Name = {\\n  firstName: \\&quot;John\\&quot;,\\n  lastName: \\&quot;Smith\\&quot;\\n};\\n\\nconst cardDetails: Types.checkout.CardDetails = {\\n  encryptedCardNumber: \\&quot;test_4111111111111111\\&quot;,\\n  holderName: \\&quot;John Smith\\&quot;,\\n  encryptedSecurityCode: \\&quot;test_737\\&quot;,\\n  encryptedExpiryYear: \\&quot;test_2030\\&quot;,\\n  encryptedExpiryMonth: \\&quot;test_03\\&quot;,\\n  type: Types.checkout.CardDetails.TypeEnum.Scheme\\n};\\n\\nconst paymentRequest: Types.checkout.PaymentRequest = {\\n  reference: \\&quot;YOUR_ORDER_NUMBER\\&quot;,\\n  amount: amount,\\n  shopperName: name,\\n  merchantAccount: \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;,\\n  paymentMethod: cardDetails\\n};\\n\\n\\\/\\\/ Send the request\\nconst checkoutAPI = new CheckoutAPI(client);\\nconst response = checkoutAPI.PaymentsApi.payments(paymentRequest, { idempotencyKey: \\&quot;UUID\\&quot; });&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3>Fallback logic<\/h3>\n<p>If you do not include the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-shopperName\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">shopperName<\/a> when requesting a name validation, we use the <code>paymentMethod.holderName<\/code> field to populate the shopper name fields. We take the characters until the first space or period(<code>.<\/code>) to populate the first name.<\/p>\n<p>To ensure accuracy and get the best validation results, we strongly recommend to include the <code>shopperName<\/code> field instead of relying on the <code>paymentMethod.holderName<\/code> fallback.<\/p>\n<h2>Validation results<\/h2>\n<p>When you make a   <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 to validate a cardholder's name, Adyen forwards the information you provide to the schemes to perform the name validation. The API response includes:<\/p>\n<ul>\n<li><a href=\"#status\">The status of the name validation<\/a>.<\/li>\n<li><a href=\"#outcome\">The outcome of the name validation<\/a>.<\/li>\n<\/ul>\n<h3>Status<\/h3>\n<p>The <code>paymentValidations.name.status<\/code> field in the response informs you if name validation was performed. For Visa, you also receive the raw status value that Adyen receives in the <code>paymentValidations.name.rawResponse.status<\/code> field. Mastercard does not return a <code>rawResponse.status<\/code>.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Adyen <code>status<\/code> values<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<th>Visa <code>rawResponse.status<\/code> values<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>performed<\/strong><\/span><\/td>\n<td style=\"text-align: left;\">Name validation was performed.<\/td>\n<td><span translate=\"no\"><strong>00<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>notPerformed<\/strong><\/span><\/td>\n<td style=\"text-align: left;\">Name validation was not performed.<\/td>\n<td><span translate=\"no\"><strong>01<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>notSupported<\/strong><\/span><\/td>\n<td style=\"text-align: left;\">Name validation is not supported by the issuer for this card, you will not be charged for name validation.<\/td>\n<td><span translate=\"no\"><strong>02<\/strong><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Outcome<\/h3>\n<p>The <code>paymentValidations.name<\/code> object in the response includes the following objects that inform you of the name validation results.<\/p>\n<ul>\n<li><code>result<\/code>: the scheme-agnostic match values returned by Adyen.<\/li>\n<li><code>rawResponse<\/code>: the raw response(s) we receive from the scheme.<br \/>\nFor example, the <code>result.fullName<\/code> contains the Adyen value, and <code>rawResponse.fullName<\/code> contains the value we received from Visa or Mastercard.<\/li>\n<\/ul>\n<p>For Visa, the response includes match values for the full name, along with first name, middle name, and last name. For Mastercard, the response only includes the full name match value.<\/p>\n<div class=\"sc-notice info\"><div>\n<p>The match value for the full name is determined by combining the match results for the first, middle, and last name. The logic to determine the outcome of this combination is built and maintained by schemes, and is not transparent to Adyen.<\/p>\n<\/div><\/div>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Adyen <code>result<\/code> values<\/th>\n<th style=\"text-align: left;\">Visa <code>rawResponse<\/code> values<\/th>\n<th>Mastercard <code>rawResponse<\/code> values<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>match<\/strong><\/span><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>01<\/strong><\/span><\/td>\n<td><span translate=\"no\"><strong>A<\/strong><\/span><\/td>\n<td>The name matches the name on file at the issuing bank.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>partialMatch<\/strong><\/span><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>50<\/strong><\/span><\/td>\n<td><span translate=\"no\"><strong>B<\/strong><\/span><\/td>\n<td>The name partially matches the name on file. For example, the first name matches but the last name does not, or there is a typo.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>noMatch<\/strong><\/span><\/td>\n<td style=\"text-align: left;\"><span translate=\"no\"><strong>99<\/strong><\/span><\/td>\n<td><span translate=\"no\"><strong>C<\/strong><\/span><\/td>\n<td>The name does not match the name on file.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The following response examples show the name validation responses for Visa and Mastercard.<\/p>\n\n<div id=\"tabDUOgQ\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Visa&quot;,&quot;content&quot;:&quot;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n    &lt;code-sample :title=\\&quot;&#039;Example name validation result Visa&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n    \\\\\\&quot;pspReference\\\\\\&quot;: \\\\\\&quot;KHQC5N7G84BLNK43\\\\\\&quot;,\\\\n    \\\\\\&quot;resultCode\\\\\\&quot;: \\\\\\&quot;Authorised\\\\\\&quot;,\\\\n    \\\\\\&quot;amount\\\\\\&quot;: {\\\\n        \\\\\\&quot;currency\\\\\\&quot;: \\\\\\&quot;EUR\\\\\\&quot;,\\\\n        \\\\\\&quot;value\\\\\\&quot;: 0\\\\n    },\\\\n    \\\\\\&quot;paymentValidations\\\\\\&quot;: {\\\\n        \\\\\\&quot;name\\\\\\&quot;: {\\\\n            \\\\\\&quot;status\\\\\\&quot;: \\\\\\&quot;performed\\\\\\&quot;,\\\\n            \\\\\\&quot;result\\\\\\&quot;: {\\\\n                \\\\\\&quot;fullName\\\\\\&quot;: \\\\\\&quot;partialMatch\\\\\\&quot;,\\\\n                \\\\\\&quot;firstName\\\\\\&quot;: \\\\\\&quot;match\\\\\\&quot;,\\\\n                \\\\\\&quot;middleName\\\\\\&quot;: \\\\\\&quot;match\\\\\\&quot;,\\\\n                \\\\\\&quot;lastName\\\\\\&quot;: \\\\\\&quot;partialMatch\\\\\\&quot;\\\\n            },\\\\n            \\\\\\&quot;rawResponse\\\\\\&quot;: {\\\\n                \\\\\\&quot;status\\\\\\&quot;: \\\\\\&quot;00\\\\\\&quot;,\\\\n                \\\\\\&quot;fullName\\\\\\&quot;: \\\\\\&quot;50\\\\\\&quot;,\\\\n                \\\\\\&quot;firstName\\\\\\&quot;: \\\\\\&quot;01\\\\\\&quot;,\\\\n                \\\\\\&quot;middleName\\\\\\&quot;: \\\\\\&quot;01\\\\\\&quot;,\\\\n                \\\\\\&quot;lastName\\\\\\&quot;: \\\\\\&quot;50\\\\\\&quot;\\\\n            }\\\\n        }\\\\n    }\\\\n}\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&quot;,&quot;altTitle&quot;:&quot;visa&quot;,&quot;oldTabId&quot;:&quot;visa_1&quot;,&quot;relation&quot;:&quot;visa&quot;},{&quot;title&quot;:&quot;Mastercard&quot;,&quot;content&quot;:&quot;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n    &lt;code-sample :title=\\&quot;&#039;Example name validation result Mastercard&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n    \\\\\\&quot;pspReference\\\\\\&quot;: \\\\\\&quot;FKSPNCQ8HXSKGK82\\\\\\&quot;,\\\\n    \\\\\\&quot;resultCode\\\\\\&quot;: \\\\\\&quot;Authorised\\\\\\&quot;,\\\\n    \\\\\\&quot;amount\\\\\\&quot;: {\\\\n        \\\\\\&quot;currency\\\\\\&quot;: \\\\\\&quot;EUR\\\\\\&quot;,\\\\n        \\\\\\&quot;value\\\\\\&quot;: 0\\\\n    },\\\\n    \\\\\\&quot;paymentValidations\\\\\\&quot;: {\\\\n        \\\\\\&quot;name\\\\\\&quot;: {\\\\n            \\\\\\&quot;status\\\\\\&quot;: \\\\\\&quot;performed\\\\\\&quot;,\\\\n            \\\\\\&quot;result\\\\\\&quot;: {\\\\n                \\\\\\&quot;fullName\\\\\\&quot;: \\\\\\&quot;match\\\\\\&quot;\\\\n            },\\\\n            \\\\\\&quot;rawResponse\\\\\\&quot;: {\\\\n                \\\\\\&quot;fullName\\\\\\&quot;: \\\\\\&quot;A\\\\\\&quot;\\\\n            }\\\\n        }\\\\n    }\\\\n}\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&quot;,&quot;altTitle&quot;:&quot;mc&quot;,&quot;oldTabId&quot;:&quot;mc_2&quot;,&quot;relation&quot;:&quot;mc&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<h2>Testing<\/h2>\n<p>To test different name validation responses and match results:<\/p>\n<ol>\n<li>\n<p>In your test  <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, request a name validation.<\/p>\n<\/li>\n<li>\n<p>Use our <a href=\"\/pt\/development-resources\/test-cards-and-credentials\/test-card-numbers#visa\">Visa<\/a> and <a href=\"\/pt\/development-resources\/test-cards-and-credentials\/test-card-numbers#mastercard\">Mastercard<\/a> test cards.<\/p>\n<\/li>\n<li>\n<p>Set the <code>shopperName<\/code> field to the following test shopper names to test different match statuses. If you do not provide the name in this field, we fall back to the holder name you provide in the <code>paymentMethod<\/code> object.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Match status<\/th>\n<th style=\"text-align: left;\">First name<\/th>\n<th style=\"text-align: left;\">Middle name<\/th>\n<th style=\"text-align: left;\">Last name<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>Match<\/strong><\/td>\n<td style=\"text-align: left;\">John<\/td>\n<td style=\"text-align: left;\">Maria<\/td>\n<td style=\"text-align: left;\">Smith<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Partial match<\/strong><\/td>\n<td style=\"text-align: left;\">Jon<\/td>\n<td style=\"text-align: left;\">Mariah<\/td>\n<td style=\"text-align: left;\">Smyth<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>No match<\/strong><\/td>\n<td style=\"text-align: left;\">Alice<\/td>\n<td style=\"text-align: left;\">Peter<\/td>\n<td style=\"text-align: left;\">Brown<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"sc-notice info\"><div>\n<p>Keep in mind that the logic to determine the full name match is based on the combination of the first, middle, and last name values are maintained by the schemes and not transparent to Adyen. The following section shows some example test scenarios and the results they are expected to trigger per scheme.<\/p>\n<\/div><\/div>\n<\/li>\n<li>\n<p>Test that your implementation correctly handles the match statuses you receive in the name validation outcome.<\/p>\n<\/li>\n<\/ol>\n<p>The following table contains example scenarios and the results they are expected to trigger per scheme.<\/p>\n\n<div id=\"tab3U96l\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Visa&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Visa returns individual match statuses for the first name, middle name, last name, and the full name.&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Shopper name&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Logic applied&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Visa &lt;code&gt;rawResponse&lt;\\\/code&gt;&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Adyen &lt;code&gt;result&lt;\\\/code&gt;&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;John Maria Smith&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;All names are a match.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;firstName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;01&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;middleName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;01&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;lastName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;01&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;01&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;match&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;Jon Peter Smyth&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Two partial matches, and one no match.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;firstName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;50&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;middleName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;99&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;lastName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;50&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;50&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;partialMatch&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;Alice Peter Brown&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;None of the names match.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;firstName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;99&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;middleName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;99&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;lastName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;99&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;99&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;noMatch&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;John Peter Smith&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Mix of match and no matches.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;firstName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;01&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;middleName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;99&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;lastName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;01&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;01&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;partialMatch&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;John Mariah Brown&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;One match, one partial match, and one no match.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;firstName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;01&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;middleName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;50&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;lastName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;99&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;50&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;partialMatch&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;Jon Smyth&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Two partial matches.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;firstName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;50&lt;\\\/strong&gt;&lt;\\\/span&gt;, &lt;code&gt;lastName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;50&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;partialMatch&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&quot;,&quot;altTitle&quot;:&quot;visa&quot;,&quot;oldTabId&quot;:&quot;visa_1&quot;,&quot;relation&quot;:&quot;visa&quot;},{&quot;title&quot;:&quot;Mastercard&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Mastercard returns a single result that corresponds to the match status of the full name.&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Shopper name&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Logic applied&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Mastercard &lt;code&gt;rawResponse&lt;\\\/code&gt;&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Adyen &lt;code&gt;result&lt;\\\/code&gt;&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;John Maria Smith&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;All names are a match.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;A&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;match&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;Jon Peter Smyth&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Two partial matches, and one no match.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;B&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;partialMatch&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;Alice Peter Brown&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;None of the names match.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;C&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;noMatch&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;John Peter Brown&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Mix of match and no matches.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;B&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;partialMatch&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;Alice Mariah Smyth&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;One match, one partial match, and one no match.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;B&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;fullName&lt;\\\/code&gt;: &lt;span translate=\\&quot;no\\&quot;&gt;&lt;strong&gt;partialMatch&lt;\\\/strong&gt;&lt;\\\/span&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&quot;,&quot;altTitle&quot;:&quot;mastercard&quot;,&quot;oldTabId&quot;:&quot;mastercard_2&quot;,&quot;relation&quot;:&quot;mastercard&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<h3>Test the unhappy flow<\/h3>\n<p>To trigger the scenario where name validation is not supported, or not performed:<\/p>\n<ol>\n<li>In your test  <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, request a name validation.<\/li>\n<li>Use our <a href=\"\/pt\/development-resources\/test-cards-and-credentials\/test-card-numbers#visa\">Visa<\/a> and <a href=\"\/pt\/development-resources\/test-cards-and-credentials\/test-card-numbers#mastercard\">Mastercard<\/a> test cards.<\/li>\n<li>To test the scenario where the name validation is not performed, use any combination of the test shopper name values and set the <code>reference<\/code> to <span translate=\"no\"><strong>NotPerformed<\/strong><\/span>.<\/li>\n<li>To test the scenario where name validation is not supported, use any combination of the test shopper name values and set the <code>reference<\/code> to <span translate=\"no\"><strong>NotSupported<\/strong><\/span>.<br \/>\nAlternatively, you can also use a shopper name that's not part of the test shopper names.<\/li>\n<li>Test that your integration can correctly handle scenarios where name validation is not successful.<\/li>\n<\/ol>\n<p>For example, if you set the <code>reference<\/code> to <span translate=\"no\"><strong>NotSupported<\/strong><\/span>, with any combination of the test shopper names, the response will contain:<\/p>\n<ul>\n<li><code>paymentValidations.name.status<\/code>: <span translate=\"no\"><strong>notSupported<\/strong><\/span><\/li>\n<li>Only for Visa, <code>paymentValidations.name.rawResponse.status<\/code>: <span translate=\"no\"><strong>02<\/strong><\/span><\/li>\n<\/ul>\n<h2>See also<\/h2>\n<ul>\n<li><a href=\"\/pt\/payment-methods\/cards\">Cards<\/a><\/li>\n<li><a href=\"\/pt\/risk-management\">Risk management<\/a><\/li>\n<\/ul>","url":"https:\/\/docs.adyen.com\/pt\/payment-methods\/cards\/name-validation","articleFields":{"description":"Validate the cardholder name when making a payment.","feedback_component":true,"last_edit_on":"09-08-2022 11:45"},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/payment-methods\/cards\/name-validation","title":"Name validation","content":"Name validation allows you to verify if the cardholder name provided by a shopper matches the cardholder name on file at the issuing bank. The service is offered by Visa and Mastercard, and requires you to pay a fee for each transaction where name validation is performed.\nYou can request this validation with a zero-value auth transaction to:\n\nReduce fraud and chargeback losses.\nComply with Know Your Customer (KYC) requirements.\nImprove the reliability of payouts by making sure funds are sent to the right person.\n\nRequirements\nBefore you begin, take into account the following requirements, limitations, and preparations.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nAn online payments integration using the Advanced flow with Checkout API v69 or later.\n\n\nAPI credential roles\nYou need an API credential with an API key and the Checkout webservice role.\n\n\nLimitations\nThis feature is dependent on issuer readiness, and is only supported for: Zero-value auth transactions.Visa and Mastercard payments in the United States, United Kingdom, and Europe.\n\n\n\nHow it works\n\nLearn moreOur name validation feature uses the validation services offered by card schemes.Mastercard Account ValidationVisa Account Name Inquiry\n\n\nTo validate a cardholder's name:\n\nYou make a  \/payments request for a zero-value auth transaction. In the request, you include the cardholder's name and the paymentValidations object to request a name validation.\nAdyen forwards the validation request to Visa or Mastercard.\nThe cardholder's issuing bank checks if the name the shopper provided matches the name they have on file.\nAdyen receives the result and forwards it to you in the paymentValidations object within the synchronous API response.\nYou monitor the result object to get the outcome of the name validation.\nYou build your own logic based on the validation outcome. For example, depending on the match results, you can proceed to authorize the payment or request additional verification.\n\n\nWe are working on expanding the paymentValidations field with support for additional validation types, such as the Address Verification System. We recommend you prepare your implementation to handle new verification objects that will be introduced in paymentValidations.\n\n\n\n\nRequest a name validation\nTo request a name validation, use your online payments integration to make a  \/payments request, and include:\n\n\n\nField\nDescription\n\n\n\n\namount.value\nThe transaction amount. Set to 0 when performing a name validation.\n\n\npaymentMethod\nThe payment details. For cards, set type to scheme, and send the encrpyted card fields. If you are fully PCI compliant, send the unencrypted card fields.\n\n\n shopperName\nThe name of the cardholder, consisting of firstName and lastName.  If you do not include this field when requesting a name validation, we will fallback to the paymentMethod.holderName.\n\n\npaymentValidations.name.status\nSet to requested to request a name validation.\n\n\n\n\nApple Pay and Google Pay do not return the shopper name. For these payment methods, you must build your own logic to pass the details your shopper enters at checkout from your front-end to the  \/payments request.\n\nThe following example shows how to request a name validation for John Smith.\n\n    \n\nFallback logic\nIf you do not include the  shopperName when requesting a name validation, we use the paymentMethod.holderName field to populate the shopper name fields. We take the characters until the first space or period(.) to populate the first name.\nTo ensure accuracy and get the best validation results, we strongly recommend to include the shopperName field instead of relying on the paymentMethod.holderName fallback.\nValidation results\nWhen you make a   \/payments request to validate a cardholder's name, Adyen forwards the information you provide to the schemes to perform the name validation. The API response includes:\n\nThe status of the name validation.\nThe outcome of the name validation.\n\nStatus\nThe paymentValidations.name.status field in the response informs you if name validation was performed. For Visa, you also receive the raw status value that Adyen receives in the paymentValidations.name.rawResponse.status field. Mastercard does not return a rawResponse.status.\n\n\n\nAdyen status values\nDescription\nVisa rawResponse.status values\n\n\n\n\nperformed\nName validation was performed.\n00\n\n\nnotPerformed\nName validation was not performed.\n01\n\n\nnotSupported\nName validation is not supported by the issuer for this card, you will not be charged for name validation.\n02\n\n\n\nOutcome\nThe paymentValidations.name object in the response includes the following objects that inform you of the name validation results.\n\nresult: the scheme-agnostic match values returned by Adyen.\nrawResponse: the raw response(s) we receive from the scheme.\nFor example, the result.fullName contains the Adyen value, and rawResponse.fullName contains the value we received from Visa or Mastercard.\n\nFor Visa, the response includes match values for the full name, along with first name, middle name, and last name. For Mastercard, the response only includes the full name match value.\n\nThe match value for the full name is determined by combining the match results for the first, middle, and last name. The logic to determine the outcome of this combination is built and maintained by schemes, and is not transparent to Adyen.\n\n\n\n\nAdyen result values\nVisa rawResponse values\nMastercard rawResponse values\nDescription\n\n\n\n\nmatch\n01\nA\nThe name matches the name on file at the issuing bank.\n\n\npartialMatch\n50\nB\nThe name partially matches the name on file. For example, the first name matches but the last name does not, or there is a typo.\n\n\nnoMatch\n99\nC\nThe name does not match the name on file.\n\n\n\nThe following response examples show the name validation responses for Visa and Mastercard.\n\n\n    \n        \n        \n    \n\n\nTesting\nTo test different name validation responses and match results:\n\n\nIn your test  \/payments request, request a name validation.\n\n\nUse our Visa and Mastercard test cards.\n\n\nSet the shopperName field to the following test shopper names to test different match statuses. If you do not provide the name in this field, we fall back to the holder name you provide in the paymentMethod object.\n\n\n\nMatch status\nFirst name\nMiddle name\nLast name\n\n\n\n\nMatch\nJohn\nMaria\nSmith\n\n\nPartial match\nJon\nMariah\nSmyth\n\n\nNo match\nAlice\nPeter\nBrown\n\n\n\n\nKeep in mind that the logic to determine the full name match is based on the combination of the first, middle, and last name values are maintained by the schemes and not transparent to Adyen. The following section shows some example test scenarios and the results they are expected to trigger per scheme.\n\n\n\nTest that your implementation correctly handles the match statuses you receive in the name validation outcome.\n\n\nThe following table contains example scenarios and the results they are expected to trigger per scheme.\n\n\n    \n        \n        \n    \n\n\nTest the unhappy flow\nTo trigger the scenario where name validation is not supported, or not performed:\n\nIn your test  \/payments request, request a name validation.\nUse our Visa and Mastercard test cards.\nTo test the scenario where the name validation is not performed, use any combination of the test shopper name values and set the reference to NotPerformed.\nTo test the scenario where name validation is not supported, use any combination of the test shopper name values and set the reference to NotSupported.\nAlternatively, you can also use a shopper name that's not part of the test shopper names.\nTest that your integration can correctly handle scenarios where name validation is not successful.\n\nFor example, if you set the reference to NotSupported, with any combination of the test shopper names, the response will contain:\n\npaymentValidations.name.status: notSupported\nOnly for Visa, paymentValidations.name.rawResponse.status: 02\n\nSee also\n\nCards\nRisk management\n","type":"page","locale":"pt","boost":17,"hierarchy":{"lvl0":"Home","lvl1":"Payment methods","lvl2":"Cards","lvl3":"Name validation"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/payment-methods","lvl2":"https:\/\/docs.adyen.com\/pt\/payment-methods\/cards","lvl3":"\/pt\/payment-methods\/cards\/name-validation"},"levels":4,"category":"Payment method","category_color":"green","tags":["validation"]},"articleFiles":{"name-validation.js":"<p alt=\"\">name-validation.js<\/p>","Name-validation.svg":"<img style=\"width: 800px;\" alt=\"\" src=\"https:\/\/docs.adyen.com\/user\/pages\/docs\/08.payment-methods\/04.cards\/name-validation\/Name-validation.svg?decoding=auto&amp;fetchpriority=auto\" \/>"}}
