Document Verification

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

  1. Document verification is available on mobile-responsive web apps, iOS, and Android apps.
  2. iOS and Android mobile devices using Chrome or Safari browsers are supported.
  3. 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.
  4. 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:

  1. Users can capture and upload their documents via the SDKs.
  2. Documents are verified for quality. If they do not meet the standards, users need to resubmit.
  3. Once you have the documents, you can use Instnt SDK functions to upload them to the Instnt cloud.
  4. Driver's license verifications can capture both front and back images, while passport verifications only require the front information page.
  5. Selfies can also be captured and uploaded for further verification.
  6. 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:

  1. To obtain a pre-signed URL, call the endpoint or function of one of our SDKs or use our API:
  2. 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:
  3. 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

  • “Manual” - The user will be prompted to tap or click on the screen to initiate an image capture
  •  “Auto” - The SDK will automatically capture the first value image frame it detects on the screen

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

  •  “Front” - Indicates that the front of a document is being captured.
  • “Back” - Indicates that the back of a document is being captured.

default: “Front”

documentType

string

Accepted Values

  • “License” - Indicates that an ID1 document type is being captured(credit card shaped ID)
  • “Passport” - Indicates that an ID3 document type is being captured (passport book)

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

  • “Manual” - The user will be prompted to tap or click on the screen to initiate an image capture.
  • “Auto” - The SDK will automatically capture the first value image frame that it detects on the screen. This property is only used when useNativeCamera = false

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.