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:

  1. 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.
  2. 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.
  3. 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
  4. During the video session, the identification agent will verify the customer's data against their identification document and collect any missing information.
  5. 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 SDKs

You're required to integrate the IDnow SDK into your solution. For instructions, check the IDnow documentation:


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:

Diagram: Video identification (IDnow) flow

Integration steps

Integrate video identification by completing the following steps:

User registration

  1. 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

  1. Create an identification resource for the customer by using POST Create identification.
  2. Trigger the identification flow by using PATCH Request an identification.
  3. Trigger the KYC flow in your application via the IDnow SDK.
  4. 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 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.
  • When testing this process on Sandbox, please ensure that you create as many unique person resources as possible (i.e., unique values for first_name, last_name, birth_city, and birth_date). If you create more than 1000 identical person resources, then the API will return a 400 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:

Copy
Copied
{
    "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).

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 codes
  • address (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

Copy
Copied
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.

Copy
Copied
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 to FREELANCER or SELF_EMPLOYED, please note that you must do one of the following options in the same request to avoid getting an error:

    1. Collect the nace_code from the customer, or
    2. Set the fields industry and industry_key to null.
  • It's recommended to collect the nace_code from the customer for data quality.

Request URL

Copy
Copied
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, select idnow.
  • language: The customer's preferred language for the identification process. Possible values are EN and DE.
  • 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

Copy
Copied
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.

Copy
Copied
{
    "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

Copy
Copied
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

Copy
Copied
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.

Copy
Copied
{
    "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

Copy
Copied
GET /v1/persons/{person_id}/identifications/{id}

Response example

Copy
Copied
{
  "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

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-HAPPYPATHto trigger the HAPPYPATH scenario and any value for the last_name in the request body.

Request

Copy
Copied
POST /v1/persons
{
   "first_name": "X-MANUALTEST-HAPPYPATH",
   "last_name": "{{random_name}}"
}

Response

Copy
Copied
{
    "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

Copy
Copied
POST /v1/persons/{person_id}/identifications
{
   "method": "idnow"
}

Response

Copy
Copied
{
    "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

Copy
Copied
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).

Copy
Copied
{
    "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:

  1. Enter any mobile number that starts with 0 or you can use the static value: +15550101, check all boxes and click on Start identification.

Test video identification flow 1

  1. The flow will start and you'll start seeing different pop-ups with instructions, simulating what would happen in a real video identification session.
  2. The flow goes to the successful stage and you have to confirm the identification by entering the following static Ident code: 123456.

Test video identification flow 2

  1. The successful identification screen will appear.

Test video identification flow 3

  1. Afterward, you can call the following endpoint, which will show the identification status as successful. Additionally, the webhook event IDENTIFICATION will be triggered as well after a successful identification.

Request

Copy
Copied
GET /v1/persons/{person_id}/identifications

Response

Copy
Copied
[
    {
        "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

  1. List of the accepted passports for videoIdent: here
  2. List of accepted passports for postIdent: here
  3. 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