Skip to main content

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

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 session ID is sent to the provider as the client reference, so you can match the provider's records to the session.


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
providerstringNoeKYC provider. Currently only NCINO is supported. Accepted values: NCINO.
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 any of the mandatory fields listed below are absent or incomplete, because the screening provider needs all of them to run the check.

Data blockRequiredDescription
BasicIdentityYesPersonal details of the person to verify. Mandatory: givenName, familyName, birthDate (full date — year, month and day all required; partial dates are rejected). No optional fields.
ExtendedIdentityYesAddress of the person to verify. Mandatory: residentPostalCode; at least one of residentHouseNumber or residentHouseName. Optional: residentStreet, 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 the screening provider 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 status "rejected", matchTier null, and an empty sources array.
inconclusivePartial match (2+1 or 1+1) — some elements corroborated but not sufficient for a full pass.

Output data blocks​

RouteData blocks produced
verifiedVerification
not_verifiedVerification
inconclusiveVerification

Example payloads​

Verification — verified
{
"status": "verified",
"terminationReason": null,
"methods": [
{
"type": "eKYCUK",
"matchTier": "2+2",
"sources": [
{
"name": "Electoral Roll",
"matchedElements": [
"givenName",
"familyName",
"residentAddress"
]
},
{
"name": "Credit Lenders",
"matchedElements": [
"givenName",
"familyName",
"birthDate",
"residentPostalCode"
]
}
]
}
],
"provider": null,
"trustFramework": null,
"assuranceLevel": null,
"verifiedAt": "2026-07-15T09:45:00.000Z",
"verificationProcessId": "f4a8c1b2-3e7d-4f2a-9b5c-1d2e3f4a5b6c"
}
Verification — inconclusive
{
"status": "inconclusive",
"terminationReason": null,
"methods": [
{
"type": "eKYCUK",
"matchTier": "1+1",
"sources": [
{
"name": "Credit Lenders",
"matchedElements": [
"givenName",
"familyName",
"residentAddress"
]
}
]
}
],
"provider": null,
"trustFramework": null,
"assuranceLevel": null,
"verifiedAt": "2026-07-15T09:46:00.000Z",
"verificationProcessId": "a1b2c3d4-5678-4abc-9def-abcdef012345"
}
Verification — not_verified
{
"status": "rejected",
"terminationReason": null,
"methods": [
{
"type": "eKYCUK",
"matchTier": null,
"sources": []
}
],
"provider": null,
"trustFramework": null,
"assuranceLevel": null,
"verifiedAt": "2026-07-15T09:47:00.000Z",
"verificationProcessId": "c3d4e5f6-7890-4bcd-ef01-234567890123"
}