# Generate required data for 3DS Device Data Collection

Allow card issuers to perform Device Data Collection to fingerprint your customer's device.

Endpoint: POST /verifications/customers/3ds/deviceDataInitialize
Version: 1
Security: BasicAuth

## Header parameters:

  - `Content-Type` (string)
    Example: "application/vnd.worldpay.verifications.customers-v1.hal+json"

  - `Accept` (string)
    Example: "application/vnd.worldpay.verifications.customers-v1.hal+json"

## Request fields (application/vnd.worldpay.verifications.customers-v1.hal+json):

  - `transactionReference` (string, required)
    A unique reference for authentication. For example, e-commerce order code.

  - `merchant` (object, required)
    An object that contains information about the merchant and API level configuration.

  - `merchant.entity` (string, required)
    Used to route the request in Access Worldpay, created as part of on-boarding.

  - `paymentInstrument` (any) — one of (discriminator: type):
    - card/front:
      - `type` (string, required)
        An identifier for the paymentInstrument being used.
      - `cardHolderName` (string, required)
        The name on the customer's card.
      - `cardExpiryDate` (object, required)
        Object containing card expiry information
      - `cardExpiryDate.month` (integer, required)
        Card expiry month
      - `cardExpiryDate.year` (integer, required)
        Card expiry year
      - `cardNumber` (string, required)
        Clear card number (PAN)
      - `billingAddress` (object)
        An object containing the billing address information.
      - `billingAddress.city` (string, required)
        Billing address city
      - `billingAddress.address1` (string, required)
        Billing address line 1
      - `billingAddress.postalCode` (string, required)
        Billing address postal code
      - `billingAddress.countryCode` (string, required)
        Billing address country code
      - `billingAddress.state` (string)
        Billing address state. Should only be provided following the ISO-3611-2 two-character sub division (e.g.“CA” for California).
      - `billingAddress.address2` (string)
        Billing address line 2
      - `billingAddress.address3` (string)
        Billing address line 3
    - card/tokenized:
      - `type` (string, required)
        An identifier for the paymentInstrument being used.
      - `href` (string, required)
        An http address that contains your link to an Access Token
    - card/wallet+googlepay:
      - `type` (string, required)
        Enum: "card/wallet+googlepay"
      - `walletToken` (string, required)
        The encrypted wallet token returned by Google
        Example: "{\"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\\\"}\"}"
      - `billingAddress` (object)
        Contains the billing address information.
      - `billingAddress.address1` (string)
        First line of the address. Required if city is provided.
      - `billingAddress.address2` (string)
        Second line of the address.
      - `billingAddress.address3` (string)
        Third line of the address.
      - `billingAddress.city` (string)
        City. Required if address1 is provided.
      - `billingAddress.postalCode` (string, required)
        Post code. Required, but an empty value can be provided for specific countries (e.g., IE).
      - `billingAddress.state` (string)
        State/province in max 3 characters.
      - `billingAddress.countryCode` (string, required)
        Must be provided in [ISO 3166-1 Alpha-2 format](/products/reference/supported-countries-currencies#iso-country-codes).

## Response 200 fields (application/vnd.worldpay.verifications.customers-v1.hal+json):

  - `outcome` (string, required)
    Outcome of the device data initialization request
    Enum: "initialized", "alreadyAuthenticated"

  - `transactionReference` (string, required)
    A unique reference for authentication. For example, e-commerce order code.

  - `deviceDataCollection` (object)
    Object containing device data collection related information

  - `deviceDataCollection.jwt` (string, required)
    A digitally signed token that contains additional details required for DDC.

  - `deviceDataCollection.url` (string, required)
    A POST action on the DDC form. Used to redirect to the issuers DDC page.

  - `deviceDataCollection.bin` (string)
    First six digits of the card number (Bank Identification Number), used as part of DDC.

## Response 400 fields (application/vnd.worldpay.verifications.customers-v1.hal+json):

  - `path` (string)
    The request URI path

  - `status` (integer)
    The HTTP status returned from server

  - `message` (string, required)
    The error description message

  - `errorName` (string, required)
    The unique error name

  - `headerName` (string)
    The name of the header containing invalid value

  - `allowedMethods` (array)
    List of HTTP methods that are allowed

  - `validationErrors` (object)
    Object containing details of validation errors occurred

  - `validationErrors.errorName` (string, required)
    Unique name of the validation error

  - `validationErrors.jsonPath` (string, required)
    Location of the field in request body for which the error occurred

  - `validationErrors.message` (string, required)
    Error description message

## Response 502 fields (application/vnd.worldpay.verifications.customers-v1.hal+json):

  - `path` (string)
    The request URI path

  - `status` (integer)
    The HTTP status returned from server

  - `message` (string, required)
    The error description message

  - `errorName` (string, required)
    The unique error name

## Response 503 fields (application/vnd.worldpay.verifications.customers-v1.hal+json):

  - `path` (string)
    The request URI path

  - `status` (integer)
    The HTTP status returned from server

  - `message` (string, required)
    The error description message

  - `errorName` (string, required)
    The unique error name


