{"templateId":"markdown","versions":[{"version":"20261201","label":"(Preview) 2026-12-01","link":"/products/3ds/20261201/device-data","default":false,"active":false,"folderId":"9e210f12"},{"version":"v1","label":"v1","link":"/products/3ds/v1/device-data","default":false,"active":true,"folderId":"9e210f12"},{"version":"v2","label":"v2","link":"/products/3ds/v2/device-data","default":false,"active":false,"folderId":"9e210f12"},{"version":"v3","label":"v3 (Latest)","link":"/products/3ds/v3/device-data","default":true,"active":false,"folderId":"9e210f12"}],"sharedDataIds":{"sidebar":"sidebar-products/3ds/sidebars.yaml","current-catalog-info":"current-catalog-info-/products/3ds/openapi","api-docs-products/3ds/@v1/openapi.yaml":"api-docs-products/3ds/@v1/openapi.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition","partial","tabs","tab","code-snippet","openapi-code-sample"]},"custom_product":"3DS","type":"markdown"},"seo":{"title":"Device data","description":"Worldpay for Developers - docs, code examples, resources and tools. Everything you need to build your omnichannel payment solution.","siteUrl":"https://docs.worldpay-bsh.securedataplatform.co.uk","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-bsh.securedataplatform.co.uk/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/**/*"]},{"title":"Payment Queries API","description":"Querying your payments data, based on a variety of parameters.","includeFiles":["products/payment-queries/@v1/**/*"]},{"title":"Card BIN Data API","description":"Provides detailed information about a card.","includeFiles":["products/card-bin/@v1/**/*"]},{"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/**/*"]},{"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/**/*"]},{"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/**/*"]},{"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/**/*"]},{"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/**/*"]},{"title":"Card Verifications API","description":"Verify your customer's card to maximize your authentication rates.","includeFiles":["products/card-verifications/@v6/**/*"]},{"title":"Account Payouts API","description":"Send funds to your customer's bank accounts and search for payouts using parameters.","includeFiles":["products/account-payouts/@20250101/**/*"]},{"title":"APMs","description":"Pay using eWallets, bank transfers, direct debits, local card schemes, Postpay and eInvoice/ Buy Now Pay Later.","includeFiles":["products/apms/@20240701/**/*"]},{"title":"Balance API","description":"Request your account details for a single account or all accounts under an entity.","includeFiles":["products/balance/@20250101/**/*"]},{"title":"Card Payouts API","description":"Send funds to your customer's cards.","includeFiles":["products/card-payouts/@v4/**/*"]},{"title":"Events (Webhooks)","description":"Receive status updates from Access Worldpay by setting up a webhook.","includeFiles":["products/events/@v1/**/*"]},{"title":"FX API","description":"Manage Foreign Exchange (FX) on your payments.","includeFiles":["products/fx/@v1/**/*"]},{"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/**/*"]},{"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/**/*"]},{"title":"Parties API","description":"Create parties, manage your payout instruments and beneficial owners and carry out identity verification checks.","includeFiles":["products/parties/@20250101/**/*"]},{"title":"SCA Exemptions API","description":"Maximize a frictionless checkout experience by using issuer data insights to apply exemptions.","includeFiles":["products/sca-exemptions/@v1/**/*"]},{"title":"Split Payments API","description":"Divide funds from a single payment amongst yourself and your parties/sellers.","includeFiles":["products/split-payments/@20250625/**/*"]},{"title":"Statements API","description":"Retrieve your account statement and see individual entries for all credits and debits.","includeFiles":["products/statements/@20250101/**/*"]},{"title":"Transfers API","description":"Transfer funds from source account to target account.","includeFiles":["products/transfers/@20250101/**/*"]},{"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/**/*"]}]}},"dynamicMarkdocComponents":["openapi"],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Important"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We have released a new version. Documentation for our latest version can be found ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/3ds/"},"children":["here"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Last updated"]},": 12 August 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":"device-data","__idx":0},"children":["Device data"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Device Data Collection (DDC) is used by the card issuer to fingerprint the customer's device. Along with the risk data in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/3ds/v1/authentication"},"children":["authentication"]}," request it's used to decide if a ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/3ds/v1/challenge-verification"},"children":["challenge"]}," is required or if the authentication can be frictionless. This step is required for the authentication to use 3DS2."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"device-data-initialization","__idx":1},"children":["Device data initialization"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}," your device data initialization request to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["3ds:deviceDataInitialize"]}," action link."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This request creates a JSON Web Token (JWT) that is used as part of the Device Data Collection (DDC) form. The DDC form also requires the first six digits of your customers card number (BIN). The Bank Identification Number (BIN) can be returned if a token resource is provided, see ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["JWT + BIN (token)"]}," request."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For consistency of integration you can also provide the full card number ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["JWT + BIN (card)"]},". It will be truncated to become the BIN in the response."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"device-data-initialization-example-request","__idx":2},"children":["Device data initialization example request"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["POST  ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://try.access.worldpay-bsh.securedataplatform.co.uk/verifications/customers/3ds/deviceDataInitialization"]}]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"JWT only","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/ddc-jwt-request.json","language":"json","header":{"controls":{"copy":{}}},"lang":"json","source":"{\n    \"transactionReference\": \"unique-transactionReference\",\n    \"merchant\": {\n        \"entity\": \"default\"\n    }\n}"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"JWT + BIN (token)","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/ddc-jwt-request-bin-token.json","language":"json","header":{"controls":{"copy":{}}},"lang":"json","source":"{\n    \"transactionReference\": \"unique-transactionReference\",\n    \"merchant\": {\n        \"entity\": \"default\"\n    },\n    \"paymentInstrument\": {\n        \"type\": \"card/tokenized\",\n        \"href\": \"https://try.access.worldpay-bsh.securedataplatform.co.uk/tokens/MTIzNDU2Nzg5MDEyMzQ1Ng\"\n    }\n}"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"JWT + BIN (card)","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/ddc-jwt-request-bin-card.json","language":"json","header":{"controls":{"copy":{}}},"lang":"json","source":"{\n    \"transactionReference\": \"unique-transactionReference\",\n    \"merchant\": {\n        \"entity\": \"default\"\n    },\n    \"paymentInstrument\": {\n        \"type\": \"card/front\",\n        \"cardHolderName\": \"Sherlock Holmes\",\n        \"cardNumber\": \"4444333322221111\",\n        \"cardExpiryDate\": {\n            \"month\": 5,\n            \"year\": 2035\n        }\n    }\n}"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Google Pay (JWT + BIN)","disable":false},"children":[{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Best practice"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.google.com/pay/api/web/reference/request-objects#CardParameters"},"children":["Set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["assuranceDetails"]}," to \"true\""]}," in your request when integrating with the Google Pay API, to avoid attempting authentication on an SCA compliant token. A response containing ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"cardHolderAuthenticated\": true"]}," indicates that authentication is not required and you can proceed directly to the authorization and reduce friction in your payment flow."]}]},{"$$mdtype":"Tag","name":"OpenApiCodeSample","attributes":{"descriptionFile":"api-docs-products/3ds/@v1/openapi.yaml","operationId":"deviceDataInitialize","exampleKey":"Initialize the Device Data Collection using Google Pay","parameters":{},"environments":{},"codeSamplesResolved":[{"lang":"json","title":"Payload application/vnd.worldpay.verifications.customers-v1.hal+json","source":"{\n  \"transactionReference\": \"Memory265-13/08/1876\",\n  \"merchant\": {\n    \"entity\": \"default\"\n  },\n  \"paymentInstrument\": {\n    \"type\": \"card/wallet+googlepay\",\n    \"walletToken\": \"{\\\"protocolVersion\\\":\\\"ECv1\\\",\\\"signature\\\":\\\"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\\\\u003d\\\\u003d\\\",\\\"signedMessage\\\":\\\"{\\\\\\\"tag\\\\\\\":\\\\\\\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\\\\\\\u003d\\\\\\\",\\\\\\\"ephemeralPublicKey\\\\\\\":\\\\\\\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\\\\\\\u003d\\\\\\\",\\\\\\\"encryptedMessage\\\\\\\":\\\\\\\"mKOoXwi8OavZ\\\\\\\"}\\\"}\"\n  }\n}"},{"lang":"shell","title":"curl","source":"curl -i -X POST \\\n  https://try.access.worldpay-bsh.securedataplatform.co.uk/verifications/customers/3ds/deviceDataInitialize \\\n  -H 'Accept: application/vnd.worldpay.verifications.customers-v1.hal+json' \\\n  -H 'Content-Type: application/vnd.worldpay.verifications.customers-v1.hal+json' \\\n  -d '{\n    \"transactionReference\": \"Memory265-13/08/1876\",\n    \"merchant\": {\n      \"entity\": \"default\"\n    },\n    \"paymentInstrument\": {\n      \"type\": \"card/wallet+googlepay\",\n      \"walletToken\": \"{\\\"protocolVersion\\\":\\\"ECv1\\\",\\\"signature\\\":\\\"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\\\\u003d\\\\u003d\\\",\\\"signedMessage\\\":\\\"{\\\\\\\"tag\\\\\\\":\\\\\\\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\\\\\\\u003d\\\\\\\",\\\\\\\"ephemeralPublicKey\\\\\\\":\\\\\\\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\\\\\\\u003d\\\\\\\",\\\\\\\"encryptedMessage\\\\\\\":\\\\\\\"mKOoXwi8OavZ\\\\\\\"}\\\"}\"\n    }\n  }'"},{"lang":"python","title":"Python","source":"import requests\n\nurl = \"https://try.access.worldpay-bsh.securedataplatform.co.uk/verifications/customers/3ds/deviceDataInitialize\"\n\npayload = '''\n  {\n    \"transactionReference\": \"Memory265-13/08/1876\",\n    \"merchant\": {\n      \"entity\": \"default\"\n    },\n    \"paymentInstrument\": {\n      \"type\": \"card/wallet+googlepay\",\n      \"walletToken\": \"{\\\"protocolVersion\\\":\\\"ECv1\\\",\\\"signature\\\":\\\"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\\\\u003d\\\\u003d\\\",\\\"signedMessage\\\":\\\"{\\\\\\\"tag\\\\\\\":\\\\\\\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\\\\\\\u003d\\\\\\\",\\\\\\\"ephemeralPublicKey\\\\\\\":\\\\\\\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\\\\\\\u003d\\\\\\\",\\\\\\\"encryptedMessage\\\\\\\":\\\\\\\"mKOoXwi8OavZ\\\\\\\"}\\\"}\"\n    }\n  }\n'''\n\nheaders = {\n  \"Content-Type\": \"application/vnd.worldpay.verifications.customers-v1.hal+json\",\n  \"Accept\": \"application/vnd.worldpay.verifications.customers-v1.hal+json\"\n}\n\nresponse = requests.post(url, data=payload, headers=headers)\n\ndata = response.json()\nprint(data)"},{"lang":"java","title":"Java","source":"import java.net.*;\nimport java.net.http.*;\nimport java.util.*;\n\npublic class App {\n  public static void main(String[] args) throws Exception {\n    var httpClient = HttpClient.newBuilder().build();\n\n    var host = \"https://try.access.worldpay-bsh.securedataplatform.co.uk\";\n    var pathname = \"/verifications/customers/3ds/deviceDataInitialize\";\n    var request = HttpRequest.newBuilder()\n      .POST(HttpRequest.BodyPublishers.ofString(payload))\n      .uri(URI.create(host + pathname ))\n      .header(\"Content-Type\", \"application/vnd.worldpay.verifications.customers-v1.hal+json\")\n      .header(\"Accept\", \"application/vnd.worldpay.verifications.customers-v1.hal+json\")\n      .build();\n\n    var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());\n\n    System.out.println(response.body());\n  }\n}"},{"lang":"javascript","title":"Node.js","source":"import fetch from 'node-fetch';\n\nasync function run() {\n  const resp = await fetch(\n    `https://try.access.worldpay-bsh.securedataplatform.co.uk/verifications/customers/3ds/deviceDataInitialize`,\n    {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/vnd.worldpay.verifications.customers-v1.hal+json',\n        Accept: 'application/vnd.worldpay.verifications.customers-v1.hal+json'\n      },\n      body: `{\n          \"transactionReference\": \"Memory265-13/08/1876\",\n          \"merchant\": {\n            \"entity\": \"default\"\n          },\n          \"paymentInstrument\": {\n            \"type\": \"card/wallet+googlepay\",\n            \"walletToken\": \"{\\\"protocolVersion\\\":\\\"ECv1\\\",\\\"signature\\\":\\\"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\\\\u003d\\\\u003d\\\",\\\"signedMessage\\\":\\\"{\\\\\\\"tag\\\\\\\":\\\\\\\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\\\\\\\u003d\\\\\\\",\\\\\\\"ephemeralPublicKey\\\\\\\":\\\\\\\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\\\\\\\u003d\\\\\\\",\\\\\\\"encryptedMessage\\\\\\\":\\\\\\\"mKOoXwi8OavZ\\\\\\\"}\\\"}\"\n          }\n        }`\n    }\n  );\n\n  const data = await resp.text();\n  console.log(data);\n}\n\nrun();"},{"lang":"go","title":"Go","source":"package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io/ioutil\"\n)\n\nfunc main() {\n  reqUrl := \"https://try.access.worldpay-bsh.securedataplatform.co.uk/verifications/customers/3ds/deviceDataInitialize\"\n  payload := strings.NewReader(\"{\\n  \\\"transactionReference\\\": \\\"Memory265-13/08/1876\\\",\\n  \\\"merchant\\\": {\\n    \\\"entity\\\": \\\"default\\\"\\n  },\\n  \\\"paymentInstrument\\\": {\\n    \\\"type\\\": \\\"card/wallet+googlepay\\\",\\n    \\\"walletToken\\\": \\\"{\\\\\\\"protocolVersion\\\\\\\":\\\\\\\"ECv1\\\\\\\",\\\\\\\"signature\\\\\\\":\\\\\\\"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\\\\\\\\u003d\\\\\\\\u003d\\\\\\\",\\\\\\\"signedMessage\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"tag\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\\\\\\\\\\\\\\\u003d\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"ephemeralPublicKey\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\\\\\\\\\\\\\\\u003d\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"encryptedMessage\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"mKOoXwi8OavZ\\\\\\\\\\\\\\\"}\\\\\\\"}\\\"\\n  }\\n}\")\n  req, err := http.NewRequest(\"POST\", reqUrl, payload)\n  if err != nil {\n    panic(err)\n  }\n  req.Header.Add(\"Content-Type\", \"application/vnd.worldpay.verifications.customers-v1.hal+json\")\n  req.Header.Add(\"Accept\", \"application/vnd.worldpay.verifications.customers-v1.hal+json\")\n  res, err := http.DefaultClient.Do(req)\n  if err != nil {\n    panic(err)\n  }\n  defer res.Body.Close()\n  body, err := ioutil.ReadAll(res.Body)\n  if err != nil {\n    panic(err)\n  }\n\n  fmt.Println(res)\n  fmt.Println(string(body))\n}"},{"lang":"php","title":"PHP","source":"/**\n * Requires libcurl\n */\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n  CURLOPT_HTTPHEADER => [\n    \"Accept: application/vnd.worldpay.verifications.customers-v1.hal+json\",\n    \"Content-Type: application/vnd.worldpay.verifications.customers-v1.hal+json\"\n  ],\n  CURLOPT_POSTFIELDS => \"{\\n  \\\"transactionReference\\\": \\\"Memory265-13/08/1876\\\",\\n  \\\"merchant\\\": {\\n    \\\"entity\\\": \\\"default\\\"\\n  },\\n  \\\"paymentInstrument\\\": {\\n    \\\"type\\\": \\\"card/wallet+googlepay\\\",\\n    \\\"walletToken\\\": \\\"{\\\\\\\"protocolVersion\\\\\\\":\\\\\\\"ECv1\\\\\\\",\\\\\\\"signature\\\\\\\":\\\\\\\"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\\\\\\\\u003d\\\\\\\\u003d\\\\\\\",\\\\\\\"signedMessage\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"tag\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\\\\\\\\\\\\\\\u003d\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"ephemeralPublicKey\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\\\\\\\\\\\\\\\u003d\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"encryptedMessage\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"mKOoXwi8OavZ\\\\\\\\\\\\\\\"}\\\\\\\"}\\\"\\n  }\\n}\",\n  CURLOPT_URL => \"https://try.access.worldpay-bsh.securedataplatform.co.uk/verifications/customers/3ds/deviceDataInitialize\",\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_CUSTOMREQUEST => \"POST\",\n]);\n\n$response = curl_exec($curl);\n$error = curl_error($curl);\n\ncurl_close($curl);\n\nif ($error) {\n  echo \"cURL Error #:\" . $error;\n} else {\n  echo $response;\n}"},{"lang":"ruby","title":"Ruby","source":"require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI('https://try.access.worldpay-bsh.securedataplatform.co.uk/verifications/customers/3ds/deviceDataInitialize')\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest['Content-Type'] = 'application/vnd.worldpay.verifications.customers-v1.hal+json'\nrequest['Accept'] = 'application/vnd.worldpay.verifications.customers-v1.hal+json'\nrequest.body = \"{\\n  \\\"transactionReference\\\": \\\"Memory265-13/08/1876\\\",\\n  \\\"merchant\\\": {\\n    \\\"entity\\\": \\\"default\\\"\\n  },\\n  \\\"paymentInstrument\\\": {\\n    \\\"type\\\": \\\"card/wallet+googlepay\\\",\\n    \\\"walletToken\\\": \\\"{\\\\\\\"protocolVersion\\\\\\\":\\\\\\\"ECv1\\\\\\\",\\\\\\\"signature\\\\\\\":\\\\\\\"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\\\\\\\\u003d\\\\\\\\u003d\\\\\\\",\\\\\\\"signedMessage\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"tag\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\\\\\\\\\\\\\\\u003d\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"ephemeralPublicKey\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\\\\\\\\\\\\\\\u003d\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"encryptedMessage\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"mKOoXwi8OavZ\\\\\\\\\\\\\\\"}\\\\\\\"}\\\"\\n  }\\n}\"\n\nresponse = http.request(request)\nputs response.read_body\n"},{"lang":"csharp","title":"C#","source":"using System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n\npublic class Program\n{\n  public static async Task Main()\n  {\n    System.Net.Http.HttpClient client = new()\n    {\n      DefaultRequestHeaders =\n      {\n        {\"Accept\", \"application/vnd.worldpay.verifications.customers-v1.hal+json\"},\n      }\n    };\n\n    using HttpResponseMessage request = await client.PostAsync(\"https://try.access.worldpay-bsh.securedataplatform.co.uk/verifications/customers/3ds/deviceDataInitialize\", postData);\n    string response = await request.Content.ReadAsStringAsync();\n\n    Console.WriteLine(response);\n  }\n}"}]},"children":[]}]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Parameter"},"children":["Parameter"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Mandatory"},"children":["Mandatory"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactionReference"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["✅"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"b","attributes":{},"children":["unique"]}," reference for device data JWT request. for example, e-commerce order code."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["merchant.entity"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["✅"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Used to route the request in Access Worldpay, created as part of on-boarding."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentInstrument.type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["❌"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An identifier for the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentInstrument"]}," being used.",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}," : ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["card/front"]}," ",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#device-data-initialization-example-request"},"children":["JWT + BIN (card)"]}," above"]}]},{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}," : ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["card/tokenized"]}," ",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[" See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#device-data-initialization-example-request"},"children":["JWT + BIN (token)"]}," above"]}]},{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["card/wallet+googlepay"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#device-data-initialization-example-request"},"children":["JWT + BIN (Google Pay token)"]}]}]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"device-data-initialization-response","__idx":3},"children":["Device data initialization response"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To understand what these outcomes mean and how to reproduce them for testing purposes see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/3ds/v1/testing"},"children":["3DS testing"]}]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"JWT + BIN","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/ddc-jwt-response-initialized.json","language":"json","header":{"controls":{"copy":{}}},"lang":"json","source":"{\n    \"outcome\": \"initialized\",\n    \"transactionReference\": \"unique-transactionReference\",\n    \"deviceDataCollection\": {\n        \"jwt\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJPcmdVbml0SWQiOiJPcmdVbml0IiwiaXNzIjoiYXBpSWQiLCJleHAiOjE1NjI5MjMzNDYsImlhdCI6MTU2MjkyMzQwNiwianRpIjoiYTAzMWVhOGEtN2E0Zi00YTQwLWI1NjMtOTUzMzYzMzVhZGNmIn0.0IK74OIXBxFsxqeOURJz1TFnz14ZTbFJTdTWo9cHUJQ\",\n        \"url\": \"https://ddcUrl.example.com\",\n        \"bin\": \"555555\"\n    },\n    \"_links\": {\n        \"3ds:authenticate\": {\n            \"href\": \"https://try.access.worldpay-bsh.securedataplatform.co.uk/verifications/customers/3ds/authentication\"\n        },\n        \"curies\": [{\n            \"href\": \"https://try.access.worldpay-bsh.securedataplatform.co.uk/rels/verifications/customers/3ds/{rel}\",\n            \"templated\": true,\n            \"name\": \"3ds\"\n        }]\n    }\n}"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Google Pay token already authenticated","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/authentication-response-already-authenticated.json","language":"json","header":{"controls":{"copy":{}}},"lang":"json","source":"{\n  \"outcome\": \"alreadyAuthenticated\",\n  \"transactionReference\": \"Memory265-13/08/1876\"\n}"},"children":[]}]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Parameter"},"children":["Parameter"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deviceDataCollection.jwt"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A digitally signed token that contains additional details required for DDC."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deviceDataCollection.url"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}," action on the DDC form. Used to redirect to the issuers DDC page."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deviceDataCollection.bin"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["First 6 digits of the card number (Bank Identification Number) to be used as part of DDC. Returned if a token resource or card number is included in the request."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"device-data-collection-ddc-form","__idx":4},"children":["Device Data Collection (DDC) form"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once you have the JWT and BIN you can create and submit the DDC form."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"<iframe height=\"1\" width=\"1\" style=\"display: none;\">\n\n    <!-- Set the action to the value in the 'deviceDataCollection.url' from the device data initialization response --->\n    <form id=\"collectionForm\" name=\"devicedata\" method=\"POST\" action=\"https://ddcUrl.example.com\">\n\n      <input type=\"hidden\" name=\"Bin\" value=\"555555\" />\n      <!-- Use value from 'deviceDataCollection.bin' from the device data initialization response or add the card number -->\n\n      <!-- Set to the value of 'deviceDataCollection.jwt' from the device data initialization response  --->\n      <input type=\"hidden\" name=\"JWT\" value=\"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJPcmdVbml0SWQiOiJPcmdVbml0IiwiaXNzIjoiYXBpSWQiLCJleHAiOjE1NjI5MjMzNDYsImlhdCI6MTU2MjkyMzQwNiwianRpIjoiYTAzMWVhOGEtN2E0Zi00YTQwLWI1NjMtOTUzMzYzMzVhZGNmIn0.0IK74OIXBxFsxqeOURJz1TFnz14ZTbFJTdTWo9cHUJQ\" />\n\n    </form>\n</iframe>\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once the DDC form is submitted and is successfully sent to the card issuer, you are notified via a ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage"},"children":["postMessage"]}," event. This value is provided for both 3DS1 and 3DS2 authentications so you always receive a value."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For security, verify the sender's identity using the postMessage ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["origin"]}," property as detailed ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage"},"children":["here"]},"."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Environment"},"children":["Environment"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Origin"},"children":["Origin"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Try"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["https://secure-test.worldpay-bsh.securedataplatform.co.uk/"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Production"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["https://centinelapi.cardinalcommerce.com"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The message itself contains a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SessionId"]}," you should provide in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/3ds/v1/authentication"},"children":["authentication request"]}," under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deviceData.collectionReference"]},"."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"{\n  \"MessageType\": \"profile.completed\",\n  \"SessionId\": \"0_3XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX6b5\",\n  \"Status\": true\n}\n"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Note"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SessionId"]}," value is not provided in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/3ds/v1/authentication"},"children":["authentication request"]}," the authentication falls back to 3DS1"]}]},{"$$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/3ds/v1/authentication"},"children":["Authentication"]}]}]},"headings":[{"value":"Device data","id":"device-data","depth":1},{"value":"Device data initialization","id":"device-data-initialization","depth":2},{"value":"Device data initialization example request","id":"device-data-initialization-example-request","depth":2},{"value":"Device data initialization response","id":"device-data-initialization-response","depth":3},{"value":"Device Data Collection (DDC) form","id":"device-data-collection-ddc-form","depth":3}],"frontmatter":{"seo":{"title":"Device data"}},"lastModified":"2026-06-09T12:02:16.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/3ds/v1/device-data","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}