Skip to main content

eKYC UK

Preview

eKYC UK is in preview.

Electronic identity corroboration for UK individuals

The eKYC UK step verifies a person's identity by cross-referencing their data against UK credit bureau and electoral roll sources via a configured screening provider. It consumes a BasicIdentity and an ExtendedIdentity data block and returns a tiered corroboration result — verified, inconclusive, or not_verified — together with the contributing bureau sources.

The tier model is based on the number of sources that successfully corroborate the identity. A full 2+2 pass (two elements corroborated by two independent sources) routes to verified; a partial match (2+1 or 1+1) routes to inconclusive; and anything below that routes to not_verified.

The verificationProcessId in the Verification data block corresponds to the vendor-assigned transaction ID. The flow execution ID is used as the client reference for traceability in the vendor API.


Key features

  • UK-specific bureau network: queries Electoral Roll, Credit Lenders, and related UK data sources
  • Tiered corroboration: 2+2, 2+1, 1+1 match tiers determine routing
  • Address-aware: consumes UK address fields (residentHouseName) from ExtendedIdentity alongside standard address fields
  • Headless: no end-user interaction required; the step executes entirely server-side

Configuration

OptionTypeRequiredDescription
provider"NCINO"NoeKYC provider. Currently only NCINO is supported.
configuration_identifierStringYesnCino bundle identifier that selects the data sources to query (e.g. "W2-DATA-EKYC-UK-005"). Configured by the provider during onboarding.

Example

{
"provider": "NCINO",
"configuration_identifier": "W2-DATA-EKYC-UK-005"
}

Input data blocks

Both data blocks are required. Session creation is rejected if either is missing or if the mandatory fields listed below are absent or incomplete — the W2 bureau requires all of them to execute the check.

Data blockRequiredMandatory fieldsOptional fields
BasicIdentityYesgivenName, familyName, birthDate (full date — year, month, and day all required; partial dates are rejected)
ExtendedIdentityYesresidentPostalCode; at least one of residentHouseNumber or residentHouseNameresidentStreet, residentCity, residentState (county), mobilePhoneNumber
note

Session creation fails with error code MISSING_INPUT_DATA_BLOCKS (HTTP 412) if any mandatory field is missing or incomplete. The message field in the response lists the missing fields in dot notation (e.g. "Missing required input data: basicIdentity.givenName, extendedIdentity.residentPostalCode"). This prevents the step from executing with data that W2 would reject.


Routes

RouteDescription
verifiedFull 2+2 pass — two identity elements corroborated by at least two independent sources.
not_verifiedBelow 1+1 threshold or no elements corroborated. The Verification data block is produced with sources empty.
inconclusivePartial match (2+1 or 1+1) — some elements corroborated but not sufficient for a full pass.

Output data blocks

RouteData blocks producedNotes
verifiedVerificationmatchTier is "2+2"
inconclusiveVerificationmatchTier is "2+1" or "1+1"
not_verifiedVerificationmatchTier is null, sources array is empty

Step metadata

The following fields are written to the step's metadata after execution and are accessible via the Get Session Results endpoint.

FieldTypeDescription
serviceCallReferenceStringVendor-assigned transaction ID for this check. Matches verificationProcessId in the Verification data block.
testBooleanPresent and set to true when the step ran in test mode. The result was produced from pre-defined test data and does not reflect a live bureau query. Absent when the step ran against live data.
warning

If test is present on a step result in your production environment, test mode is active and no real bureau checks are being performed. Contact your Account Manager to have it disabled before going live.


Example payloads

Verification — verified

{
"dataBlockId": "01930000-0000-7000-8000-000000000002",
"type": "Verification",
"status": "verified",
"terminationReason": null,
"methods": [
{
"type": "eKYCUK",
"sources": [
{
"name": "Electoral Roll",
"matchedElements": ["givenName", "familyName", "residentAddress"]
},
{
"name": "Credit Lenders",
"matchedElements": ["givenName", "familyName", "birthDate", "residentPostalCode"]
}
],
"matchTier": "2+2"
}
],
"provider": null,
"trustFramework": null,
"assuranceLevel": null,
"verifiedAt": "2026-07-15T09:45:00.000Z",
"verificationProcessId": "f4a8c1b2-3e7d-4f2a-9b5c-1d2e3f4a5b6c"
}

Verification — inconclusive

{
"dataBlockId": "01930000-0000-7000-8000-000000000004",
"type": "Verification",
"status": "inconclusive",
"terminationReason": null,
"methods": [
{
"type": "eKYCUK",
"sources": [
{
"name": "Credit Lenders",
"matchedElements": ["givenName", "familyName", "residentAddress"]
}
],
"matchTier": "1+1"
}
],
"provider": null,
"trustFramework": null,
"assuranceLevel": null,
"verifiedAt": "2026-07-15T09:46:00.000Z",
"verificationProcessId": "a1b2c3d4-5678-4abc-9def-abcdef012345"
}

Verification — not_verified

{
"dataBlockId": "01930000-0000-7000-8000-000000000006",
"type": "Verification",
"status": "rejected",
"terminationReason": null,
"methods": [
{
"type": "eKYCUK",
"sources": [],
"matchTier": null
}
],
"provider": null,
"trustFramework": null,
"assuranceLevel": null,
"verifiedAt": "2026-07-15T09:47:00.000Z",
"verificationProcessId": "c3d4e5f6-7890-4bcd-ef01-234567890123"
}