Skip to main content

Verifying UK ID (eKYC) - API only (v1)

EKYC_UK:v1 is in preview

EKYC_UK:v1 is in preview.

Electronic Know Your Customer check against UK credit bureau and electoral roll data, returning a tiered identity corroboration result

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 configuration

{
"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
info

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

Example payloads

Verification — verified
{
"dataBlockId": "0123fad5-dca8-48c7-9bf7-09ab1d064ea9",
"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": "8c8c6b76-6b33-47d7-a456-bc8c69b977e0",
"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": "cadd602b-68f6-43d4-8b23-5ee93eb2c91f",
"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"
}