Video identification
This guide describes the integration process of the video KYC method via IDnow as a stand-alone solution, including key concepts, the mandatory information you must collect from your customers, and the necessary endpoints and webhooks you must integrate into your solution.
note
If you want to use IDnow as the KYC method in another integration flow of any of Solaris products (e.g., there's an existing person
resource for the customer), you can jump to Step 2.
Introduction
Product overview
Video identification is the most common KYC method to identify and onboard your customers in an AML-compliant manner. Our external service provider IDnow carries out the identification process. The process involves identifying the customer in a remote video call with an IDnow identification agent.
During the identification session, IDnow verifies the customer's personal data and identity against the identification document they provided, such as passport or national ID card. The identification session can be conducted in German or English.
Additionally, you can combine video identification with a Qualified Electronic Signature (QES) to allow your customers to digitally sign contracts or agreements compliantly.
Eligibility
Video identification is suitable for any of Solaris' products, including high-risk banking products, such as a full bank account. It's available only for customers who reside in Germany and it can be completed either in a web browser or through IDnow's mobile app.
Additionally, video identification with IDnow is restricted to customers from countries with the supported documents list.
If your customer does not have an identification document from the supported list, refer to other available KYC methods here.
User journey
Identifying your customer with video identification with IDnow involves the following steps:
- The customer provides the minimum required data points and their consent to Solaris' Terms and Conditions and data processing terms in your sign-up flow.
- Your customer must go through the KYC flow via the IDnow SDK in your application. Additionally, share with the customer which documents they need to present during the identification session.
-
During the identification session, the customer provides the following:
- An identification document, such as passport or national ID card.
- A proof of address document only if their identification document does not include an address.
- A mobile number
- During the video session, the identification agent will verify the customer's data against their identification document and collect any missing information.
- The customer's mobile number will also be verified during the session via an SMS one-time password.
System prerequisites
Before starting the video identification process, you must implement the following requirements:
1. Technical setup:
Set up your environment and get your authentication keys. For step-by-step instructions, check the Technical setup guide.
2. Legal and compliance screens:
Build the necessary legal and compliance screens in your sign-up flow to collect your customers' consent to the necessary legal and compliance requirements. The Legal and compliance screens guide contains step-by-step instructions on how to create these screens and what they must contain.
Record the customer's consent on each screen as a UTC timestamp (e.g., 2019-01-01T00:00:00Z
). Afterward, you must pass each timestamp in its respective field to Solarisbank.
- Collect the customer's consent to Solarisbank's Terms and Conditions and store the timestamp in the
terms_conditions_signed_at
field. - Collect the customer's consent to data processing and store the timestamp in the
data_terms_signed_at
field.
note
The mentioned fields are part of the person resource in which all the customer data points are stored.
IDnow preconditions
Video identification methods can be manipulated by identity fraudsters who collect personal data from individuals under the pretense of things like app testing. Therefore, it's crucial that you build an integrated solution that does not separate the data collection and the video identification processes.
attention
It's vital that you refrain from sharing the IDnow's reference ID with the customer under any circumstances.
Additionally, you must ensure your integration fulfills the following preconditions:
SDK integration
We recommend only carrying out mobile-based onboarding flows. Therefore, you're required to integrate the IDnow SDKs into your solution, which ensures that the IDnow technical infrastructure is integrated into your application. Furthermore, with the SDK integration, the video identification process is only available for mobile-based onboarding flows, which are more secure and make it harder for fraudsters to intercept the "reference ID" link.
For instructions on how to integrate IDnow's SDKs, check the IDnow documentation:
Web-based video identification
If you want to enable your customers to go through the video identification via the web environment instead of the mobile app, we recommend using IDnow's iframe solution. For more information. see section 6.1.2 of the IDnow API documentation.
Consult your Partner Manager about your chosen solution to ensure a secure integration.
Webhooks
Solaris recommends subscribing to the following webhook events to better automate your processes. For detailed instructions on implementing Solaris webhooks, check the webhooks documentation.
Integration flow
The following sequence diagram gives an overview of the integration flow for the video identification solution:
Integration steps
Integrate video identification by completing the following steps:
User registration
- Collect the mandatory customer data and consent to the legal and regulatory requirements in your sign-up flow, and create a person resource for your customer by completing Step 1.
Customer identification
- Create an identification resource for the customer by using POST Create identification.
- Trigger the identification flow by using PATCH Request an identification.
- Trigger the KYC flow in your application via the IDnow SDK.
- Your customer goes through the identification flow with the IDnow agent.
You can find detailed descriptions of these steps and their related endpoints in the following sections.
Step 1: Collect customer data and create person resource
In this step, you must collect the mandatory data points from the customer in your sign-up flow, including all the timestamps of the customer's consent to the legal and compliance screens. Afterward, pass all the data points to Solaris by creating a person resource.
What is a person resource?
The person resource represents the customer's personal and financial data at Solaris. It contains all mandatory customer data, as well as links to other resources created for the customer (e.g., accounts, tax identifications).
API reference
Visit the following link to find all the endpoints related to the person resource, including related properties and examples.
Related webhook events
Important points about the person resource
- The mandatory data points for this endpoint depend on various factors, such as the product, customer type (e.g., retail customers, freelancers, legal representatives, or beneficial owners), and country.
- You must submit the information exactly as it appears in official documents.
-
Solaris validates the values entered for the fields
first_name
andlast_name
. Please ensure your solution applies the following sanitization rules to these fields:- It must not be longer than 50 characters.
- It must not start with a whitespace.
- It must not include any symbols or emojis.
- When testing this process on Sandbox, please ensure that you create as many
unique
person
resources as possible (i.e., unique values forfirst_name
,last_name
,birth_city
, andbirth_date
). If you create more than 1000 identicalperson
resources, then the API will return a400
error.
Note about branching
Solaris may restrict the residency countries that are allowed for customers
onboarding to a specific branch. If you attempt to create a customer with a
residency country that is not allowed for the given branch, the API will return
a 400
error and provide a list of allowed residency countries.
Example:
{
"errors": [
{
"id": "24b0e02a-341d-40bc-9e52-0d9f8cc8c6eb",
"status": 400,
"code": "invalid_model",
"title": "Invalid Model",
"detail": "country Residency Country is not allowed for this branch,allowed residency country values for branch \"null\" are [\"DE\", \"FR\"]",
"source": {
"field": "country",
"message": "Residency Country is not allowed for this branch,allowed residency country values for branch \"null\" are [\"DE\", \"FR\"]"
}
}
]
}
Please contact your Partner Manager for information about which residency countries are allowed for your branch(es).
Address validation
Your solution must implement address validation to ensure that your system rejects non-existent or wrong address entries before the customer goes through the identification flow. In addition, please note the following best practices:
- Select a reliable provider to ensure the accuracy and actuality of data.
- Address validation must happen in real-time when the customer enters their address during the onboarding flow.
- The system can make auto-complete suggestions to the customer when entering the address. Additionally, it must reject non-existent or wrong entries.
- If the address validation fails, the customer can enter a nearby address and proceed with the identification flow. However, the customer must submit a proof of address afterward to customer support, such as a rental contract, electricity bill, or certificate of residence in Germany (i.e., Meldebescheinigung).
POST Create person
This endpoint creates a person resource for your customer. You must collect the mandatory data points from your customer in the sign-up flow and pass them to Solaris in the request body of this endpoint.
salutation
first_name
(including all middle names as printed on the ID document)last_name
(including all name parts as printed on the ID document)birth_date
nationality
ISO 3166-1 alpha-2 codesaddress
(Street, Number, City, Post Code, Country, State)mobile_number
data_terms_signed_at
(UTC timestamp)terms_conditions_signed_at
(UTC timestamp)
attention
Please note that Solaris validates the values entered for the fields first_name
and last_name
. Please ensure your solution applies the following sanitization rules to these fields:
- It must not be longer than 50 characters.
- It must not start with a whitespace.
- It must not include any symbols or emojis.
Request URL
POST /v1/persons
{
"salutation": "MS",
"first_name": "Jane",
"last_name": "Doe",
"address": {
"line_1": "Amrumerstrasse",
"line_2": "14",
"postal_code": "13353",
"city": "Berlin",
"country": "DE"
},
"mobile_number": "+49301234567",
"birth_date": "1992-12-11",
"nationality": "DE",
"terms_conditions_signed_at": "2022-01-01T00:00:00.000Z",
"data_terms_signed_at": "2022-01-01T00:00:00.000Z"
}
Response example
The API returns a person object with a unique ID for the person (i.e., the person_id
). You will need this id
to append the person resource with additional information in the remaining steps of this guide.
200 Created
{
"id": "7cf09c3c5547b974a664201f24b454eecper",
"salutation": "MS",
"title": null,
"first_name": "Jane",
"last_name": "Doe",
"address": {
"line_1": "Amrumerstrasse",
"line_2": "14",
"postal_code": "13353",
"city": "Berlin",
"country": "DE",
"state": null
},
"contact_address": {
"line_1": null,
"line_2": null,
"postal_code": null,
"city": null,
"country": null,
"state": null
},
"email": null,
"mobile_number": "+49301234567",
"birth_name": null,
"birth_date": "1992-12-11",
"birth_city": null,
"birth_country": null,
"nationality": "DE",
"employment_status": null,
"job_title": null,
"tax_information": {
"tax_assessment": null,
"marital_status": "UNKNOWN"
},
"fatca_relevant": null,
"fatca_crs_confirmed_at": null,
"business_purpose": null,
"industry": null,
"industry_key": null,
"terms_conditions_signed_at": "2022-01-01T00:00:00.000Z",
"own_economic_interest_signed_at": null,
"aml_follow_up_date": "2029-01-22",
"aml_confirmed_on": "2022-07-22",
"flagged_by_compliance": false,
"expected_monthly_revenue_cents": null,
"vat_number": null,
"website_social_media": null,
"business_trading_name": null,
"nace_code": null,
"business_address_line_1": null,
"business_address_line_2": null,
"business_postal_code": null,
"business_city": null,
"business_country": null,
"business_state": null,
"screening_progress": "NOT_SCREENED",
"risk_classification_status": "NOT_SCORED",
"customer_vetting_status": "NOT_VETTED",
"annual_income_range": null,
"data_terms_signed_at": "2022-01-01T00:00:00.000Z",
"branch": null,
"birth_province": null,
"birth_post_code": null,
"socioprofessional_category": null,
"purpose_of_account_opening": null,
"main_income_source": null,
"work_country": null,
"work_province": null,
"self_declared_as_pep": null,
"international_operativity_expectation": [],
"registration_number": null,
"legitimation_valid_until": null
}
Click here to view the full API reference
PATCH Update person
This endpoint updates one or more properties on a person
resource. You can only update the following properties using this endpoint:
title
salutation
address
(line_1
,line_2
,postal_code
,city
,state
,country
)contact_address
(line_1
,line_2
,postal_code
,city
,state
,country
)employment_status
job_title
email
tax_information
(tax_assessment
,marital_status
)fatca_relevant
fatca_crs_confirmed_at
business_purpose
industry
industry_key
own_economic_interest_signed_at
aml_confirmed_on
(only with today or tomorrow's date)expected_monthly_revenue_cents
vat_number
website_social_media
business_trading_name
nace_code
business_address_line_1
business_address_line_2
business_postal_code
business_city
business_country
annual_income_range
data_terms_signed_at
branch
birth_province
birth_post_code
socioprofessional_category
purpose_of_account_opening
main_income_source
work_country
work_province
self_declared_as_pep
international_operativity_expectation
registration_number
attention
- Fields not mentioned in this list can only be updated via Customer Support.
-
Only for B2C customer: If a customer changes their
employment_status
toFREELANCER
orSELF_EMPLOYED
, please note that you must do one of the following options in the same request to avoid getting an error:- Collect the
nace_code
from the customer, or - Set the fields
industry
andindustry_key
tonull
.
- Collect the
- It's recommended to collect the
nace_code
from the customer for data quality.
Request URL
PATCH /v1/persons/{id}
Click here to view the full API reference
Step 2: Create the identification resource for the customer
In this step, you must create an identification resource for your customer to initiate the KYC process.
API reference
Visit the following link to find all the endpoints related to the different methods of customer identification (KYC), including related properties and examples.
note
The previous link includes all endpoints for different KYC methods. This section includes the relevant endpoints required for video identification with IDnow.
Related webhook events
POST Create identification
This endpoint creates an identification resource for the person specified in the request URL. You must add the following properties in the request body:
method
: The identification method, selectidnow
.language
: The customer's preferred language for the identification process. Possible values areEN
andDE
.proof_of_address_type
: The type of document submitted by the customer as a proof of address. This field is mandatory if the customer's identification document does not include their address.proof_of_address_issued_at
: The date when the proof of address document was issued. This field is mandatory if the customer's identification document does not include their address. It must NOT be older than 6 months.
attention
This endpoint does not send a request to the identification provider to start the identification process.
Request example
POST /v1/persons/{person_id}/identifications
{
"method": "idnow",
"language": "DE",
"proof_of_address_type": "GAS_BILL",
"proof_of_address_issued_at": "2022-03-03"
}
Response example
The API call returns an identification object with a unique id
, the identification_id
, as well as the identification status
, set initially to created
.
{
"id": "6dc54352d6793a892e0702850d07b831cidt",
"reference": null,
"url": null,
"status": "created",
"completed_at": null,
"method": "idnow",
"proof_of_address_type": "GAS_BILL",
"proof_of_address_issued_at": "2022-03-03",
"language": "DE",
"iban": null,
"terms_and_conditions_signed_at": null,
"authorization_expires_at": null,
"confirmation_expires_at": null
}
Click here to view the full API reference.
GET List supported documents for a person identification
Prior to redirecting your customer to complete the identification process, you can fetch the supported documents to share it with the customer beforehand.
This endpoint returns an array of document types that a customer may use to identify themselves along with a list of allowed issuing countries. The issuing_countries
are provided as ISO country codes (ISO-3166-1 alpha 2). If the customer does not provide a supported document type in the identification process, then their identification will eventually fail.
Request URL
GET /v1/persons/{person_id}/identifications/{id}/supported_documents
Click here to view the full API reference
PATCH Request person identification
This endpoint triggers the identification flow with IDnow for the specific customer. The status of the identification will change to pending
after calling this endpoint.
Request URL
PATCH /v1/persons/{person_id}/identifications/{id}/request
Response example
The API call returns the identification object with the status pending
. The status remains pending until the customer completes the identification. Additionally, the payload includes the url
(valid for 14 days), which the customer can use to identify via the web browser, and the reference
, which is the identification token (format: ABCDEFGH ), an internal IDnow identifier.
{
"id": "6dc54352d6793a892e0702850d07b831cidt",
"reference": "TST-KCCEY",
"url": "https://go.test.idnow.de/solarisbankvideoidentsandbox/identifications/6dc54352d6793a892e0702850d07b831cidt",
"status": "pending",
"completed_at": null,
"method": "idnow",
"proof_of_address_type": "GAS_BILL",
"proof_of_address_issued_at": "2022-03-03",
"language": "DE",
"iban": null,
"terms_and_conditions_signed_at": null,
"authorization_expires_at": null,
"confirmation_expires_at": null,
"estimated_waiting_time": 60
}
Click here to view the full API reference.
You must trigger the KYC flow in your application via the IDnow SDK and the customer must complete the identification with the IDnow agent. You can also share with the customer the supported documents that they must present during the session.
IDnow Video-identification process
- Before being put in touch with a video identification agent, your customer is redirected to an IDnow-branded landing page, where they are asked to give their consent to IDnow's Terms & Conditions and confirm that they have a valid ID document at hand. This ID document will be shown via webcam to the agent during the video identification.
- Additionally, your customer must also provide their valid mobile number during their identification. IDnow agent will verify this mobile number by sending an SMS OTP, which the customer will need to provide during the call. Solaris will re-use the verified mobile number of a successful IDnow video identification as the customer's verified mobile number.
- Once connected with an IDnow agent, your customer is greeted on behalf of Solaris ( « You are identifying for a service of Solaris » ) or on your behalf ( « You are identifying for a service of /Your Brand Name/, empowered by Solaris » ), depending on the setup you have agreed upon with Solaris.
- The call takes place either in English or in German. The agent goes on to verify the customer's mobile number and the customer's data, such as first_name and last_name. In addition, the agent populates specific additional attributes of the person resource during the call.
note
While most video identifications are immediately set to successful
, an identification status could be set to an intermediary status pending_successful
. In such cases, a second-line agent at IDnow reviews the outcome of the video identification. This process typically takes minutes but can take up to 24 hours before the identification status is updated to a final successful
status. However, you can already offer services to the customer until the review results.
GET Retrieve person identification
This endpoint returns a completed person identification (i.e., the person identification process was successful
). If you use the include_documents
filter, this method will also return the documents submitted by the customer during the identification process.
To download any of the documents submitted during the identification process, you can use the document unique id
and download the files using the Document resource endpoints.
Request URL
GET /v1/persons/{person_id}/identifications/{id}
Response example
{
"id": "6dc54352d6793a892e0702850d07b831cidt",
"reference": "TST-KCCEY",
"url": "https://go.test.idnow.de/solarisbankvideoidentsandbox/identifications/6dc54352d6793a892e0702850d07b831cidt",
"status": "successful",
"completed_at": "2022-07-14T18:18:28.000Z",
"method": "idnow",
"proof_of_address_type": "GAS_BILL",
"proof_of_address_issued_at": "2022-03-03",
"language": "DE",
"person_id": "7cf09c3c5547b974a664201f24b454eecper",
"address": {
"line_1": "Amrumerstrasse",
"line_2": "14",
"postal_code": "13353",
"city": "Berlin",
"country": "DE"
},
"documents": [
{
"id": "448b75fa1c57eecda41d91c66c22faa6cdoc",
"name": "file1.pdf",
"content_type": "application/json",
"document_type": "KYC_REPORT",
"size": 803580
},
{
"id": "94eb22a9311be9a1fbb698c448b0b337cdoc",
"name": "file2.jpg",
"content_type": "image/jpeg",
"document_type": "SIGNATURE",
"size": 25349
}
]
}
Click here to view the full API reference.
Other identification endpoints
- GET Index identifications for a person
- POST Upload documents for a person identification
- GET List the IDnow attempts of a person identification
- GET List IDnow legitimation data.
After the customer successfully complete the video identification process, you can download the documents submitted during the identification session using our document-related endpoints here.
Testing
Idnow offers different test scenarios to simulate different outcomes for the identification process. To trigger a test scenario, you can create a person
resource and set the first_name
or last_name
to one of the following prefixes and the name of the relevant test case.
Test scenarios
Prefix | Description |
---|---|
X-MANUALTEST |
Performs a test where you can use the web or app, but the agent is automated. |
X-AUTOTEST |
Both the user and the agent are automated. No user interaction required |
The available test scenarios are as follows:
Test Case | Description |
---|---|
HAPPYPATH |
Performs a happy path test. The identification is finished successfully and no changes are made. |
CHANGEALL |
Performs a successful identification, but changes all fields to new values. In addition, all allowed UTF-8 characters supported by IDnow are returned. |
CHANGEALLREVIEW |
Performs a successful identification, but changes all fields during review (and not during the identification like CHANGEALL ). |
ABORTIDENT |
The agent aborts during the identification (e.g. the video quality is not good enough). |
FRAUDOK |
The agent reports fraud suspicion during the identification, but during the review the identification is marked as legit. |
CANCELED |
The agent performs a successful identification, but during the review it is detected that the ident was not performed correctly (e.g. the picture quality is not good enough). |
LONGREVIEW |
Normally, the review of the test scenarios is performed right away (~1-2 Minutes delay). Using the LONGREVIEW scenario, the review is performed 24 hours later. |
HOLDCERTIFICATE |
The agent performs a successful identification, but the system sends out the signed documents and the results after 10 minutes. This test is only performable with an eSigning identification. |
FRAUDIDENT |
The agent reports fraud suspicion during the identification and the fraud is confirmed in the review.This test case is not supported for eSigning. |
Happy path test tutorial
Complete the following steps to simulate a successful identification workflow with IDnow on Sandbox.
1. Create a person
Create a person
resource using the following endpoint and set the value of the first_name
field to X-MANUALTEST-HAPPYPATH
to trigger the HAPPYPATH
scenario and any value for the last_name
in the request body.
Request
POST /v1/persons
{
"first_name": "X-MANUALTEST-HAPPYPATH",
"last_name": "{{random_name}}"
}
Response
{
"id": "f281052483ee30c274bdb7cdc9e8f348cper",
"salutation": null,
"title": null,
"first_name": "X-MANUALTEST-HAPPYPATH",
"last_name": "{{random_name}}",
"address": {
"line_1": null,
"line_2": null,
"postal_code": null,
"city": null,
"country": null,
"state": null
},
"contact_address": {
"line_1": null,
"line_2": null,
"postal_code": null,
"city": null,
"country": null,
"state": null
},
"email": null,
"mobile_number": null,
"birth_name": null,
"birth_date": null,
"birth_city": null,
"birth_country": null,
"nationality": null,
"employment_status": null,
"job_title": null,
"tax_information": {
"tax_assessment": null,
"marital_status": null
},
"fatca_relevant": null,
"fatca_crs_confirmed_at": null,
"business_purpose": null,
"industry": null,
"industry_key": null,
"terms_conditions_signed_at": null,
"own_economic_interest_signed_at": null,
"aml_follow_up_date": "2029-01-22",
"aml_confirmed_on": "2022-07-22",
"flagged_by_compliance": false,
"expected_monthly_revenue_cents": null,
"vat_number": null,
"website_social_media": null,
"business_trading_name": null,
"nace_code": null,
"business_address_line_1": null,
"business_address_line_2": null,
"business_postal_code": null,
"business_city": null,
"business_country": null,
"business_state": null,
"screening_progress": "NOT_SCREENED",
"risk_classification_status": "NOT_SCORED",
"customer_vetting_status": "NOT_VETTED",
"annual_income_range": null,
"data_terms_signed_at": null,
"branch": null,
"birth_province": null,
"birth_post_code": null,
"socioprofessional_category": null,
"purpose_of_account_opening": null,
"main_income_source": null,
"work_country": null,
"work_province": null,
"self_declared_as_pep": null,
"international_operativity_expectation": [],
"registration_number": null,
"legitimation_valid_until": null
}
2. Create an identification resource
Create an identification resource and specify the identification method
as idnow
in the request body of the following endpoint. Add the person_id
returned from the previous API call to the request URL.
Request example
POST /v1/persons/{person_id}/identifications
{
"method": "idnow"
}
Response
{
"id": "b80ea8c7f76909749763e77f3efc2c87cidt",
"reference": null,
"url": null,
"status": "created",
"completed_at": null,
"method": "idnow",
"proof_of_address_type": null,
"proof_of_address_issued_at": null,
"language": null,
"iban": null,
"terms_and_conditions_signed_at": null,
"authorization_expires_at": null,
"confirmation_expires_at": null
}
3. Trigger the identification
To trigger the identification flow, call the following endpoint and add the person_id
and the identification id
returned from the previous API calls to the request URL.
Request example
PATCH /v1/persons/{person_id}/identifications/{id}/request
Response example
The API call will return the details of a test video identification session, including url
(for web browser) and reference
(for mobile app).
{
"id": "b80ea8c7f76909749763e77f3efc2c87cidt",
"reference": "TST-CHMUV",
"url": "https://go.test.idnow.de/solarisbankvideoidentsandbox/identifications/b80ea8c7f76909749763e77f3efc2c87cidt",
"status": "pending",
"completed_at": null,
"method": "idnow",
"proof_of_address_type": null,
"proof_of_address_issued_at": null,
"language": null,
"iban": null,
"terms_and_conditions_signed_at": null,
"authorization_expires_at": null,
"confirmation_expires_at": null,
"estimated_waiting_time": 60
}
4. Complete the identification flow
Depending on whether you want to test the identification on the web browser or IDnow mobile application, you can click on the URl to go to the web browser session or enter the reference in the mobile app.
Afterwards, you'll be directed to the video identification flow where you have to:
- Enter any mobile number that starts with 0 or you can use the static value: +15550101, check all boxes and click on Start identification.
- The flow will start and you'll start seeing different pop-ups with instructions, simulating what would happen in a real video identification session.
- The flow goes to the successful stage and you have to confirm the identification by entering the following static Ident code: 123456.
- The successful identification screen will appear.
- Afterward, you can call the following endpoint, which will show the identification
status
assuccessful
. Additionally, the webhook eventIDENTIFICATION
will be triggered as well after a successful identification.
Request
GET /v1/persons/{person_id}/identifications
Response
[
{
"id": "b80ea8c7f76909749763e77f3efc2c87cidt",
"reference": "TST-CHMUV",
"url": "https://go.test.idnow.de/solarisbankvideoidentsandbox/identifications/b80ea8c7f76909749763e77f3efc2c87cidt",
"status": "successful",
"completed_at": "2022-07-22T09:28:13.000Z",
"method": "idnow",
"proof_of_address_type": null,
"proof_of_address_issued_at": null,
"language": null,
"iban": null,
"terms_and_conditions_signed_at": null,
"authorization_expires_at": null,
"confirmation_expires_at": null
}
]
What's next?
Congratulations! You've successfully integrated video identification.
Check the following appendix section for additional information on enums and testing data.
For an overview of other KYC methods, check the identity products overview page.
Useful resources
Check the following links for additional related guides and API reference documentation:
Appendix I: Enums
Document types
The following table includes the possible values for the field document_type
and their descriptions.
Enum | Description |
---|---|
ANNUAL_FINANCIAL_STATEMENT |
A business or a company's annual financial statement. |
KYC_REPORT |
The KYC report generate after a successful customer identification. |
ID_DOCUMENT |
An person's identification document, such as passport or ID. |
SIGNATURE |
A signature example. |
PICTURE |
A picture or a scanned document of any other type. |
QES_DOCUMENT |
A document related to a Qualified Electronic Signature (QES). |
SIGNED_CONTRACT |
A signed contract of any kind. |
SIGNED_QES_DOCUMENT |
A document signed by a Qualified Electronic Signature (QES). |
REGISTER_CHECK |
A register check. |
REGISTER_EXTRACT |
A business or a company's commercial register excerpt or a similar document. |
FOUNDATION_DOCUMENT |
The foundation document of a company or business. |
SCHUFA_COMPACT_REPORT |
A compact SCHUFA report. |
SCHUFA_GWG_REPORT |
A GWG SCHUFA report. |
SCHUFA_FULL_REPORT |
A full SCHUFA report about a person. |
SCHUFA_SHORT_REPORT |
A short SCHUFA report about a person. |
CREDIT_AGENCY_REPORT |
A report issued by a credit agency. |
SHARE_HOLDERS_AGREEMENT |
A business or a company's shareholders agreement. |
SHAREHOLDERS_LIST |
A business or a company's shareholders list. |
TRADING_LICENSE |
A business or a company's trading license. |
TRANSPARENCY_REGISTER_EXTRACT |
An extract of a transparency register. |
INVOICE |
An invoice of any kind. |
OTHER |
Any other type of document. |
VIDEO |
A video of any kind. |
VAT_CERTIFICATE |
VAT registration certificate |
Idnow status
The following table includes the possible values for the field status
for the video identification process carried out by IDnow and the related description of each status.
Status | Description |
---|---|
created |
The identification resource has been created for the customer. |
pending |
The identification process has been triggered and the video identification URL and reference are generated. You must redirect the customer to the URL to complete the identification process with IDnow. |
pending_successful |
The video identification was successful, but will be reviewed by the identification provider. You can already offer banking services to the customer at this stage. Once reviewed by the provider, the identification will be marked either as resolved positively (successful) or negatively (failed or canceled). A bank account will be automatically blocked if the identification is eventually marked as failed or canceled. |
pending_failed |
The identification is currently under review. You cannot offer banking services to the customer at this stage. The identification might eventually turn to successful, but it is unlikely. |
successful |
The video identification was successful. The customer can be onboarded. Please note that the customer's data might have been updated during the identification session. |
aborted |
The customer aborted the identification process. The customer can still video-identify using the same URL. |
canceled |
The provider canceled the video identification. The customer should video-identify again using the same URL. |
failed |
The identification was unsuccessful. You *cannot onboard the customer or offer any banking services to them. |
IDnow provides a reason for the canceled
and aborted
status. No reason can be disclosed for the final failed
status.
IDnow failure codes
The following table includes the possible failure or cancellation reasons for IDnow video identification.
Category | Failure reason | Description | Permanent? | Caused by User? |
---|---|---|---|---|
DATA | DATA_APPLICATION_ADDRESS | Address from application does not match address from ID document and cannot be corrected. | yes | yes |
DATA_APPLICATION_DATA | Data from application and data from the ID document do not match and cannot be corrected. | yes | yes | |
DATA_ID_EXPIRED | The validity date of the ID document has expired. User must use a different document. | no | yes | |
Technical | TECH_AUDIO | Poor audio quality. Audio quality is poor or user/agent inaudible. | no | yes |
TECH_DISCONNECTED_VIDEO | The video stream has disconnected during the identification. | no | yes | |
TECH_DISCONNECTED_WEBSOCKET | The websocket connection is disconnected during the identification. Normally caused by loss of internet connection by the user. | no | yes | |
TECH_HOLOGRAM | Security features not visible or broken. No suspicion of fraud. | no | yes | |
TECH_ID_TYPE | ID document is not allowed or is not supported. | no | yes | |
TECH_IDENT_CODE_DELIVERY | User was unable to receive the ident code SMS. | no | yes | |
TECH_INTERNAL_SERVER_ERROR | An error occurred on server. | no | no | |
TECH_INTERNET_CONNECTION | Internet connection of the user is not fast enough. | no | yes | |
TECH_LIGHTING | Poor lighting. Person or ID document not sufficiently visible. | no | yes | |
TECH_PHOTO | Poor photo quality. Person or ID document not sufficiently sharp and recognizable. | no | yes | |
TECH_TIMEOUT | The identification request was open too long. Identification requests get aborted after 30 minutes. | no | yes | |
TECH_VIDEO | Poor video quality or camera not good enough. Person or ID document not sufficiently sharp and recognizable. | no | yes | |
NO_VIDEO | Video call could not established. User and Agent do not see each other. | no | yes | |
BAD_VIDEO | Video call established, but is not of enough quality to continue. | no | yes | |
VIDEO_ENVIRONMENT | User is not in ideal conditions to perform the video call. | no | yes | |
VIDEO_OTHER | Any other problem with video not covered by other reasons. | no | yes | |
NO_AUDIO | No audio established between Agent and User. | no | yes | |
BAD_AUDIO | Audio is not of enough quality to continue with the call. | no | yes | |
BAD_AUDIO_ENVIRONMENT | Audio disturabce in the call. | no | yes | |
AUDIO_OTHER | Any other audio issues not covered by other reasons. | no | yes | |
BAD_PHOTO_QUALITY | ID and/or User photo is not of good quality to successfully conclude the identification. | no | yes | |
PHOTO_OTHER | Other problems related to the photo. | no | yes | |
CONNECTION_LOST | Call connection lost. | no | yes | |
CONNECTION_BAD | Connection is not good quality to continue. | no | yes | |
NO_CONNECTION | Connection between Agent and User not established due to network issues. | no | yes | |
CONNECTION_OTHER | Any Other issues with connection not covered by other reasons. | no | yes | |
IDENT_CODE_NOT_RECEIVED | Ident code SMS/email not received by the user. | no | no | |
IDENT_CODE_REPEATEDLY_INCORRECT | User entered wrong Ident Id multiple times. | no | yes | |
User | USER_ABORT_WHILE_WAITING | User has aborted the identification while he was waiting for an available agent. | no | yes |
USER_STARTED_NEW_REQUEST | User has started another ident attempt from different channel (web/app). | no | yes | |
USER_CANCELLATION | User has aborted the identification. | no | yes | |
ENROLLED_TO_WAITING_LIST | User has been put on the waiting-list. Depending on the configuration, this can be voluntary or mandatory, or a mix of both. Users cannot remove themselves from the waiting-list, restarting the Ident will lead to a warning message. | yes | yes | |
ID_NOT_SUPPORTED | User is using an ID document that is not supported for the online identification process. | no | yes | |
ID_DAMAGED | User is using an ID document that is damaged and not fit for the online identification process. | no | yes | |
ID_OTHER | Any other ID related issue not covered by other reasons. | no | yes | |
DISAGREE_WITH_VIDEO_RECORDING | User disagrees with Video Recording of the call. | no | yes | |
INCORRECT_ID_NUMBER | ID number is wrongly entered during identification | no | no | |
INCORRECT_NAME_IN_QES | Only for eSigning. Name mismatch found after QES generation. | no | no | |
WRONG_PHONE_NUMBER | Only for eSigning. User entered wrong phone number. | no | yes | |
USER_ID_NUMBER | User repeatedly reads the wrong ID document number. | no | yes | |
USER_IDENT_CODE | Ident code repeatedly entered incorrectly. | no | yes | |
USER_LANGUAGE | User speaks unsupported language. | yes | yes | |
USER_NO_ID | User has currently no ID card available. | no | yes | |
USER_WRONG_PERSON | The person of application and identification do not match. For example, husband has opened bank account, but wife is in the identification call. No suspicion of fraud. | no | yes | |
INDECENT_BEHAVIOUR | User exhibited behavior towards agent that is indecent. | yes | yes | |
Other | OTHER_ABUSE | Abuse of the procedure. Inappropriate behavior. | no | yes |
OTHER_MISCELLANEOUS_PERMANENT | Other error, which is not covered by specific error. Cannot be solved. | yes | - | |
OTHER_MISCELLANEOUS_TEMPORARY | Other error, which is not covered by specific error. Can be solved by a retry. | no | - | |
OTHER_TEST | Identification was a test call. | no | yes | |
OTHER_ERROR | Any other error, not further defined. | No | yes | |
STALLED_TIMEOUT | When an identification process is running for too long, then the identification request will be cancelled with this reason. | no | - | |
NO_SECURITY_QUESTION_ASKED | If enough security questions are not asked during an ident, reviewer/supervisor may cancel the ident with this reason. | no | - | |
SECURITY_QUESTION_NOT_CORRECT_ANSWERED | If reviewer/supervisor is not satisfied with the answers to security question, they may cancel the ident with this reason. | no | - | |
SECURITY_QUESTION | If a supervisor is not satisfied with the answers to security question, they may cancel the ident with this reason. | no | - | |
CALL_QUALITY_FAIL | During network pre-check; the network bandwidth is found to be lower than expected to conduct a successful video call. | No | yes | |
NO_ESIGN_FRAUD | For eSign transactions, agents must cancel a call if they believe it is fraudulent before it comes to the signing step. It will then be submitted for review with the status FRAUD_SUSPICION_PENDING | no | yes |
Identification documents
- List of the accepted passports for videoIdent: here
- List of accepted passports for postIdent: here
- Search for a identification document: here
List of passports with address
The following table shows the list of documents, that has the address included in the identification document, and allows you to perform identification without the proof of address document.
Document | Issuer Country | Type (ID/PP) |
---|---|---|
MLT-BO-02001 | Malta | ID |
MLT-BO-03001 | Malta | ID |
SVK-BO-02001 | Slovakia | ID |
SVK-BO-05001 | Slovakia | ID |
SVK-BO-04001 | Slovakia | ID |
ITA-BO-04003 | Italy | ID |
ITA-BO-03004 | Italy | ID |
ITA-BO-03002 | Italy | ID |
ITA-BO-03001 | Italy | ID |
ITA-BO-03003 | Italy | ID |
DEU-BO-01003 | Germany | ID |
DEU-BO-02001 | Germany | ID |
SGP-BO-01001-A | Singapore | ID |
SGP-BO-01001 | Singapore | ID |
CZE-BO-04001 | Czech Republic | ID |
CZE-BO-04002 | Czech Republic | ID |
IND-AO-01001 | India | Passport |
CHN-AO-04003 | China | Passport |
BGR-AO-01005 | Bulgaria | Passport |
SVN-AO-02001-02003 | Slovenia | Passport |
SVN-AO-02004 | Slovenia | Passport |
SVN-BO-02001 | Slovenia | ID |
SVN-AO-01004 | Slovenia | Passport |
POL-BO-02001-02003 | Poland | ID |
ESP-BO-03001 | Spain | ID |
ESP-BO-05001 | Spain | ID |
HRV-BO-02001 | Croatia | ID |
HRV-AO-02001 | Croatia | Passport |
FRA-BO-02002 | France | ID |
FRA-AO-03001-03003 | France | Passport |
MAR-AO-02001 | Morocco | Passport |