Identity Verification
What it Does
Sikoia's secure identity verification solution enables you to verify a person’s identity using a live selfie and government issued documents. This acts as a robust defense against fraudulent activities.
Through a unified API, Sikoia provides access to providers such as Veriff and Au10tix ensuring you receive verified information in a standardised API response format.
How it Works
- Create a Case & Add a Person: Create a case and add a person to the case.
- Initiate a Request: Create an identity verification request via Sikoia's request IDV endpoint. This generates a unique URL which you share with the person undergoing verification.
- User Input: The person clicks on the URL on their preferred device and platform and follows a series of prompts to capture images of their government-issued ID and record a simple selfie. After completion, Sikoia redirects them back to your platform.
- Automated Liveliness Check and Face Matching: AI-powered technology conducts liveliness checks, face matching, verifies document authenticity, ensures image integrity, and delivers a swift result.
- Review Decision: Sikoia promptly provides the result to you via the retrieve IDV result endpoint within seconds.
This white-labeled flow seamlessly integrates into any application.
See the image below for additional details.
Possible Results
The possible results of an identity verification request are as follows:
Result | Description |
---|---|
Approved | The identity verification has been successful. The document is authentic and matches the person. |
Declined | The identity verification has been declined. The document may not be authentic or may not match the person. Details on the reason are provided in the response message. |
Resubmission Requested | It was not possible to make a decision based on the images and videos provided. (For example, an image may have been blurry.) The user will need to complete the process again. |
Not Completed | The identity verification process has either not been started or was abandoned. |
In addition to the overall identity verification result shown in the table above we also try to surface as much meta data as possible to indicate why a verification request was approved or declined. The amount of information available depends on the underlying provider but using the truncated example below our API will return the following structure:
{
"request_id": "5b410d0b-bddc-4a14-9837-80520f4831f2",
"status": "Complete",
"data": {
"verification_status": "Declined",
"media": [],
"meta_data": {
"status_codes": [
{
"value": "0",
"type": "Simple.Example",
"description": "Request rejected by the server due to incorrect file size or type. Please resubmit the request with the correct file size or type (png, jpg, etc.)."
}
]
}
}
}
Important
If the provider does not support the extraction of additional meta data then the
meta_data
object will be null in our response.
Provider: Au10tix
We will surface meta data for the Au10tix provider for all result codes. You can use this to confirm information and / or warning level remarks for "Approved" submissions as well as find detailed error explanations for why something was "Declined". There are five main "result" status code types that may be present here and a number of remarks.
As a general rule a "result" represents an overall status value for a portion of the IDV check (such as whether a provided document is authentic), and a "remark" represents supplementary information that further qualifies the reason for a "result". For example, a document status may be 0 (success), with a document remark 400 informing that the IDV went through the manual approval "Double Check" process.
Currently supported type values:
- DocumentAuthenticity.Result
- CompletionStatus.Result
- DocumentStatusReport2.Result
- DocumentStatusReport2.Remark
- FaceComparisonReport.Result
- RiskManagementReport.EffectiveConclusion.Result
- RiskManagementReport.EffectiveConclusion.Processing.Remark
- RiskManagementReport.EffectiveConclusion.Risk.Remark
DocumentAuthenticity.Result
This value may be represented in either a text, or numeric form. Only one will be returned and they should be considered equivalent in your consuming application.
Value (Text) | Value (Numeric) | Description |
---|---|---|
NotApplicable | 0 | The result of the document authenticity check is: 'Not Applicable'. |
Authentic | 20 | The result of the document authenticity check is: 'Authentic'. |
Forged | 60 | The result of the document authenticity check is: 'Forged'. |
Indecisive | 80 | The result of the document authenticity check is: 'Indecisive'. |
NotCompleted | 100 | The result of the document authenticity check is: 'NotCompleted'. |
NotRelevant | 120 | The result of the document authenticity check is: 'NotRelevant'. |
NotRequested | 140 | The result of the document authenticity check is: 'NotRequested'. |
CompletionStatus.Result
This value may be represented in either a text, or numeric form. Only one will be returned and they should be considered equivalent in your consuming application.
Value (Text) | Value (Numeric) | Description |
---|---|---|
UnrecognizableDocument | 0 | Document images could not be recognized as a supported document type. |
ImageLowQuality | 20 | Document images are low quality because of blur or poor lighting etc. |
Ok | 40 | Document images have acceptable quality, are recognized as supported document types, and are successfully processed. This status alone does not mean that the document itself is OK. The document may still be forged, and or some data cannot be extracted. See other statuses for more information. |
PagesTreatedAsSeparateDocuments | 50 | Pages have been treated as separate documents. |
RequestRejected | 60 | The processing request was rejected, the document does not meet the minimum requirements for file size and format. |
DocumentStatusReport2.Result
This value will only ever be numeric.
Value | Description |
---|---|
0 | The request passed OK. |
20 | The request is conditional. |
40 | The request failed. Please resubmit the request. |
60 | The document is recognized, its data is extracted but no authentication tests were executed. |
70 | Request rejected by the server due to incorrect file size or type. Please resubmit the request with the correct file size or type (png, jpg, etc.). |
80 | Document not recognized. |
100 | Extremely low quality or NonID image. Please submit a higher quality image or an ID image. |
120 | The request was forwarded to DoubleCheck. |
DocumentStatusReport2.Remark
This value will only ever be numeric.
Value | Description |
---|---|
0 | The authentication tests passed. |
20 | At least one authentication test failed. |
40 | At least one authentication test was indecisive. |
50 | Authentication tests were done only on a single side. |
55 | The back side is classified due to barcode recognition. |
60 | Because of no authentication tests are applicable for the detected document type |
80 | Data extraction only by client request. |
100 | The document is expired. |
120 | Quality of the document image is low. |
130 | Some authenticity checks were not performed. |
140 | The pages of the multi-page document do not match. |
160 | The processing request was rejected. |
180 | The document was not recognized. |
200 | Multiple quality issues prevent data extraction and authentication. |
220 | Non ID document. |
230 | The request has been denied due to poor image quality. |
250 | The document is in block-list. |
260 | The document is in flagged list. |
280 | The second side is expected to this supported ID. |
300 | The second side is not supported on this ID. |
320 | The second side was ignored due to irrelevancy. |
340 | Barcode was expected for this document but could not be extracted due to quality issues. |
360 | Barcode was expected for this document but could not be decoded. |
380 | DoubleCheck is triggered due to a predefined customer rule. |
400 | Document was processed by DoubleCheck. |
420 | DoubleCheck detected two images on the same file. |
440 | DoubleCheck detected incomplete document. |
460 | DoubleCheck failed to recognize document or language. |
480 | DoubleCheck detected black and white image. |
500 | Missing page or pages mismatch. |
520 | DoubleCheck detected destroyed language or document. |
540 | Document recognized |
550 | Double check request failed. |
560 | Double check service is not available. |
580 | Double check service timeout exceeded. |
600 | Double check daily quota exceeded. |
620 | Face compare request is forwarded to DoubleCheck. |
640 | Face compare request processed by DoubleCheck. |
700 | The declared Country and ID Type do not match with the uploaded ID. |
720 | BOS results only - DoubleCheck SLA has been exceeded. |
740 | DoubleCheck detected the document is not allowed by customer. |
760 | The ID document is recognized as 'Digital'. No authentication tests were executed. |
780 | Personal information field(s) have been masked per request. |
800 | Front side missing. |
820 | No authenticity tests defined for the document. |
840 | Manual Inspection detected Document Replay Screen. |
860 | Manual Inspection detected Document Replay Paper. |
880 | Manual Inspection detected Document Replay Digital. |
144 | Enhanced checks were done by face comparison service. |
1580 | The digital signature is expired. |
1600 | The digital signature is validated. |
1620 | The digital signature is found to be from a trusted source. |
1640 | The digital signature validation is found to be bad or broken. |
1660 | The digital signature validation is found to be unsupported. |
1680 | The digital signature validation is found to be from untrusted vendor. |
1700 | The document was identified as a digital identity but was not validated by digital signature. |
1720 | The digital document data was extracted successfully by external provider. |
1740 | The digital document data extraction by external provider failed. |
1760 | The digital document forged |
FaceComparisonReport.Result
This value will only ever be numeric.
Value | Description |
---|---|
0 | Faces Match - Comparison result: passed. |
7 | Faces Do not Match - Comparison result: failed. |
14 | Completed. Comparison result: indecisive. |
20 | Some technical issue prevents performing face comparison, for example, unrecognizable document, bad photo, bad cropped photo etc. |
40 | Photo was not detected on the document image. |
41 | Face was not detected on the Selfie image. |
42 | Face was not detected on the document image. |
60 | Input file size is larger than allowed maximum size. |
80 | Input file size is smaller than allowed minimum size. |
100 | Internal error. |
120 | Request to perform face comparison was received, but the customer has no license for this operation. |
140 | Faces OverMatch - Checks that the photo image on the ID card is unalike the selfie. |
160 | Faces to face comparison request rejected. |
RiskManagementReport.EffectiveConclusion.Result
This value will only ever be numeric.
Value | Description |
---|---|
0 | The request passed OK. |
20 | The request is conditional. |
40 | The request failed. Please resubmit the request. |
60 | The document is recognized, its data is extracted but no authentication tests were executed. |
70 | Request rejected by the server due to incorrect file size or type. Please resubmit the request with the correct file size or type (png, jpg, etc.). |
80 | Document not recognized. |
100 | Extremely low quality or NonID image. Please submit a higher quality image or an ID image. |
120 | The request was forwarded to DoubleCheck. |
RiskManagementReport.EffectiveConclusion.Processing.Remark
This value will only ever be numeric.
Value | Description |
---|---|
0 | The authentication tests passed. |
20 | At least one authentication test failed. |
40 | At least one authentication test was indecisive. |
50 | Authentication tests were done only on a single side. |
60 | Because of no authentication tests are applicable for the detected document type, only document data was extracted. |
80 | Data extraction only by client request. |
100 | The document is expired. |
120 | Quality of the document image is low. |
130 | Some authenticity checks were not performed. |
140 | The pages of the multi-page document do not match. |
160 | The processing request was rejected. |
180 | The document was not recognized. |
200 | Multiple quality issues prevent data extraction and authentication. |
220 | Non ID document. |
230 | The request has been denied due to poor image quality. |
250 | The document is in block-list. |
260 | The document is in flagged list. |
280 | The second side is expected to this supported ID. |
300 | The second side is not supported on this ID. |
320 | The second side was ignored due to irrelevancy. |
340 | Barcode was expected for this document but could not be extracted due to quality issues. |
360 | Barcode was expected for this document but could not be decoded. |
380 | DoubleCheck is triggered due to a predefined customer rule. |
400 | Document was processed by DoubleCheck. |
420 | DoubleCheck detected two images on the same file. |
440 | DoubleCheck detected incomplete document. |
460 | DoubleCheck failed to recognize document or language. |
480 | DoubleCheck detected black and white image. |
500 | Primary result was altered due to the mandatory second side rule. |
520 | DoubleCheck detected destroyed language or document. |
540 | Document recognized, but data is not extracted and no authentication tests were executed. |
560 | Double check service is not available. |
580 | Double check service timeout exceeded. |
600 | Double check daily quota exceeded. |
620 | Face compare request is forwarded to DoubleCheck. |
640 | Face compare request processed by DoubleCheck. |
700 | The declared Country and ID Type do not match with the uploaded ID. |
720 | BOS results only - DoubleCheck SLA has been exceeded. |
740 | DoubleCheck detected the document is not allowed by customer. |
760 | The ID document is recognized as 'Digital'. No authentication tests were executed. |
780 | Personal information field(s) have been masked per request. |
RiskManagementReport.EffectiveConclusion.Risk.Remark
This value will only ever be numeric.
Value | Description |
---|---|
0 | The authentication tests passed. |
20 | At least one authentication test failed. |
40 | At least one authentication test was indecisive. |
50 | Authentication tests were done only on a single side. |
55 | The back side is classified due to barcode recognition. |
60 | Because of no authentication tests are applicable for the detected document type, only document data was extracted. |
80 | Data extraction only by client request. |
100 | The document is expired. |
120 | Quality of the document image is low. |
130 | Some authenticity checks were not performed. |
140 | The pages of the multi-page document do not match. |
160 | The processing request was rejected. |
180 | The document was not recognized. |
200 | Multiple quality issues prevent data extraction and authentication. |
220 | Non ID document. |
230 | The request has been denied due to poor image quality. |
250 | The document is in block-list. |
260 | The document is in flagged list. |
280 | The second side is expected to this supported ID. |
300 | The second side is not supported on this ID. |
320 | The second side was ignored due to irrelevancy. |
340 | Barcode was expected for this document but could not be extracted due to quality issues. |
360 | Barcode was expected for this document but could not be decoded. |
380 | DoubleCheck is triggered due to a predefined customer rule. |
400 | Document was processed by DoubleCheck. |
420 | DoubleCheck detected two images on the same file. |
440 | DoubleCheck detected incomplete document. |
460 | DoubleCheck failed to recognize document or language. |
480 | DoubleCheck detected black and white image. |
500 | Missing page or pages mismatch. |
520 | DoubleCheck detected destroyed language or document. |
540 | Document recognized, but data is not extracted and no authentication tests were executed. |
550 | Double check request failed. |
560 | Double check service is not available. |
580 | Double check service timeout exceeded. |
600 | Double check daily quota exceeded. |
620 | Face compare request is forwarded to DoubleCheck. |
640 | Face compare request processed by DoubleCheck. |
700 | The declared Country and ID Type do not match with the uploaded ID. |
720 | BOS results only - DoubleCheck SLA has been exceeded. |
740 | DoubleCheck detected the document is not allowed by customer. |
760 | The ID document is recognized as 'Digital'. No authentication tests were executed. |
780 | Personal information field(s) have been masked per request. |
800 | Front side missing. |
820 | No authenticity tests defined for the document. |
840 | Manual Inspection detected Document Replay Screen. |
860 | Manual Inspection detected Document Replay Paper. |
880 | Manual Inspection detected Document Replay Digital. |
1440 | Enhanced checks were done by face comparison service. |
1580 | The digital signature is expired. |
1600 | The digital signature is validated. |
1620 | The digital signature is found to be from a trusted source. |
1640 | The digital signature validation is found to be bad or broken. |
1660 | The digital signature validation is found to be unsupported. |
1680 | The digital signature validation is found to be from untrusted vendor. |
1700 | The document was identified as a digital identity but was not validated by digital signature. |
1720 | The digital document data was extracted successfully by external provider. |
1740 | The digital document data extraction by external provider failed. |
1760 | The digital document forged. |
Provider: Veriff
Additional meta data not currently supported.
Supported Countries
This solution is available for all countries.
Supported Documents
The user-provided ID documents must meet the following criteria:
- Document must be a government issued driver's license, passport, residence permit, or standard ID.
- Document must be an original – photos of government issued documents are not accepted.
- Document is valid, not scratched, stained, or torn.
- Applicant’s full name, date of birth, MRZ (Machine Readable Zone), and other essential information is present and readable.
Webhook Events
If you have configured any webhooks that reference one of the Identity Verification events you will receive one of:
- IdentityVerification.Completed - sent when a user completes the identity verification successfully or unsuccessfully. It will contain the verification result from the table above
- IdentityVerification.Expired - sent only when a verification process has been requested for a user but they never completed it before the link expired
Both events will contain links for retrieving the Requests List and full IDV Result.
Recipe & Endpoints
Check out this recipe for more information on how to use Sikoia's API for identity verification.
Start exploring Sikoia's identity verification endpoints here.
Updated 15 days ago