Also known as Digital Identity and Attributes Trust Framework.
Available via API | Available via SDK | Needs configuration on Veriff’s side | Needs a separate integration | Needs a separate webhook |
|---|---|---|---|---|
❌ | ✅ | ✅ | ✅ | ❌ |
Within the United Kingdom Digital Identity and Attributes Trust Framework (UK DIATF), Veriff offers the following solutions:
Solution type | Description | Mandatory fields | Registry checks | Used for |
|---|---|---|---|---|
Used with Veriff’s end-user flow (cannot be customized) | No |
| Know Your Customer Right To Work Right To Rent | |
Used with Veriff’s end-user flow (cannot be customized) | Yes, |
| Know Your Customer Right To Work* Right To Rent* | |
Used with Veriff's end-user flow (cannot be customized) | No |
| Know Your Customer | |
* Driver’s License must be disabled for the integration | ||||
Prerequisites
You have a regular identity verification integration set up with Veriff
The check is configured for that integration by your Solutions Engineer
You have configured the decision webhook to get responses from Veriff (see the Webhooks section for info)
You are prepared to send the end-user to Veriff verification flow
Key terminology
Term | Description |
|---|---|
CIFAS | UK's leading fraud prevention service and database |
PEP | “Politically Exposed Person”, an individual in prominent public position |
Credit Header | Name and address information from credit reference agencies |
UK Electoral roll | Official register of citizens eligible to vote |
Right to Work (RTW) | Verifying the employees’ right to work in the UK to prevent illegal working practices |
Right to Rent (RTR) | Verifying the immigration status of prospective tenants before renting out a property |
Know Your Customer (KYC) | Verifying the end-user for compliance purposes |
Contact your solutions engineer for info and configuration.
Note about Right to Work and Right to Rent
As of October 1, 2026, UK Home Office requires that providers offering Right To Work and Right to Rent verification are registered as Digital Verification Service Providers. Therefore, all Veriff M1A and M1B decision webhooks sent for Right to Work and Right to Rent use-cases contain the following parameters:
dvspRegistered:stringConfirmation that Veriff is a registered Digital Verification Service Provider. AlwaysY.rtwCheckSupplementaryCodeCompliant:stringConfirmation that the check was conducted per the Home Office right to work supplementary code. AlwaysY. Not sent for Right to Rent use-cases.rtrCheckSupplementaryCodeCompliant:stringConfirmation that the check was conducted per the Home Office right to rent supplementary code. AlwaysY. Not sent for Right to Work use-cases.trustFrameworkVersion:stringVersion of the UK Digital Identity and Attributes Trust Framework Veriff is certified against, as named on the DVS register. Always0.4 gamma.evidenceCheckedBy:stringName of the DVSP as it appears on the DVS register. AlwaysVeriff OÜ.dvspRegisterEntry:stringLink to Veriff's entry on the GOV.UK Digital Verification Services register.
These are not sent for Know Your Customer or for L1B profile sessions, or for integrations without registry checks.
UK DIATF Certified Identity Verification (M1A)
A medium-confidence solution that must be completed using Veriff’s end-user flow to capture the document and selfie.
Used for | Allowed documents | Send | Is end-user flow customizable? | Checks done |
|---|---|---|---|---|
KYC RTR RTW |
| Optional | No | CIFAS |
Flow overview
Step 1: create a session using the POST /sessions endpoint
See the POST /sessions section for a detailed overview of how to create a session
Passing the
verification.address.fullAddressparameter is optional
Passing the
idNumber,firstName,lastNameanddateOfBirthare optional
Veriff strongly recommends creating and using vendorData or endUserId for improved fraud detection
Step 2: start a session using the POST /sessions endpoint
Open the response payload of the POST /sessions request you just made
Use the URL in the
verification.urlparameter in the payloadA web flow will start, which will guide the end-user through the process
Step 3: wait for session decision and decision webhook response
As soon as the session is verified, the decision webhook will send the response with session status. It will be one of 9000-code statuses
This response will include the identity verification result and session status.
The fact that UK DIATF CIFAS check was performed is indicated in
verification.additionalVerifiedData.cifasResultobjectIn case the session failed, including due to the CIFAS check, the webhook contains relevant info about the reason. See the following parameters for more info:
verification.additionalVerifiedData.cifasResultverification.code,verification.reasonandverification.reasonCode
To tell a potential match apart from a registry error, check the cifasResult.message string.
Find decision and/or session related info
Webhook response
M1A Webhook response = decision webhook response for an IDV session + CIFAS-specific property in the verification.additionalVerifiedData.cifasResult object:
In a approved session, the payload contains an empty
cifasResult.dataobject.In a failed session, the payload contains
cifasResult.messagestring, notifying that a potential match was discovered or that the check could not be completed due to a registry issue.
For the session to get approved, the CIFAS check must complete successfully, i.e. the registry was queried and no match was found in the CIFAS database.
Approved session
Sample request
The example below uses placeholder data to show all mandatory parameters and the UK DIATF-related part of the webhook for Right to Work use-case.
Depending on your integration’s configuration, your production payload may contain additional parameters; for info on fields from other solutions, see the decision webhook documentation.
{
"status": "success",
"verification": {
"id": "12df6045-3846-3e45-946a-14fa6136d78b",
"attemptId": "00bca969-b53a-4fad-b065-874d41a7b2b8",
"code": 9001,
"status": "approved",
"reason": null,
"reasonCode": null,
"vendorData": "12345678",
"endUserId": "a1b2c35d-e8f7-6d5e-3cd2-a1b2c35db3d4",
"acceptanceTime": "2024-01-15T09:30:00.000Z",
"submissionTime": "2024-01-15T10:16:15.736755Z",
"decisionTime": "2024-01-15T10:20:00.000Z",
"person": {
"firstName": "JOHN",
"lastName": "SMITH",
"dateOfBirth": "1990-01-15",
"gender": null,
"nationality": null,
"idNumber": "12345678901",
"yearOfBirth": null,
"placeOfBirth": null,
"addresses": null
},
"document": {
"number": null,
"type": null,
"country": null,
"state": null
},
"comments": [],
"additionalVerifiedData": {
"cifasResult": {
"data": {}
},
"UKTFCheckResult": {
"dvspRegistered": "Y",
"rtwCheckSupplementaryCodeCompliant": "Y",
"trustFrameworkVersion": "0.4 gamma",
"evidenceCheckedBy": "Veriff OÜ",
"dvspRegisterEntry": "https://www.access-dvs-register.service.gov.uk/register/service-details?serviceId=265"
}
}
}
}Request properties explained
status:string* Status of the responseverification:object* Verification request decision objectid:string* UUID v4 which identifies the verification sessionattemptId:string* UUID v4 of the attempt which received a status (as shown inverification.statusfield)code:integer* Verification session decision code, one of9001,9102,9103,9104. For more info, see the verification session decision codesstatus:string* Verification status, one ofapproved,declined,resubmission_requested,expired,abandonedreason:string | null* Reason why the verification failedreasonCode:integer | null* Reason code of the failed verification. For more info, see the possible codes for a failed verificationvendorData:string | null* The unique identifier that you created for your end-user.nullif not specifiedendUserId:string | null* TheUUIDthat you created for your end-user.nullif not specifiedacceptanceTime:string* Timestamp of the session generation, represented asUTC YYYY-MM-DDTHH:MM:SS.SSS+Timezone Offset(ISO 8601)submissionTime: string* Timestamp of when the session was submitted, represented asUTC YYYY-MM-DDTHH:MM:SS.SSSSSS+Timezone Offset(ISO 8601)decisionTime:string | null* Timestamp of the decision, represented asUTC YYYY-MM-DDTHH:MM:SS.SSS+Timezone Offset(ISO 8601)person:object* Data about the verified personfirstName:string | null* Person's first name as written on the documentlastName:string | null* Person's last name as written on the documentdateOfBirth:string* Person’s date of birth, represented asYYYY-MM-DDgender:string | null* Person’s gender, represented as M or F, ornullif not presentnationality:string | null* Person’s nationality, represented as ISO 3166alpha-2oralpha-3numberidNumber:string | null* National identification numberyearOfBirth:string | null* Person’s year of birth, represented asYYYYplaceOfBirth:string | null* Person’s place of birthaddresses:arrayArray with address related datafullAddress:string | nullAddress as single string
document:object* Verified documentnumber:string | null* Document number,[a-zA-Z0-9]characters onlytype:string | null* Document typecountry:string | null* Document issuing country, represented as ISO 3166alpha-2codestate:string | null* Document issuing state, represented as ISO 3166alpha-2oralpha-3code
comments:array(Deprecated) Always returns empty []additionalVerifiedData:object* Data which has been optionally verified for sessioncifasResult:object* CIFAS registry check resultdata:objectEmpty on a successful check. Omitted on a failed check.message:stringSent only when the check failed. Indicates either a potential match, or that the check could not be completed due to a registry issue (see Declined session due to CIFAS unavailability). Omitted on a successful check.
UKTFCheckResult:object* Container for UK DIATF checks resultsdvspRegistered:string* Confirmation that Veriff is a registered Digital Verification Service Provider. AlwaysY.rtwCheckSupplementaryCodeCompliant:string* Confirmation that the check was conducted per the Home Office right to work supplementary code. AlwaysY. Sent only for the Right To Work use-case.rtrCheckSupplementaryCodeCompliant:string* Confirmation that the check was conducted per the Home Office right to rent supplementary code. AlwaysY. Sent only for Right to Rent use-case.trustFrameworkVersion:string* Version of the UK Digital Identity and Attributes Trust Framework Veriff is certified against, as named on the DVS register. Always0.4 gamma.evidenceCheckedBy:string* Name of the DVSP as it appears on the DVS register. AlwaysVeriff OÜ.dvspRegisterEntry:string* Link to Veriff's entry on the GOV.UK Digital Verification Services register.
*Required parameter
Declined session due to failed CIFAS check
Scenario: there may be a possible match in the CIFAS database.
The webhook example below show only UK DIATF-related part of the webhook. See the example above for full payload.
{
"status": "success",
"verification": {
"additionalVerifiedData": {
"UKTFCheckResult": {
"CIFAS": "Detected a potential match",
"Electoral roll and Credit History UK": "Registry check did not result in a match",
"PEP": "Registry check was not executed",
"dvspRegistered": "Y",
"rtwCheckSupplementaryCodeCompliant": "Y",
"trustFrameworkVersion": "0.4 gamma",
"evidenceCheckedBy": "Veriff OÜ",
"dvspRegisterEntry": "https://www.access-dvs-register.service.gov.uk/register/service-details?serviceId=265"
}
}
}
}
Declined session due to UK Electoral Roll and Credit History check
Scenario: the end-user data may be incorrect or missing in the database.
The webhook example below contains only UK DIATF-related part of the webhook. See the example above for full payload.
{
"status": "success",
"verification": {
"additionalVerifiedData": {
"UKTFCheckResult": {
"CIFAS": "Registry validation was successful",
"Electoral roll and Credit History UK": "Registry check did not result in a match",
"PEP": "Registry check was not executed",
"dvspRegistered": "Y",
"rtwCheckSupplementaryCodeCompliant": "Y",
"trustFrameworkVersion": "0.4 gamma",
"evidenceCheckedBy": "Veriff OÜ",
"dvspRegisterEntry": "https://www.access-dvs-register.service.gov.uk/register/service-details?serviceId=265"
}
}
}
}
Declined session due to failed PEP check
Scenario: end-user detected as potential PEP.
The webhook example below contains only UK DIATF-related part of the webhook. See the example above for full payload.
{
"status": "success",
"verification": {
"additionalVerifiedData": {
"UKTFCheckResult": {
"CIFAS": "Registry validation was successful",
"Electoral roll and Credit History UK": "Registry validation was successful",
"PEP": "Detected a potential match",
"dvspRegistered": "Y",
"rtwCheckSupplementaryCodeCompliant": "Y",
"trustFrameworkVersion": "0.4 gamma",
"evidenceCheckedBy": "Veriff OÜ",
"dvspRegisterEntry": "https://www.access-dvs-register.service.gov.uk/register/service-details?serviceId=265"
}
}
}
}
Veriff Customer Portal
You can find the verification session related info in the Veriff Customer Portal, under the Webhooks tab.
→ See Review verification in Veriff Customer Portal about how to view the session info in the Veriff Customer portal
UKDIATF Certified Identity Verification (L1B)
A low-confidence solution, completed using Veriff’s end-user flow to capture the document and selfie.
Used for | Allowed documents | Send | Is end-user flow customizable? | Checks done |
|---|---|---|---|---|
KYC |
| Optional | No | CIFAS |
Flow overview
Step 1: create a session using the POST /sessions endpoint
See the POST /sessions section for a detailed overview of how to create a session
Passing the
verification.address.fullAddressparameter is optionalPassing the
idNumber,firstName,lastNameanddateOfBirthare optional
Veriff strongly recommends creating and using vendorData or endUserId for improved fraud detection
Step 2: start a session using the POST /sessions endpoint
Open the response payload of the POST /sessions request you just made
Use the URL in the
verification.urlparameter in the payloadA web flow will start, which will guide you through the process
Step 3: wait for session decision and decision webhook response
As soon as the session is verified, the decision webhook will send the response with session status. It will be one of 9000-code statuses
This response will include the identity verification result and session status, as well as all the UK DIATF CIFAS check result
The latter is visible in
verification.additionalVerifiedData.UKTFCheckResult.CIFASstring
In case the session is
declined, the webhook contains relevant info about the reasonThe reason for decline is visible in:
verification.code,verification.reasonandverification.reasonCodeparameters
If the session failed due to the CIFAS check, the explanation is visible in the
UKTFCheckResult.CIFASstring
Find decision and/or session related info
Webhook response
L1B Webhook response = decision webhook response for an IDV session + CIFAS-specific property in the verification.additionalVerifiedData.UKTFCheckResult.CIFAS string.
The CIFAS check must be successful, i.e. no match in the CIFAS database.
Approved session
Sample request
The example below uses placeholder data to show all mandatory parameters and the UK DIATF-related part of the webhook.
Depending on your integration’s configuration, your production payload may contain additional parameters; for info on fields from other solutions, see the decision webhook documentation.
{
"status": "success",
"verification": {
"id": "12df6045-3846-3e45-946a-14fa6136d78b",
"attemptId": "00bca969-b53a-4fad-b065-874d41a7b2b8",
"code": 9001,
"status": "approved",
"reason": null,
"reasonCode": null,
"vendorData": "12345678",
"endUserId": "a1b2c35d-e8f7-6d5e-3cd2-a1b2c35db3d4",
"acceptanceTime": "2024-01-15T09:30:00.000Z",
"submissionTime": "2024-01-15T10:16:15.736755Z",
"decisionTime": "2024-01-15T10:20:00.000Z",
"person": {
"firstName": "JOHN",
"lastName": "SMITH",
"dateOfBirth": "1990-01-15",
"gender": null,
"nationality": null,
"idNumber": "12345678901",
"yearOfBirth": null,
"placeOfBirth": null,
"addresses": null
},
"document": {
"number": null,
"type": null,
"country": null,
"state": null
},
"comments": [],
"additionalVerifiedData": {
"UKTFCheckResult": {
"CIFAS": "Registry validation was successful"
}
}
}
}Request properties explained
status:string* Status of the responseverification:object* Verification request decision objectid:string* UUID v4 which identifies the verification sessionattemptId:string* UUID v4 of the attempt which received a status (as shown inverification.statusfield)code:integer* Verification session decision code, one of9001,9102,9103,9104. For more info, see the verification session decision codesstatus:string* Verification status, one ofapproved,declined,resubmission_requested,expired,abandonedreason:string | null* Reason why the verification failedreasonCode:integer | null* Reason code of the failed verification. For more info, see the possible codes for a failed verificationvendorData:string | null* The unique identifier that you created for your end-user.nullif not specifiedendUserId:string | null* TheUUIDthat you created for your end-user.nullif not specifiedacceptanceTime:string* Timestamp of the session generation, represented asUTC YYYY-MM-DDTHH:MM:SS.SSS+Timezone Offset(ISO 8601)submissionTime: string* Timestamp of when the session was submitted, represented asUTC YYYY-MM-DDTHH:MM:SS.SSSSSS+Timezone Offset(ISO 8601)decisionTime:string | null* Timestamp of the decision, represented asUTC YYYY-MM-DDTHH:MM:SS.SSS+Timezone Offset(ISO 8601)person:object* Data about the verified personfirstName:string | null* Person's first name as written on the documentlastName:string | null* Person's last name as written on the documentdateOfBirth:string* Person’s date of birth, represented asYYYY-MM-DDgender:string | null* Person’s gender, represented as M or F, ornullif not presentnationality:string | null* Person’s nationality, represented as ISO 3166alpha-2oralpha-3numberidNumber:string | null* National identification numberyearOfBirth:string | null* Person’s year of birth, represented asYYYYplaceOfBirth:string | null* Person’s place of birthaddresses:arrayArray with address related datafullAddress:string | nullAddress as single string
document:object* Verified documentnumber:string | null* Document number,[a-zA-Z0-9]characters onlytype:string | null* Document typecountry:string | null* Document issuing country, represented as ISO 3166alpha-2codestate:string | null* Document issuing state, represented as ISO 3166alpha-2oralpha-3code
comments:array(Deprecated) Always returns empty []additionalVerifiedData:object* Data which has been optionally verified for sessionUKTFCheckResult:array* Array of UK DIATF checks resultsCIFAS:string* CIFAS registry check result
Declined session due to failed CIFAS check
Scenario: there may be a possible match in the CIFAS database.
The webhook example below show only UK DIATF-related part of the webhook. See the example above for full payload.
{
"status": "success",
"verification": {
"additionalVerifiedData": {
"UKTFCheckResult": {
"CIFAS": "CIFAS registry detected a potential match."
}
}
}
}
Veriff Customer Portal
You can find the verification session related info in the Veriff Customer Portal, under the Webhooks tab.
→ See Review verification in Veriff Customer Portal about how to view the session info in the Veriff Customer portal
Status and reason codes
For an approved session, see the verification.code and verification.status parameters.
If the session was declined or resubmission_requested, you can find additional information by checking the verification.status, verification.code, verification.reason and verification.reasonCode data objects.
For more info about the codes you are seeing, refer to:
Changelogs
Date | Description |
|---|---|
Oct 15, 2026 |
|
Oct 5, 2026 |
|
Sep 28, 2026 |
|
Sep 23, 2026 | Updated the M1A and L1B session start parameters |
Feb 20, 2026 |
|
Jun 12, 2025 | Added note about the UK DIATF certification being temporarily paused |