{"templateId":"markdown","versions":[{"version":"20240601","label":"2024-06-01 (Latest)","link":"/products/payments/enable-features/fraud-assessment/device-data/web","default":true,"active":true,"folderId":"15ab58d6"}],"sharedDataIds":{"sidebar":"sidebar-products/payments/sidebars.yaml","current-catalog-info":"current-catalog-info-/products/payments/openapi"},"props":{"metadata":{"markdoc":{"tagList":["partial"]},"custom_product":"Payments","type":"markdown"},"seo":{"title":"Web 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.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":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Last updated"]},": 16 July 2026 | ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/payments/changelog/"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Change log"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"web-device-data","__idx":0},"children":["Web device data"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When combined with order and transaction details, device data (IP address, Device Id, geolocation information, etc.) can be a strong indicator for fraud."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Utilizing device data with our FraudSight API is a two-step process. Step one is to collect the device data. Step two is to submit an assessment (",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/fraudsight/assessment"},"children":["FraudSight API"]},") or payment (",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/payments/"},"children":["Payments API"]},") that will use the device data for evaluation."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Described below is step one for Web (JS)."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"ravelin-sdk","__idx":1},"children":["Ravelin SDK"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ravelin JS library for web sites. For now, we recommend only adding the core library as per the instructions below."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can see additional details on the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://developer.ravelin.com/merchant/libraries-and-sdks/ravelinjs/integration/","target":"_blank"},"children":["Ravelin integration docs"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"public-keys","__idx":2},"children":["Public keys"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You must use these exact keys on the corresponding environment when initializing the SDK."]},{"$$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":"Public key"},"children":["Public key"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Try/Test"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"publishable_key_test_Vr7SqPVrpkvlGBPojzhsckmOriasTUBPQ1UdMw\n"},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Live"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"publishable_key_live_Vr7SqPeyQpg6qS5NeD7bCvA2P3f6gfFb5kAui4\n"},"children":[]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"steps","__idx":3},"children":["Steps"]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"JavaScript","disable":false,"icon":"brands js"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Get the latest ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["core.min.js"]}," library from the Ravelin ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.github.com/unravelin/ravelinjs/releases"},"children":["GitHub releases page"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["track"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["encrypt"]}," features are not currently used."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"html","header":{"controls":{"copy":{}}},"source":"<script src=\"ravelin-core.min.js\"></script>\n<script>var ravelin = new Ravelin({key: 'publishable_key_...'})</script>\n\n","lang":"html"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"npm","disable":false,"icon":"brands npm"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can install ravelinjs with npm using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["npm i ravelinjs@2"]}," and require or import Ravelin for instantiating:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"js","header":{"controls":{"copy":{}}},"source":"import Ravelin from 'ravelinjs/core';\n/* or */ const Ravelin = require('ravelinjs/core');\nvar ravelin = new Ravelin({key: 'publishable_key_...'});\n\n","lang":"js"},"children":[]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This will set the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ravelinDeviceId"]}," cookie on your domain, send a page-load event, and then allow you to call:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ravelin.core.id().then(function(id) { ... })"]}," to get the deviceId, e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rjs-25998f27-ed8d-4b71-a516-d3147f695f20"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Do not attempt to parse or validate the format of the ID as we may change it without warning in the future."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"example-deviceid-generation","__idx":4},"children":["Example deviceId generation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Here is the Ravelin JS script in action. Select an environment and click generate to receive a deviceId."]},{"$$mdtype":"Tag","name":"Embeddable","attributes":{"url":"/embeddable/fraudsight/ravelinjs/index.html","title":"Access FraudSight - Ravelin JS","height":"280"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"api-base-url","__idx":5},"children":["API base URL"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ravelin JS supports sending events to a user defined API base URL, useful for bypassing ad-blockers that rely on matching the ravelin.click domain."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Speak to your Worldpay Account Manager for help setting up a custom subdomain."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"var rav = new Ravelin({key: 'publishable_key_...', api: 'https://foo.store.com'})\n"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"linking-the-device-data-with-the-fraud-assessment","__idx":6},"children":["Linking the device data with the fraud assessment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When sending the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/payments/openapi/payment/payment#payment/payment/t=request&path=instruction&d=0/fraud"},"children":["payment request"]}," include the deviceId in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fraud.deviceData.collectionReference"]}," key:value."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"\"deviceData\": {\n  \"provider\": \"ravelin\",\n  \"collectionReference\": \"rjs-25998f27-ed8d-4b71-a516-example\"\n}\n","lang":"json"},"children":[]}]},"headings":[{"value":"Web device data","id":"web-device-data","depth":1},{"value":"Ravelin SDK","id":"ravelin-sdk","depth":2},{"value":"Public keys","id":"public-keys","depth":3},{"value":"Steps","id":"steps","depth":3},{"value":"Example deviceId generation","id":"example-deviceid-generation","depth":2},{"value":"API base URL","id":"api-base-url","depth":2},{"value":"Linking the device data with the fraud assessment","id":"linking-the-device-data-with-the-fraud-assessment","depth":2}],"frontmatter":{"seo":{"title":"Web device data"}},"lastModified":"2026-07-02T08:03:32.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/payments/enable-features/fraud-assessment/device-data/web","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}