CrossCheck

CrossCheck scores how well a user's information matches our proprietary data sources, verifying identity beyond an ID check.

❗️

Billing

The CrossCheck feature might have an additional cost, depending on your identity package. Please reach out to our support team before enabling it.

[email protected]

CrossCheck

CrossCheck verifies a user's identity by cross-referencing two or more of the following parameters against proprietary databases:

  • Full name
  • Physical address
  • Phone number
  • Email address
  • IP address

In addition to Full Name, either a phone number or an email address (or both) is required to return results. Submitting more parameters improves the accuracy of the results.

CrossCheck may carry an additional cost depending on your identity package. Contact the Vouched team before enabling it.

Submitting a CrossCheck Job

There are two ways to submit a CrossCheck job.

1. As an add-on to IDV

  • JS Plugin: add enableCrossCheck: true to the verification object.
  • Invite API: add "enableCrossCheck": true.
  • For any other integration method, contact the Vouched team to enable it on your account.

When submitted this way, parameters are populated as follows:

  • Full name and physical address are extracted automatically from the ID photo.
  • Phone number and email address are submitted as phone and email parameters in the JS Plugin or API request.
  • IP address is extracted automatically from the request.

2. As a standalone job

Submit a CrossCheck job directly using the CrossCheck API.

POST https://verify.vouched.id/api/identity/crosscheck

Request parameters

ParameterTypeDescription
firstNamestringFirst name. Required.
lastNamestringLast name. Required.
emailstringEmail address.
phonestringPhone number. Defaults to +1 (US and CA). Country code required for other countries.
addressobjectPhysical address. See below.
ipAddressstringIP address.
jobIdstringAssociates the CrossCheck with an existing job ID instead of generating a new one.

Address object

FieldTypeDescription
unitstringUnit number.
streetAddressstringStreet address.
citystringCity.
statestringTwo-character state code.
postalCodestringPostal code.
countrystringISO 3166-1 country code.

Example request

{
    "firstName": "John",
    "lastName": "Bao",
    "email": "[email protected]",
    "phone": "000-111-2222",
    "ipAddress": "73.19.102.110",
    "address": {
        "unit": "",
        "streetAddress": "123 Elmo Avenue",
        "city": "Seattle",
        "state": "WA",
        "postalCode": "98109",
        "country": "US"
    }
}

The Result

Results appear in the Vouched dashboard and in the webhook response. The full result is under result.crosscheck, and the identity score is under result.crosscheck.confidences.identity.

A standalone CrossCheck response returns the request ID, an echo of the submitted request, and the result.

FieldTypeDescription
confidencesobjectIdentity and activity scores.
addressobjectAddress match details. Null when no address was submitted or matched.
emailobjectEmail match details. Null when no email was submitted or matched.
phoneobjectPhone match details. Null when no phone was submitted or matched.
genderobjectName frequency by gender.
ipobjectValidity of the submitted IP address and its distance from the submitted address. Null when no IP result is available.
ipAddressobjectIP address inspection details. Returned for standalone CrossCheck requests only, and null when no IP address was submitted.
modelstringThe CrossCheck model used to score the identity: fraud or approval. Returned only when your account is configured with a CrossCheck model and its inference succeeded.
ageRangenullAlways null. The age range derived from the identity is returned on email.ageRange.

Confidences

FieldTypeDescription
identitynumberThe main result parameter, a value between 0 and 1 that indicates the overall matching confidence for the candidate. The score is based on the address, email, and phone details, cross-referenced against the data submitted by the user or extracted from their ID.
originalIdentitynumberThe rules-based identity score before it was replaced by your account's CrossCheck model. Returned only when a model overrode identity.
activitynumberOverall activity risk confidence, based on dynamic attributes.

Address

FieldTypeDescription
isMatchbooleanThe name on the address matches the user.
isValidbooleanThe address is a verified address.
errorsarrayErrors encountered on the address.
warningsarrayWarnings raised on the address.
namestringThe recorded name of the identity.
ageRangeobjectAge range recorded for the identity, as from and to.
isForwarderbooleanThe address is a freight forwarding address.
isCommercialbooleanThe address is associated with a business.
typestringAddress type: incomplete-address, po-box, multi-unit, single-unit, commercial-mail-drop, po-box-forward, or other.

Email

FieldTypeDescription
isMatchbooleanThe name associated with the email address matches the user.
isValidbooleanThe email address is valid.
errorsarrayErrors encountered on the email address.
warningsarrayWarnings raised on the email address.
namestringThe recorded name of the identity.
ageRangeobjectAge range recorded for the identity, as from and to.
isAutoGeneratedbooleanThe email address was generated automatically.
isDisposablebooleanThe email address is provided by a disposable email provider.
daysFirstSeenintegerThe number of days since the email address was first seen in the data network.

Phone

FieldTypeDescription
isMatchbooleanThe name associated with the phone number matches the user.
isValidbooleanThe phone number is valid.
errorsarrayErrors encountered on the phone number.
warningsarrayWarnings raised on the phone number.
namestringThe recorded name of the identity.
ageRangeobjectAge range recorded for the identity, as from and to.
carrierstringThe phone provider.
typestringPhone type: mobile, landline, fixed-voip, non-fixed-voip, premium-rate, tollfree, voicemail, or other.
isPrepaidbooleanThe phone number is on a prepaid plan.
isDisposablebooleanThe phone number is disposable.
isCommercialbooleanThe phone number is associated with a business.

Gender

FieldTypeDescription
mannumberFrequency of the first name in men, with a minimum found frequency of 0.0001. Null when the first name is unknown.
womannumberFrequency of the first name in women, with a minimum found frequency of 0.0001. Null when the first name is unknown.

IP

ip reports on the submitted IP address relative to the submitted address.

FieldTypeDescription
isValidbooleanThe IP address was resolved to a valid location.
distancenumberDistance between the IP address location and the submitted address. Null when it cannot be computed.

ipAddress returns the full inspection of the IP address and is available on standalone CrossCheck requests.

FieldTypeDescription
citystringOriginating city.
statestringOriginating state, province, or territory in ISO 3166-2 format.
countrystringOriginating country in ISO 3166-1 format.
postalCodestringPostal code.
locationobjectCoordinates of the IP address, as latitude and longitude.
ispstringName of the internet service provider.
organizationstringName of the organization associated with the IP address.
isAnonymousbooleanThe IP address is part of an anonymous network.
isAnonymousVpnbooleanThe IP address is part of an anonymous VPN network.
isAnonymousHostingbooleanThe IP address is part of an anonymous hosting network.
userTypestringA description of the internet access point, for example residential, business, cellular, hosting, traveler, or search_engine_spider.

Errors and warnings

Each entry in an errors or warnings array contains the following fields.

FieldTypeDescription
typestringType of error encountered.
warningsbooleanWhether the entry is a warning.
messagestringDetails on the error.
suggestionstringA suggested matching name.

JSON example

"crosscheck": {
    "gender": {
        "man": 3.271,
        "woman": 0.012
    },
    "address": {
        "errors": [],
        "warnings": [],
        "isMatch": true,
        "isValid": true,
        "name": null,
        "ageRange": null,
        "type": "single-unit",
        "isForwarder": false,
        "isCommercial": false
    },
    "email": {
        "errors": [
            {
                "type": "NameMatchError",
                "message": "Name match score is below the threshold (0.9)"
            }
        ],
        "warnings": [],
        "isMatch": false,
        "isValid": true,
        "name": null,
        "ageRange": null,
        "isAutoGenerated": false,
        "isDisposable": false,
        "daysFirstSeen": 992
    },
    "phone": {
        "errors": [],
        "warnings": [],
        "isMatch": true,
        "isValid": true,
        "name": null,
        "ageRange": null,
        "carrier": "AT&T",
        "type": "mobile",
        "isPrepaid": false,
        "isDisposable": false,
        "isCommercial": false
    },
    "ageRange": null,
    "ip": {
        "isValid": true,
        "distance": 12.4
    },
    "model": "fraud",
    "confidences": {
        "identity": 0.73,
        "originalIdentity": 0.68,
        "activity": null
    },
}

If the identity score falls below the threshold, result.warnings is set to true and the job is marked in orange in the dashboard.

If neither a phone number nor an email address is submitted, the following error is returned:

{
    "type": "InvalidRequestError",
    "message": "Phone number and/or email address is required"
}

Response codes

CodeMeaning
200The CrossCheck was submitted and a result was returned.
400InvalidRequestError. The request is invalid.
401The request could not be authenticated.
500UnknownSystemError. An unexpected system error occurred.

CrossCheck then IDV

This decisioning logic combines CrossCheck and IDV to minimize user friction while still confirming identity:

  1. Perform CrossCheck verification with the user's information.
  2. If CrossCheck's confidences.identity passes the required threshold, continue with the post-verification process.
  3. If CrossCheck fails, or other criteria such as gender do not match, move the user to IDV.

Did this page help you?