{"templateId":"markdown","versions":[{"version":"20261201","label":"(Preview) 2026-12-01","link":"/products/3ds/20261201/react-native/challenge-verification","default":false,"active":false,"folderId":"9e210f12"},{"version":"v1","label":"v1","link":"/products/3ds/v1/react-native/challenge-verification","default":false,"active":false,"folderId":"9e210f12"},{"version":"v2","label":"v2","link":"/products/3ds/v2/react-native/challenge-verification","default":false,"active":false,"folderId":"9e210f12"},{"version":"v3","label":"v3 (Latest)","link":"/products/3ds/react-native/challenge-verification","default":true,"active":true,"folderId":"9e210f12"}],"sharedDataIds":{"sidebar":"sidebar-products/3ds/sidebars.yaml","current-catalog-info":"current-catalog-info-/products/3ds/openapi","oas-products/3ds/@v3/openapi.yaml":"oas-products/3ds/@v3/openapi.yaml"},"props":{"metadata":{"markdoc":{"tagList":["partial","code-snippet","embeddable","tabs","tab","openapi-code-sample","admonition"]},"custom_product":"3DS","type":"markdown"},"seo":{"title":"Challenge display and verification (React Native) | 3DS API","description":"Worldpay for Developers - docs, code examples, resources and tools. Everything you need to build your omnichannel payment solution.","siteUrl":"https://docs.worldpay.com/access","image":"/access/assets/worldpay-logo-light.21b7daf79984773a9fcd7d4fbcb07ae5289dfffd6023c4c3dca720c7058e53dc.33f780a6.svg","keywords":"documentation, api, openapi, sdks, developer, payments, json, payouts, 3ds","jsonLd":{"@context":"https://schema.org","@type":"Organization","url":"https://docs.worldpay.com/access","name":"Worldpay"},"meta":[{"name":"google-site-verification","content":"zjziIKaP3ImsqsfhYnEBnq1R85UabiSwl7HTXuwtZuo"},{"name":"doc_product","content":"Access"},{"name":"doc_category","content":"Documentation"}],"llmstxt":{"hide":false,"sections":[{"title":"Payments API","description":"Payment orchestration API combining fraud assessment, 3ds authentication, SCA exemptions, Worldpay Token creation and a card or wallet based payment.","includeFiles":["products/payments/@20240601/**/*"],"excludeFiles":[]},{"title":"Payment Queries API","description":"Querying your payments data, based on a variety of parameters.","includeFiles":["products/payment-queries/@v1/**/*"],"excludeFiles":[]},{"title":"Card BIN Data API","description":"Provides detailed information about a card.","includeFiles":["products/card-bin/@v1/**/*"],"excludeFiles":[]},{"title":"3DS Authentication API","description":"Request 3DS authentication to protect against fraud, be SCA compliant and to shift liability using this standalone API.","includeFiles":["products/3ds/@v3/**/*"],"excludeFiles":[]},{"title":"FraudSight API","description":"Request a risk assessment and receive a response with an outcome (e.g. lowRisk) using this standalone API.","includeFiles":["products/fraudsight/@v1/**/*"],"excludeFiles":[]},{"title":"Checkout SDK","description":"Integrate using our clientside SDKs for both web and native devices. Benefit from SAQ-A/PCI-SSF compliance.","includeFiles":["products/checkout/web/@v2/**/*","products/checkout/ios/@v4/**/*","products/checkout/android/@v4/**/*","products/checkout/react-native/@v3/**/*","products/checkout/flutter/@v1/**/*"],"excludeFiles":[]},{"title":"Tokens API","description":"Minimizes the exposure of sensitive card details and increases the security of your customer's card details.","includeFiles":["products/tokens/@v3/**/*"],"excludeFiles":[]},{"title":"Card Payments API","description":"Request a card payment using this standalone API, requires separate requests for 3DS, Fraud assessment etc.","includeFiles":["products/card-payments/@v7/**/*"],"excludeFiles":[]},{"title":"Card Verifications API","description":"Verify your customer's card to maximize your authentication rates.","includeFiles":["products/card-verifications/@v6/**/*"],"excludeFiles":[]},{"title":"Account Payouts API","description":"Send funds to your customer's bank accounts and search for payouts using parameters.","includeFiles":["products/account-payouts/@20250101/**/*"],"excludeFiles":[]},{"title":"APMs","description":"Pay using eWallets, bank transfers, direct debits, local card schemes, Postpay and eInvoice/ Buy Now Pay Later.","includeFiles":["products/apms/@20240701/**/*"],"excludeFiles":[]},{"title":"Balance API","description":"Request your account details for a single account or all accounts under an entity.","includeFiles":["products/balance/@20250101/**/*"],"excludeFiles":[]},{"title":"Card Payouts API","description":"Send funds to your customer's cards.","includeFiles":["products/card-payouts/@v4/**/*"],"excludeFiles":[]},{"title":"Events (Webhooks)","description":"Receive status updates from Access Worldpay by setting up a webhook.","includeFiles":["products/events/@v1/**/*"],"excludeFiles":[]},{"title":"FX API","description":"Manage Foreign Exchange (FX) on your payments.","includeFiles":["products/fx/@v1/**/*"],"excludeFiles":[]},{"title":"Hosted Payment Pages (HPP) API","description":"Our low-code option to take payments securely at the lowest PCI compliance level - SAQ A.","includeFiles":["products/hosted-payment-pages/@v1/**/*"],"excludeFiles":[]},{"title":"Money Transfers API","description":"Money Transfer OCTs (Original Credit Transaction) allow funds to be pushed to an eligible card in 30 minutes or less.","includeFiles":["products/money-transfers/@v1/**/*"],"excludeFiles":[]},{"title":"Parties API","description":"Create parties, manage your payout instruments and beneficial owners and carry out identity verification checks.","includeFiles":["products/parties/@20250101/**/*"],"excludeFiles":[]},{"title":"SCA Exemptions API","description":"Maximize a frictionless checkout experience by using issuer data insights to apply exemptions.","includeFiles":["products/sca-exemptions/@v1/**/*"],"excludeFiles":[]},{"title":"Split Payments API","description":"Divide funds from a single payment amongst yourself and your parties/sellers.","includeFiles":["products/split-payments/@20250625/**/*"],"excludeFiles":[]},{"title":"Statements API","description":"Retrieve your account statement and see individual entries for all credits and debits.","includeFiles":["products/statements/@20250101/**/*"],"excludeFiles":[]},{"title":"Transfers API","description":"Transfer funds from source account to target account.","includeFiles":["products/transfers/@20250101/**/*"],"excludeFiles":[]},{"title":"Verified Tokens API","description":"Verified Tokens ensures that your customer's payment details are valid and CIT compliant when creating a token.","includeFiles":["products/verified-tokens/@v3/**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":["openapi"],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Last updated"]},": 09 June 2026 | ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/3ds/changelog/"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Change log"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"challenge-display-and-verification","__idx":0},"children":["Challenge display and verification"]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the following parameters from the authentication response:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["challenge.reference"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["challenge.url"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["challenge.jwt"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The content within the iframe is from the issuing bank. The bank performs an identity check on your customer."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"optional-md-field","__idx":1},"children":["Optional MD field"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Pass data specific to your checkout session and it will be echoed back in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["challenge.returnUrl"]}," originally provided in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/3ds/react-native/authentication"},"children":["authentication request"]},". This could, for example, be a checkout sessionId. Any value provided must be URL encoded with a maximum of 1024 characters."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"challenge-display","__idx":2},"children":["Challenge display"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The challenge display for React Native uses:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["a ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/react-native-webview/react-native-webview"},"children":["WebView"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["a mobile-friendly HTML page"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["a fullscreen iframe, embedded in the mobile-friendly HTML page, used to display the challenge page to the end user"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["a secondary HTML page, loaded via the iframe, and used to kickstart the challenge display"]}]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Install and link the React Native ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WebView"]}," component in your application."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/react-native/install-webview","language":"bash","header":{"controls":{"copy":{}}},"lang":"bash","source":"# 1. Install dependency\nnpm install react-native-webview\n\n# 2. Link dependency using your preferred method\nreact-native link react-native-webview\n\n# 3. Ee-install pods\ncd ios\npod install\n"},"children":[]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":2},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Add a WebView in your React Native application with the source pointing to the HTML page created in the next step."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/react-native/challenge-webview.js","language":"javascript","title":"React Native","header":{"title":"React Native","controls":{"copy":{}}},"lang":"javascript","source":"<WebView source={{ uri: 'replace-this-with-the-url-of-the-mobile-friendly-page' }} />\n"},"children":[]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":3},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create and host the mobile-friendly HTML page."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/react-native/challenge-mobile-friendly-html.html","language":"html","title":"HTML","header":{"title":"HTML","controls":{"copy":{}}},"lang":"html","source":"<html lang=\"en\">\n<head>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n</head>\n<body style=\"margin: 0\">\n</body>\n</html>\n"},"children":[]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":4},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Add a full screen iframe to the HTML page and set the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["src"]}," attribute to the URL of the page that will POST the challenge form."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/react-native/challenge-iframe.html","language":"html","title":"HTML","header":{"title":"HTML","controls":{"copy":{}}},"lang":"html","source":"<iframe src=\"replace-this-with-the-url-of-your-page-that-posts-the-challenge-form\"\n        width=\"100%\" height=\"100%\"\n        style=\"height: 100%; width: 100%; border-width: 0\">\n</iframe>\n"},"children":[]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":5},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create and host the secondary HTML page that POSTs the challenge form."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/react-native/challenge-post-form.html","language":"html","title":"HTML","header":{"title":"HTML","controls":{"copy":{}}},"lang":"html","source":"<html>\n<head>\n</head>\n<body>\n\n<!-- Using your preferred programming language, set the 'action' attribute with the value of the query string parameter containing the 'challenge.url' from the authentication response -->\n<form id=\"challengeForm\" method= \"POST\" action=\"https://challengeUrl.example.com\">\n\n    <!-- Using your preferred programming language, set the 'value' attribute with the value of the query string parameter containing the 'challenge.jwt' from the authentication response -->\n    <input type = \"hidden\" name= \"JWT\" value= \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI1NDQzOGIzYS1iYjUzLTEyY2QtODY0My0xNTM2YmU3M2ZmMzUiLCJpYXQiOiIzODU2NzI5NDgyIiwiaXNzIjoiNWJkOWUwZTQ0NDRkY2UxNTM0MjhjOTQwIiwiT3JnVW5pdElkIjoiNWJkOWI1NWU0NDQ0NzYxYWMwYWYxYzgwIiwiUmV0dXJuVXJsIjoiaHR0cDovL21lcmNoYW50LmV4YW1wbGUuY29tL3RocmVlZHNjaGFsbGVuZ2Vjb21wbGV0ZSIsIlBheWxvYWQiOnsiQUNTVXJsIjoiaHR0cHM6Ly9hY3MuZXhhbXBsZS5jb20vM2RzMi9jaGFsbGVuZ2U_aWQ9MTIzNDU2Nzg5IiwiUGF5bG9hZCI6IlZHaHBjeUJwY3lCaElHSmhjMlVnTmpRZ1pXNWpiMlJsWkNCbGVHRnRjR3hsSUc5bUlHRWdNMFJUSUNKd1lYbHNiMkZrSWc9PSIsIlRyYW5zYWN0aW9uSWQiOiJzUk1QV0NRb1FyRWlWeGVoVG51MCJ9LCJPYmplY3RpZnlQYXlsb2FkIjp0cnVlfQ.3Dqjr5MuEC9AG7uvsJCft94-d70NmgR94zIeru8fAYE\" />\n\n    <!-- Optional field (max 1024 characters) for you to pass url parameters in the challenge form that will be included/echoed in the response url (`challenge.returnUrl`) after the challenge is complete -->\n    <input type=\"hidden\" name=\"MD\" value=\"merchantSessionId=1234567890\" />\n\n</form>\n\n<script>\n  window.onload = function() {\n    // Auto submit form on page load\n    document.getElementById('challengeForm').submit();\n  }\n</script>\n\n</body>\n</html>\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In addition, after the challenge is completed, if you wish to relay a message, you have sent by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["postMessage()"]}," to your mobile-friendly page, to the React Native layer:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use the following JavaScript in your mobile-friendly page to relay the message to React Native."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/react-native/challenge-post-message-javascript.js","language":"javascript","title":"Javascript","header":{"title":"Javascript","controls":{"copy":{}}},"lang":"javascript","source":"<script language=\"JavaScript\">\nwindow.onmessage = (event) => {\n  // Always verify that the message received is from the expected origin\n  if (event.origin !== '...') {\n    return;\n  }\n\n  // the function below uses a tring, so if you wish to send JSON\n  // make sure to serialise it using JSON.stringify()\n  window.ReactNativeWebView.postMessage(event.data);\n};\n</script>\n"},"children":[]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":2},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Add an event listener for the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message"]}," event on your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WebView"]},"."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/react-native/challenge-post-message-react-native.js","language":"javascript","title":"React Native","header":{"title":"React Native","controls":{"copy":{}}},"lang":"javascript","source":"<WebView\n  source={{ uri: 'replace-this-with-the-url-of-the-mobile-friendly-page' }}\n  onMessage={(event) => {\n    // extracting data (string) from the event\n    console.info(event.nativeEvent.data);\n  }}\n/>\n"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"test-challenge-form","__idx":3},"children":["Test challenge form"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The form below allows you to submit the 3DS challenge details provided in the API response and display the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/3ds/react-native/challenge-verification"},"children":["issuer challenge"]},". This is useful if using tools such as postman/insomnia to test your integration."]},{"$$mdtype":"Tag","name":"Embeddable","attributes":{"url":"/embeddable/3ds/challenge.html","title":"Access 3ds - Device Data Collection form","height":"535"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"full-integration-example-code","__idx":4},"children":["Full integration example code"]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"Dependency","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/react-native/install-webview","language":"bash","header":{"controls":{"copy":{}}},"lang":"bash","source":"# 1. Install dependency\nnpm install react-native-webview\n\n# 2. Link dependency using your preferred method\nreact-native link react-native-webview\n\n# 3. Ee-install pods\ncd ios\npod install\n"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"React Native","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/react-native/challenge-full-react-native.js","language":"javascript","header":{"controls":{"copy":{}}},"lang":"javascript","source":"// The onMessage event handler is optional and should be added\n// only if you wish to relay to the React Native layer\n// a message you sent by postMessage() to your mobile-friendly page\n\n<WebView\n  source={{ uri: 'replace-this-with-the-url-of-the-mobile-friendly-page' }}\n  onMessage={(event) => {\n    // extracting data (string) from the event\n    console.info(event.nativeEvent.data);\n  }}\n/>\n"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"HTML page 1","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/react-native/challenge-full-html-1.html","language":"javascript","header":{"controls":{"copy":{}}},"lang":"javascript","source":"<html lang=\"en\">\n<head>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n</head>\n<body style=\"margin: 0\">\n<iframe src=\"replace-this-with-the-url-of-your-page-that-posts-the-challenge-form\"\n        width=\"100%\" height=\"100%\"\n        style=\"height: 100%; width: 100%; border-width: 0\">\n</iframe>\n\n<script language=\"JavaScript\">\n// This script is optional and should be added\n// only if you wish to relay to the React Native layer\n// a message you sent by postMessage() to your mobile-friendly page\n\nwindow.onmessage = (event) => {\n  // Always verify that the message received is from the expected origin\n  if (event.origin !== '...') {\n    return;\n  }\n\n  // the function below uses a string, so if you wish to send JSON\n  // make sure to serialise it using JSON.stringify()\n  window.ReactNativeWebView.postMessage(event.data);\n};\n</script>\n</body>\n</html>\n"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"HTML page 2","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/react-native/challenge-post-form.html","language":"javascript","header":{"controls":{"copy":{}}},"lang":"javascript","source":"<html>\n<head>\n</head>\n<body>\n\n<!-- Using your preferred programming language, set the 'action' attribute with the value of the query string parameter containing the 'challenge.url' from the authentication response -->\n<form id=\"challengeForm\" method= \"POST\" action=\"https://challengeUrl.example.com\">\n\n    <!-- Using your preferred programming language, set the 'value' attribute with the value of the query string parameter containing the 'challenge.jwt' from the authentication response -->\n    <input type = \"hidden\" name= \"JWT\" value= \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI1NDQzOGIzYS1iYjUzLTEyY2QtODY0My0xNTM2YmU3M2ZmMzUiLCJpYXQiOiIzODU2NzI5NDgyIiwiaXNzIjoiNWJkOWUwZTQ0NDRkY2UxNTM0MjhjOTQwIiwiT3JnVW5pdElkIjoiNWJkOWI1NWU0NDQ0NzYxYWMwYWYxYzgwIiwiUmV0dXJuVXJsIjoiaHR0cDovL21lcmNoYW50LmV4YW1wbGUuY29tL3RocmVlZHNjaGFsbGVuZ2Vjb21wbGV0ZSIsIlBheWxvYWQiOnsiQUNTVXJsIjoiaHR0cHM6Ly9hY3MuZXhhbXBsZS5jb20vM2RzMi9jaGFsbGVuZ2U_aWQ9MTIzNDU2Nzg5IiwiUGF5bG9hZCI6IlZHaHBjeUJwY3lCaElHSmhjMlVnTmpRZ1pXNWpiMlJsWkNCbGVHRnRjR3hsSUc5bUlHRWdNMFJUSUNKd1lYbHNiMkZrSWc9PSIsIlRyYW5zYWN0aW9uSWQiOiJzUk1QV0NRb1FyRWlWeGVoVG51MCJ9LCJPYmplY3RpZnlQYXlsb2FkIjp0cnVlfQ.3Dqjr5MuEC9AG7uvsJCft94-d70NmgR94zIeru8fAYE\" />\n\n    <!-- Optional field (max 1024 characters) for you to pass url parameters in the challenge form that will be included/echoed in the response url (`challenge.returnUrl`) after the challenge is complete -->\n    <input type=\"hidden\" name=\"MD\" value=\"merchantSessionId=1234567890\" />\n\n</form>\n\n<script>\n  window.onload = function() {\n    // Auto submit form on page load\n    document.getElementById('challengeForm').submit();\n  }\n</script>\n\n</body>\n</html>\n"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"verification","__idx":5},"children":["Verification"]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once the challenge form has been completed, you must make a verification request to verify the result of the challenge form."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["POST your verification request to our ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["3ds:verify"]}," action link received in your authentication response if your outcome is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["challenged"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"verification-example-request","__idx":6},"children":["Verification example request"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["POST  ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://try.access.worldpay.com/verifications/customers/3ds/verification"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Verification request body:"]},{"$$mdtype":"Tag","name":"OpenApiCodeSample","attributes":{"descriptionFile":"oas-products/3ds/@v3/openapi.yaml","operationId":"verify","exampleKey":"Verification","parameters":{},"environments":{}},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"verification-responses","__idx":7},"children":["Verification responses"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Best practice"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Access Worldpay returns a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WP-CorrelationId"]}," in the headers of service responses. We ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["highly recommend"]}," you log this. The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WP-CorrelationId"]}," is used by us to examine individual service requests."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Here are examples of the verification responses you would receive. To understand what these outcomes mean and how to reproduce them for testing purposes see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/3ds/testing"},"children":["3DS testing"]},"."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"Authenticated","disable":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Successful authentication following a challenge"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/responses/verification-authenticated.yaml","language":"json","title":"authenticated","header":{"title":"authenticated","controls":{"copy":{}}},"lang":"json","source":"  {\n      \"outcome\": \"authenticated\",\n      \"transactionReference\": \"Memory265-13/08/1876\",\n      \"acsTransactionId\": \"fe007a6e-315f-4cdf-98ca-28a9e40e3581\",\n      \"status\": \"Y\",\n      \"enrolled\": \"Y\",\n      \"authentication\": {\n          \"version\": \"2.1.0\",\n          \"authenticationValue\": \"MAAAAAAAAAAAAAAAAAAAAAAAAAA=\",\n          \"eci\": \"05\",\n          \"transactionId\": \"c5b808e7-1de1-4069\"\n      }\n  }"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/responses/verification-authenticated-cartesbancaires.yaml","language":"json","title":"authenticated - Cartes Bancaires","header":{"title":"authenticated - Cartes Bancaires","controls":{"copy":{}}},"lang":"json","source":"    \"transactionReference\": \"Memory265-13/08/1876\",\n    \"acsTransactionId\": \"fe007a6e-315f-4cdf-98ca-28a9e40e3581\",\n    \"status\": \"Y\",\n    \"enrolled\": \"Y\",\n    \"authentication\": {\n        \"version\": \"2.1.0\",\n        \"authenticationValue\": \"AAIBBYNoEwAAACcKhAJkdQAAAAA=\",\n        \"eci\": \"05\",\n        \"transactionId\": \"1be85590-d6f9-4a0b-93c9-3a7188d9a463\",\n        \"cryptogramAlgorithm\": \"1\",\n        \"challengePreference\": \"challengeMandated\",\n        \"authenticationFlow\": \"challenge\",\n        \"brand\": \"cartesBancaires\"\n    }\n}"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"Authentication Failed","disable":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Issuer failed the authentication following the challenge"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/responses/verification-authentication-failed.yaml","language":"json","title":"authenticationFailed","header":{"title":"authenticationFailed","controls":{"copy":{}}},"lang":"json","source":"  {\n      \"outcome\": \"authenticationFailed\",\n      \"transactionReference\": \"Memory265-13/08/1876\",\n      \"acsTransactionId\": \"fe007a6e-315f-4cdf-98ca-28a9e40e3581\",\n      \"status\": \"N\",\n      \"enrolled\": \"Y\",\n      \"authentication\": {\n          \"version\": \"2.2.0\",\n          \"eci\": \"00\",\n          \"transactionId\": \"N+en2I5+ZK/kQqk69wXdI8XIPg8=\"\n      },\n      \"_links\": {\n          \"3ds:authenticate\": {\n              \"href\": \"https://try.access.worldpay.com/verifications/customers/3ds/authentication\"\n          },\n          \"curies\": [\n              {\n                  \"href\": \"https://try.access.worldpay.com/rels/verifications/customers/3ds/{rel}\",\n                  \"templated\": true,\n                  \"name\": \"3ds\"\n              }\n          ]\n      }\n  }"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/responses/verification-authentication-failed-cartesbancaires.yaml","language":"json","title":"authenticationFailed - Cartes Bancaires","header":{"title":"authenticationFailed - Cartes Bancaires","controls":{"copy":{}}},"lang":"json","source":"    \"transactionReference\": \"Memory265-13/08/1876\",\n    \"acsTransactionId\": \"fe007a6e-315f-4cdf-98ca-28a9e40e3581\",\n    \"status\": \"N\",\n    \"enrolled\": \"Y\",\n    \"authentication\": {\n        \"version\": \"2.1.0\",\n        \"eci\": \"07\",\n        \"transactionId\": \"424c464d-3b04-4101-950a-8a71cd1f9dc6\",\n        \"cryptogramAlgorithm\": \"1\",\n        \"challengePreference\": \"challengeMandated\",\n        \"authenticationFlow\": \"frictionless\",\n        \"statusReason\": \"01\",\n        \"brand\": \"cartesBancaires\"\n    },\n    \"_links\": {\n        \"3ds:authenticate\": {\n            \"href\": \"https://try.access.worldpay.com/verifications/customers/3ds/authentication\"\n        },\n        \"curies\": [\n            {\n                \"href\": \"https://try.access.worldpay.com/rels/verifications/customers/3ds/{rel}\",\n                \"name\": \"3ds\",\n                \"templated\": true\n            }\n        ]\n    }\n}"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"Signature Failed","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/responses/verification-signature-failed.yaml","language":"json","title":"signatureFailed","header":{"title":"signatureFailed","controls":{"copy":{}}},"lang":"json","source":"  {\n      \"outcome\": \"signatureFailed\",\n      \"transactionReference\": \"Memory265-13/08/1876\",\n      \"authentication\": {\n          \"version\": \"1.0.2\",\n          \"eci\": \"02\"\n      },\n      \"_links\": {\n          \"3ds:authenticate\": {\n              \"href\": \"https://try.access.worldpay.com/verifications/customers/3ds/authentication\"\n          },\n          \"curies\": [\n              {\n                  \"href\": \"https://try.access.worldpay.com/rels/verifications/customers/3ds/{rel}\",\n                  \"templated\": true,\n                  \"name\": \"3ds\"\n              }\n          ]\n      }\n  }"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"Unavailable","disable":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Error/Timeout whilst attempting authentication."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../examples/responses/verification-unavailable.yaml","language":"json","title":"unavailable","header":{"title":"unavailable","controls":{"copy":{}}},"lang":"json","source":"  {\n      \"outcome\": \"unavailable\",\n      \"transactionReference\": \"Memory265-13/08/1876\",\n      \"_links\": {\n          \"3ds:authenticate\": {\n              \"href\": \"https://try.access.worldpay.com/verifications/customers/3ds/authentication\"\n          },\n          \"3ds:verify\": {\n              \"href\": \"https://try.access.worldpay.com/verifications/customers/3ds/verification\"\n          },\n          \"curies\": [\n              {\n                  \"href\": \"https://try.access.worldpay.com/rels/verifications/customers/3ds/{rel}\",\n                  \"templated\": true,\n                  \"name\": \"3ds\"\n              }\n          ]\n      }\n  }"},"children":[]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Apply the details (such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["eci"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["version"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["authenticationValue"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactionId"]},") required by ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/card-payments/"},"children":["Card Payments"]}," in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/card-payments/authorize-a-payment#3ds"},"children":["authorization request"]},". See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/3ds/testing"},"children":["Testing"]}," for details."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Next steps"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/card-payments/authorize-a-payment#3ds"},"children":["Take a payment"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/3ds/testing"},"children":["Testing"]}]}]},"headings":[{"value":"Challenge display and verification","id":"challenge-display-and-verification","depth":1},{"value":"Optional MD field","id":"optional-md-field","depth":4},{"value":"Challenge display","id":"challenge-display","depth":2},{"value":"Test challenge form","id":"test-challenge-form","depth":3},{"value":"Full integration example code","id":"full-integration-example-code","depth":3},{"value":"Verification","id":"verification","depth":1},{"value":"Verification example request","id":"verification-example-request","depth":2},{"value":"Verification responses","id":"verification-responses","depth":2}],"frontmatter":{"seo":{"title":"Challenge display and verification (React Native) | 3DS API"}},"lastModified":"2026-02-13T11:40:37.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/3ds/react-native/challenge-verification","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}