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+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 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+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 any of the mandatory fields listed below are absent or incomplete, because the screening provider needs all of them to run 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 the screening provider 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"
}