Verifying UK ID (eKYC) - API only (v1)
This version of this step type is in preview / alpha. The functionality and subsequently the documentation can still change.
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+2pass (two elements corroborated by two independent sources) routes toverified; - a partial match (
2+1or1+1) routes toinconclusive; 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+1match tiers determine routing - Address-aware: consumes UK address fields (
residentHouseName) fromExtendedIdentityalongside standard address fields - Headless: no end-user interaction required; the step executes entirely server-side
Configuration
| Option | Type | Required | Description |
|---|---|---|---|
provider | string | No | eKYC provider. Currently only NCINO is supported. Accepted values: NCINO. |
configuration_identifier | string | Yes | nCino 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 block | Required | Description |
|---|---|---|
BasicIdentity | Yes | Personal 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. |
ExtendedIdentity | Yes | Address of the person to verify. Mandatory: residentPostalCode; at least one of residentHouseNumber or residentHouseName. Optional: residentStreet, residentCity, residentState (county), mobilePhoneNumber. |
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
| Route | Description |
|---|---|
verified | Full 2+2 pass — two identity elements corroborated by at least two independent sources. |
not_verified | Below 1+1 threshold or no elements corroborated. The Verification data block is produced with status "rejected", matchTier null, and an empty sources array. |
inconclusive | Partial match (2+1 or 1+1) — some elements corroborated but not sufficient for a full pass. |
Output data blocks
| Route | Data blocks produced |
|---|---|
verified | Verification |
not_verified | Verification |
inconclusive | Verification |
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"
}