To use the document verification feature on the Instnt platform, your customer onboarding workflows must require it, and the Document Verification feature in the Instnt Dashboard Business Rules Configuration section must be enabled (which it is by default) for your customer sign-up workflow.
You can upload and verify various government-issued identification documents, such as driver's licenses and passports. If you are using our API, document uploading is a multi-step process, while using the SDK requires following the SDK documentation to integrate document verification into your sign-up form. For further information on how to use our sandbox environment, please refer to the Quick Start Guide.
Prerequisites
- Document verification is available on mobile-responsive web apps, iOS, and Android apps.
- iOS and Android mobile devices using Chrome or Safari browsers are supported.
- Desktop devices, such as laptops and PCs, are not supported due to their low-quality embedded cameras and lack of gyroscopes for orientation detection. While this feature will still function on these devices running Chrome or Safari, the user experience may be suboptimal.
- If you are using one of our web SDKs, please do not use HTML tags with IDs that contain the prefix 'aid.' For example, <div id='aidFooter'> should not be used in your web app, as this prefix is reserved for the toolkit's user.
Document Verification Workflow
Instnt offers web and mobile SDKs, as well as REST API endpoints, for document verification. The process is straightforward:
- Users can capture and upload their documents via the SDKs.
- Documents are verified for quality. If they do not meet the standards, users need to resubmit.
- Once you have the documents, you can use Instnt SDK functions to upload them to the Instnt cloud.
- Driver's license verifications can capture both front and back images, while passport verifications only require the front information page.
- Selfies can also be captured and uploaded for further verification.
- Once all documents are uploaded, you can use the SDK function to initiate the verification process.
It's important to note that this step only starts the document verification process and does not provide the document verification result. To obtain the document verification result, please follow the instructions described in the Instnt Submit Workflow. This will enable you to receive the document verification result, along with the overall transaction decision.
Instnt's SDKs generate events at each stage of the document verification process. To learn more, refer to the Instnt Core JavaScript Library. If you choose to integrate with our APIs instead of our SDKs, you will not have access to our document and selfie capture features. However, you can still upload document images to the Instnt Cloud by calling the relevant API endpoints using a custom interface.
SDK Functions and API endpoints
When using our SDKs, the first step is to initialize the camera for capturing each document image, including the front and back of a driver's license, as well as the selfie image. Our SDK offers a single wrapper function that handles both API invocations. In contrast, when integrating directly with our APIs, you need to invoke the API for each document separately.
Before you begin the first step, you should initiate the transaction. This step will provide you with a transaction ID that you will need to pass in subsequent SDK and API calls. For more details, please refer to the Instnt Accept Integration Process.
Here are the three steps you need to follow to complete the process:
- To obtain a pre-signed URL, call the endpoint or function of one of our SDKs or use our API:
- Use the pre-signed URL to upload the document in base64 encoded format. Please note that with our SDK, these two steps are bundled in one function. However, when using our API, you need to call the relevant API for each document separately:
- After you have uploaded all the required documents, initiate the Document Verification process by calling the following endpoint:
Document and Selfie Capture Settings
When using the Instnt SDK to capture a document or selfie for verification, you have the option to customize the capture settings according to your preferences. These settings determine the quality thresholds and requirements. The SDK offers two types of settings for each scanning method: DocumentSettings and SelfieSettings. These classes can be initialized like any other. The default values for both classes are set as recommended values and do not require modification unless specified otherwise. However, there are a few settings that we recommend changing, and these are highlighted in the table below.
DocumentSettings Properties
Property Name |
Type |
Description |
autoCaptureCheckNFrames |
number |
The number of consecutive frames that must contain a good image before the image is captured. Increasing this number will result in the end-user needing to hold their device steady for longer, which should result in less blurry images being captured by the SDK. We recommend setting this to 2 for the fronts of documents and 3 for the backs of documents. default: 0 |
enableLocationDetection |
boolean |
When true, the SDK will prompt the user to grant location access. This is used to capture the lat/lon of the device when the image was captured. When false, the SDK will not prompt the user to grant location access and the lat/lon of the device when the image was captured will not be known. We recommend setting this value to true. default: false |
captureMode |
string |
Accepted Values
This property is only used when useNativeCamera = false We recommend setting this value to “Auto.” default: “Manual” |
backGlareThreshold |
number |
Captured images of the backs of documents must contain less than this amount of glare. If they do not, they are not considered good images. We recommend using 2.5 for this value. default: 0 |
documentSide |
string |
Accepted Values
default: “Front” |
documentType |
string |
Accepted Values
default: “License” |
useNativeCamera |
boolean |
When true, indicates that the device’s camera application should be used to capture the image. Because this is a separate app on the device that we have no control over, no visual feedback is given to the user in real-time while capturing the image. We evaluate the image once it is captured and sent back to the browser. When false, indicates that the browser application that is currently running should be used to capture the image. This experience will give the user visual, real-time feedback about whether or not the image contains an ID that meets minimum requirements. default: false |
backCaptureAttempts |
number |
The number of times the end-user should be prompted to recapture any bad images of the back of a document. Once this threshold is met, the image is accepted regardless of whether or not it actually meets minimum requirements. default: 4 |
backFocusThreshold |
number |
Captured images of the backs of documents must contain at least this much focus. If they do not, they are not considered good images. default: 40 |
enableFaceDetection |
boolean |
When true, images of the front of documents must contain a face to be considered a good image. When false, images that do not contain a face will still be counted as good images. The property is only used when documentSide = “Front” default: true |
frontCaptureAttempts |
number |
The number of times the end-user should be prompted to recapture any bad images of the front of a document. Once this threshold is met, the image is accepted regardless of whether or not it actually meets minimum requirements. This property is only used when useNativeCamera = false default: 4 |
frontFocusThreshold |
number |
Captured images of the fronts of documents must contain at least this much focus. If they do not, they are not considered good images. default: 40 |
frontGlareThreshold |
number |
Captured images of the fronts of documents must contain less than this amount of glare. If they do not, they are not considered good images. default: 2.5 |
isBarcodeDetectedEnabled |
boolean |
When true, images of the back of documents must contain a valid PDF417 barcode in order to be considered good images. When false, images of the back of documents do not have to have a barcode present to be considered a good image. This property is only used if documentSide = “Back” default: true |
licenseFaceDetectionProportionMax |
number |
The maximum proportion size of the faces in relation to the rest of the camera feed. This ensures that the document is not too close to the camera. This property is only used if documentType = “License”. default: 6 |
licenseFaceDetectionProportionMin |
number |
The minimum proportion size of the faces in relation to the rest of the camera feed. This ensures that the document is not too far away from the camera. This property is only used if documentType = “License”. default: 2.1 |
manualPostClickTimeout |
number |
The number of seconds after a tap/click when the SDK will search the video stream for a good image. If it does not find a good image, it will just choose the last one. This property is only used when useNativeCamera = false This property is only used when captureMode = “Manual” default: 4 |
nativeBackFocusThreshold |
number |
Images of the backs of documents captured by the native camera app must contain at least this much focus. If they do not, they are not considered good images. default: 0 |
nativeBackGlareThreshold |
number |
Images of the backs of documents captured by the native camera app must contain less than this much glare. If they do not, they are not considered good images. default: 0 |
nativeFrontFocusThreshold |
number |
Images of the fronts of documents captured by the native camera app must contain at least this much focus. If they do not, they are not considered good images. default: 0 |
nativeFrontGlareThreshold |
number |
Images of the fronts of documents captured by the native camera app must contain less than this much glare. If they do not, they are not considered good images. default: 0 |
overlayColor |
string |
The hex code for the color to be used for the overlay border. Include the “#” for the hex code, or be a CSS-supported color name (e.g. “red”, “blue”, “yellow”, etc.) default: yellow |
overlayOnClickTextManual |
string |
This string is displayed on the screen when an end-user taps to capture an image. This property is only used when captureMode = “Manual” This property is only used when useNativeCamera = false default: “Hold Steady” |
overlayText |
string |
This string is displayed on the screen when the SDK is launched and captureMode = “Manual” or when captureMode = “Auto” and setManualTimeout lapses and the SDK goes into manual capture mode. default: "Align ID and Tap Screen<br/> to Capture" |
overlayTextAuto |
string |
This string is displayed on the screen when the SDK is launched and captureMode = “Auto”. default: "Align ID within box and Hold" |
passportFaceDetectionProportionMax |
number |
The maximum proportion size of the faces in relation to the rest of the camera feed. This ensures that the document is not too close to the camera. This property is only used if documentType = “Passport”. default: 6 |
passportFaceDetectionProportionMin |
number |
The minimum proportion size of the faces in relation to the rest of the camera feed. This ensures that the document is not too far away from the camera. This property is only used if documentType = “Passport”. default: 2.1 |
setManualTimeout |
number |
The number of seconds after which the SDK will switch captureMode from “Auto” to “Manual” and prompt the user to tap to capture an image. This property is only used when captureMode = “Auto.” default: 15 |
showCaptureModeText |
boolean |
When true, the captureModeText string is shown at the top right of the capture overlay. When false, this string is not shown. default: false |
captureModeText |
string |
This string is shown at the top right of the capture overlay if showCaptureModeText = true. Use this property to designate which mode the capture experience was started in. default: null |
SelfieSettings Properties
Parameter Name |
Type |
Description |
autoCaptureCheckNFrames |
number |
The number of consecutive frames that must contain a good image before the image is captured. Increasing this number will result in the end-user needing to hold their device steady for longer, which should result in less blurry images being captured by the SDK. Note: We recommend setting this to 2 for selfies. default: 0 |
captureMode |
string |
Accepted Values
Note: We recommend setting this value to “Auto.” default: “Manual” |
enableFarSelfie |
boolean |
When true, the browser zooms in on the video stream, prompting the user to move the phone further away from their face. This does not change the resolution of the captured image, it only forces the user to move their device further from their face. This is called “a far selfie” or “a liveness selfie”. When false, no zoom is applied to the video stream. This property is only used when useNativeCamera = false Note: We recommend setting this value to true. default: false |
enableLocationDetection |
boolean |
When true, the SDK will prompt the user to grant location access. This is used to capture the lat/lon of the device when the image was captured. When false, the SDK will not prompt the user to grant location access and the lat/lon of the device when the image was captured will not be known. Note: We recommend setting this value to true. default: false |
useNativeCamera |
boolean |
When true, indicates that the device’s camera application should be used to capture the image. This is a separate app on the device that we have no control over, no visual feedback is given to the user in real-time while capturing the image. We evaluate the image once it is captured and sent back to the browser. When false, indicates that the browser application that is currently running should be used to capture the image. This experience will give the user visual, real-time feedback about whether or not the image contains a document that meets minimum requirements. default: false |
captureAttempts |
number |
The number of times the end-use should be prompted to recapture any bad images of their face. Once this threshold is met, the image is accepted regardless of whether or not it actually meets minimum requirements. default: 4 |
enableFaceDetection |
boolean |
When true, images of the user’s face must contain a face to be considered a good image. When false, images that do not contain a face will still be counted as good images. default: true |
farSelfieFaceDetectionPropo rtionMax |
number |
The maximum proportion size of a face in relation to the rest of the camera feed. This ensures that the user’s face is not too close to the camera. This property is only used if enableFarSelfie = true. default: 50 |
farSelfieFaceDetectionPropo rtionMin |
number |
The minimum proportion size of a face in relation to the rest of the camera feed. This ensures that the user’s face is not too close to the camera. This property is only used if enableFarSelfie = true. default: 30 |
goodImageFoundADA |
string |
When the SDK is used in a browser where ADA mode is enabled, this string will be read out to the end-user when a good image is detected by the SDK and it requires a tap to capture the image. This property is only used when useNativeCamera = false default: "Good Image Found" |
nearSelfieFaceDetectionProp ortionMax |
number |
The maximum proportion size of a face in relation to the rest of the camera feed. This ensures that the user’s face is not too close to the camera. default: 60 |
nearSelfieFaceDetectionProp ortionMin |
number |
The minimum proportion size of a face in relation to the rest of the camera feed. This ensures that the user’s face is not too close to the camera. default: 40 |
notGoodImageADA |
string |
When the SDK is used in a browser where ADA mode is enabled, this string will be read out to the end-user where a bad image has been captured by the SDK. This property is only used when useNativeCamera = false default: “Captured Image is not good” |
notificationADA |
string |
When the SDK is used in a browser where ADA mode is enabled, this string will be read out to the end-user when a good image has been captured by the SDK. This property is only used when useNativeCamera = false default: "Valid image selected" |
orientationErrorText |
string |
This string is shown on the overlay when an end-user is meant to be taking a selfie image but their device is in landscape mode. The SDK does not support taking selfie images in landscape mode. default: "Landscape orientation is not supported. Kindly rotate your device to Portrait orientation." |
overlayColor |
string |
The hex code for the color to be used for the overlay border. Include the “#” for the hex code, or be a CSS-supported color name (e.g. “red”, “blue”, “yellow”, etc.) default: yellow |
overlayText |
string |
This string is displayed on the screen when the SDK is launched and captureMode = “Manual” or when captureMode = “Auto” and setManualTimeout lapses and the SDK goes into manual capture mode. default: "Align Face and Hold" |
overlayTextAutoADA |
string |
When the SDK is used in a browser where ADA mode is enabled, this string will be read out to the end-user when the SDK is started. This property is only used when captureMode = “Auto” This property is only used when useNativeCamera = false default: "Align ID and hold till you hear notification" |
overlayTextAuto |
string |
This string is displayed on the screen when the SDK is launched and captureMode = “Auto”. default: "Align Face and Hold" |
overlayTextManualADA |
string |
When the SDK is used in a browser where ADA mode is enabled, this string will be read out to the end-user when the SDK is started. This property is only used when captureMode = “Manual” This property is only used when useNativeCamera = false default: "Align ID and click when you hear notification" |
setManualTimeout |
number |
The number of seconds after which the SDK will switch captureMode from “Auto” to “Manual” and prompt the user to tap to capture an image. This property is only used when captureMode = “Auto” default: 15 |
showCaptureModeText |
boolean |
When true, the captureModeText string is shown at the top right of the capture overlay. When false, this string is not shown. default: false |
captureModeText |
string |
This string is shown at the top right of the capture overlay if showCaptureModeText = true. Use this property to designate which mode the capture experience was started in. default: null |
useBackCamera |
boolean |
When true, the rear-facing camera is used to capture selfie images. When false, the front-facing camera is used to capture selfie images. |
cancelButtonText |
string |
This string is shown at the lower left of the capture overlay. When tapped by end-users, the SDK capture experience is aborted. default: “Cancel” |
photoLabelText |
string |
The string is shown on the capture overlay directly above the camera's white circle capture button, that users tap to capture selfie images. |
Access our SDK documentation for more information on how to integrate Instnt with your application using various programming languages and platforms, including Instnt JS SDK, Instnt Angular SDK, Instnt React SDK, Instnt iOS SDK, and Instnt Android SDK.
If you need to interact with Instnt's public API endpoints, you can refer to the Instnt API Docs, which provide a comprehensive reference guide. For more information on how to fully integrate Instnt with your application, please see the Instnt Accept Integration Process.