Video identification via IDnow

This guide describes how to implement video identification via IDnow for completing the Know Your Customer (KYC) process in your solution. You can implement this feature either as a standalone solution or in combination with Solaris CRR products.


User journey

Below are the steps involved in performing customer KYC using video identification via IDnow:

  1. In your frontend, during the sign-up flow, the customer provides the required data points and their consent to Solaris' Terms and Conditions and data processing terms.
  2. Inform the customer that they will be redirected to IDnow to complete the identification process. List the documents that they will be required to provide.
  3. Your solution forwards the customer and their data to IDnow using the IDnow SDK.
  4. IDnow will prompt the customer to begin a video identification session with an IDnow agent (either in English or in German). The customer must provide the following:

    • A government-issued identification document (e.g., passport or national ID card).
    • A document that proves their address (only if their identification document does not include an address).
    • A valid mobile number.
  5. During the video session, the following steps will occur:

    • The IDnow agent will verify the data provided by the customer during your sign-up flow against the data in their identification document.
    • The IDnow agent will collect any missing information.
    • IDnow will verify the customer's mobile number using an SMS one-time password.
  6. Once the process completes, the customer will be redirected to your frontend to complete the sign-up flow.


Video identification via IDnow is only available for customers residing in Germany. Additionally, your customer must possess one of the documents listed on IDnow's supported documents page.


IDnow offers video identification via mobile (SDK) or webview. For the sake of fraud prevention, Solaris strongly recommends integrating IDnow's mobile SDK instead of the webview APIs.

If your customer does not have an identification document from the supported list, then you must complete KYC using a different method.

For more information about which KYC method fits which use case, see the KYC section of the onboarding requirements guide.

System prerequisites

Before integrating this feature, you must implement the following requirements in your solution:

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

  • Collect the customer's consent to Solaris' 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.

The mentioned fields are part of the person resource in which all the customer data points are stored.

IDnow integration

In addition to the Solaris technical prerequisites, you must also integrate IDnow into your solution. You can achieve this either using IDnow's mobile SDKs (available for iOS and Android) or using their webview APIs (for desktop).

For instructions on how to set up IDnow in your solution, see the following IDnow documentation links:

Please read the security considerations below before completing this section.

Security considerations

Video identification methods can be manipulated by identity fraudsters who collect personal data from individuals under false pretenses (e.g., app testing). Therefore, it's crucial that your solution integrates the data collection and the video identification processes. This minimizes the threat of fraudsters hijacking the customer identification session.

For security reasons, Solaris strongly recommends using the mobile SDKs for video identification instead of the webview APIs.


Each IDnow identification session has a reference ID. Do not share this ID with the customer under any circumstances.


You must subscribe to the following webhook events to ensure that your system receives notifications for crucial events in the identification process. For detailed instructions on implementing Solaris webhooks, see the webhooks documentation.

Step 1: Collect customer data and create person resource

You must begin by collecting the mandatory data points from the customer in your sign-up flow, including timestamps from when the customer consented to each of the legal and compliance screens. Afterward, pass all the data points to Solaris by calling the API to create a person resource.

API reference

For a complete list of endpoints, properties, and examples related to the person resource, visit the following links:

Related webhook events

Important points about data collection
  • Please consider the special requirements for data collection highlighted in the onboarding requirements guide.
  • You must submit the information exactly as it appears in official documents.
  • When testing the process on Sandbox, please ensure that each person you create has unique values for first_name, last_name, birth_city, and birth_date. If you create over 1000 identical person resources, the API will return a 400 error.
  • Don't use any personal data when testing this endpoint on Sandbox.

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)

Request URL

POST /v1/persons


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.

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
  • 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 apply one of the following options to 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.
  • Solaris recommends collecting the nace_code from the customer for the sake of 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

Once you have collected the customer's data, you may initiate the KYC process. First, you must create an identification resource for the customer. This resource sets various parameters for the identification process and stores the results returned by IDnow.

API reference

For a complete list of endpoints, properties, and examples related to customer identification (KYC), visit the following link:

  • The previous link includes all endpoints for different KYC methods. This section includes the relevant endpoints required for video identification with IDnow.
  • Please note the system prerequisites needed for IDnow here.

Related webhook events

POST Create identification

Call this endpoint to create an identification resource for the person specified in the request URL, and add the following properties to the request body:

  • method: The identification method to use. In this case, set the value to 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 may not be older than 6 months.

Note that this endpoint does not actually trigger the identification process with the provider. Calling the PATCH Request an identification endpoint will trigger the 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-09-21"

Response example

The API call will return an identification object with a unique id (i.e., identification_id) and an initial status of 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-09-21",
    "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

The purpose of this endpoint is to provide you with a list of supported identification documents per issuing country. You can use this endpoint to inform your customers of the required documents before starting the identification process.

The API call returns an array of document types with the corresponding issuing countries listed as ISO country codes (ISO-3166-1 alpha 2). If a customer provides a document type that is not supported, their identification process will fail.

Request URL

GET /v1/persons/{person_id}/identifications/{id}/supported_documents

Click here to view the full API reference

PATCH Request person identification

Call this endpoint to trigger the identification flow with IDnow for the specific customer.

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 will remain pending until the customer completes the identification. Additionally, the payload includes the following key properties:

  • url The URL to which you must redirect the customer to complete the identification. Valid for 14 days.
  • reference: An internal IDnow identification token for the session (format: ABCDEFGH). Do not share this with the customer under any circumstances.
    "id": "6dc54352d6793a892e0702850d07b831cidt",
    "reference": "TST-KCCEY",
    "url": "",
    "status": "pending",
    "completed_at": null,
    "method": "idnow",
    "proof_of_address_type": "GAS_BILL",
    "proof_of_address_issued_at": "2022-09-21",
    "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.

IDnow video identification session

Your customer will now be redirected to an IDnow-branded landing page, where they consent to IDnow's Terms & Conditions and confirm that they have a valid ID document for the video identification. They must also provide a valid mobile number, which the IDnow agent will verify during the call using an SMS OTP.

Customers may choose to conduct the call with a German- or English-speaking IDnow agent. When the video identification call begins, the agent will greet the customer on behalf of either you or Solaris (depending on your agreement with Solaris). The agent will then verify the customer's mobile number, first name, and last name. If there are any missing data properties, the agent will provide these as well, and they will be added to the customer's person resource.

GET Retrieve person identification

Once the identification completes successfully, call this endpoint to retrieve the finalized person identification. If you use the include_documents filter, the API will also return the documents submitted by the customer during the process. To download any of these documents, use the document's unique id to call the document download endpoints.

Request URL

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

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.


IDnow offers 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. The format is as follows:

{{Test scenario}}-{{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.


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

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"

3. Trigger the identification

To trigger the identification flow, call the following endpoint, using the person_id and the identification id returned from the previous API call in 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": "",
    "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
  2. The flow will start and you'll start seeing different pop-ups with instructions, simulating what would happen in a real video identification session.
  3. 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
  4. The successful identification screen will appear.
    Test video identification flow 3
  5. 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 URL:

GET /v1/persons/{person_id}/identifications

What's next?

Congratulations! You have successfully completed the customer KYC process using IDnow video identification.

Check the following appendices for more information on enum values 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_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

IDow status values

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_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 whenever the identification has a canceled or aborted status. No reason can be disclosed for the final failed status.

IDnow failure codes

The following table describes the possible failure or cancellation reasons for IDnow video identification.

Failure reason Description Permanent? Caused by User?
AUDIO_OTHER Any other audio issues not covered by other reasons. no yes
BAD_AUDIO Audio is not of enough quality to continue with the call. no yes
BAD_AUDIO_ENVIRONMENT Audio disturbance in the call. no yes
BAD_PHOTO_QUALITY ID and/or User photo is not of good quality to successfully conclude the identification. no yes
BAD_VIDEO Video call established, but is not of enough quality to continue. no yes
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
CONNECTION_BAD Connection is not good quality to continue. no yes
CONNECTION_LOST Call connection lost. no yes
CONNECTION_OTHER Any Other issues with connection not covered by other reasons. no yes
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
DISAGREE_WITH_VIDEO_RECORDING User disagrees with Video Recording of the call. 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
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
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
INDECENT_BEHAVIOUR User exhibited behavior towards agent that is indecent. yes yes
NO_AUDIO No audio established between Agent and User. no yes
NO_CONNECTION Connection between Agent and User not established due to network issues. 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
NO_SECURITY_QUESTION_ASKED If enough security questions are not asked during an ident, reviewer/supervisor may cancel the ident with this reason. no -
NO_VIDEO Video call could not established. User and Agent do not see each other. no yes
OTHER_ABUSE Abuse of the procedure. Inappropriate behavior. no yes
OTHER_ERROR Any other error, not further defined. 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
PHOTO_OTHER Other problems related to the photo. no yes
SECURITY_QUESTION If a supervisor is not satisfied with the answers to security question, they 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 -
STALLED_TIMEOUT When an identification process is running for too long, then the identification request will be cancelled with this reason. no -
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
USER_ABORT_WHILE_WAITING User has aborted the identification while he was waiting for an available agent. no yes
USER_CANCELLATION User has aborted the identification. 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_STARTED_NEW_REQUEST User has started another ident attempt from different channel (web/app). 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
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
WRONG_PHONE_NUMBER Only for eSigning. User entered wrong phone number. no yes

Identification documents

  1. List of accepted passports for video identification via IDnow: here
  2. List of accepted passports for postIdent: here
  3. Search for an identification document: here

List of passports with address

The following table lists all ID types that include the bearer's address, which you can use to perform identification without having to provide a proof of address document.

Document Issuer Country Type (ID/PP)
BGR-AO-01005 Bulgaria Passport
CHN-AO-04003 China Passport
HRV-BO-02001 Croatia ID
HRV-AO-02001 Croatia Passport
CZE-BO-04001 Czech Republic ID
CZE-BO-04002 Czech Republic ID
FRA-BO-02002 France ID
FRA-AO-03001-03003 France Passport
DEU-BO-01003 Germany ID
DEU-BO-02001 Germany ID
IND-AO-01001 India Passport
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
MLT-BO-02001 Malta ID
MLT-BO-03001 Malta ID
MAR-AO-02001 Morocco Passport
POL-BO-02001-02003 Poland ID
SGP-BO-01001-A Singapore ID
SGP-BO-01001 Singapore ID
SVK-BO-02001 Slovakia ID
SVK-BO-05001 Slovakia ID
SVK-BO-04001 Slovakia ID
SVN-AO-02001-02003 Slovenia Passport
SVN-AO-02004 Slovenia Passport
SVN-BO-02001 Slovenia ID
SVN-AO-01004 Slovenia Passport
ESP-BO-03001 Spain ID
ESP-BO-05001 Spain ID

Appendix II: IDnow status transitions

Only the following transitions can occur during an IDnow identification session:

Case 1: Happy path


Case 2: Suspicion of fraudulent behavior by IDnow that was not confirmed. Identification was marked as successful after review.


Case 3: Fraudulent behavior was detected during a review of an identification that was previously marked as successful.