Scenario in the personal account
Choose the steps: document, selfie, Liveness, database checks. Specify the allowed documents and countries, the webhook address and styling. The app will need the flow identifier.
Verify a customer without leaving your app: the SDK shows the passport capture, selfie and Liveness screens with prompts, and the result reaches the app and your server by webhook. Swift for iOS, Kotlin and Java for Android, styling — in the account.
Your team does not need to draw the camera, the frame and the error screens. The biometrics and document SDK walks the user through the steps of the flow, and you decide which steps to enable. Steps, documents and styling are set in the account — iOS, Android and the website show the same thing without a new app build.
A short screen before capture: take the document out of its cover, find some light. Then the camera request — with your own text explaining why it is needed. If access is denied, the SDK explains how to enable it.
The user photographs the document in the frame. If fields are hidden by glare or the document is cropped, they immediately see what to fix and retake only this step.
A selfie or a selfie holding the document, then the liveness check: the person moves their face closer to fit into two ovals. Photos, screens, masks and video stream substitution are rejected.
After the last step — the result screen. The app receives an event, your server receives a webhook with the session result, and the next screen opens immediately.
Two native libraries and a shared server side: what goes to the mobile team and what goes to the backend.
A Swift library: capture screens, camera, prompts and Liveness inside your app. The camera request uses the standard system dialog with your text.
A Kotlin and Java library with the same screens and steps. Camera permission is requested at runtime, before the check starts.
Frame, shot check and prompts before sending: the mobile document recognition SDK accepts passports, driving licences and ID cards from a list of 16,000+ types.
Liveness check in the same SDK: attacks of all three iBeta PAD levels — from a printout to a silicone mask and a deepfake.
The logo, light and dark theme colours, screen texts and languages are changed in the flow editor and appear in the app immediately.
A REST API for creating a session and getting its status, a webhook with the result, flow keys. The same API as for the website, so one integration serves all platforms.
The mobile team embeds the screens, the backend creates the session and receives the result. The work can run in parallel. Connection and working with the key are covered in the documentation.
The capture and Liveness screens are part of your app, with no browser and no redirects. Suits banks, MFIs and services where the check is a key registration step.
The same widget as on the website opens inside the app. It needs the app’s camera permission and camera access granted to the page in the WebView. How to set it up — on the page verification on a website and in an app.
The check opens in Safari View Controller or Custom Tabs, and the camera works as in a regular browser. When finished, the browser returns the user to the app at your address.
Your team draws the camera and the screens, the backend sends frames to the API and reads the response. Full control over the interface, but you handle frame quality checks and retakes yourself.
All four ways lead to the same session, the same response and the same webhook. The difference is who draws the screens and how much work the mobile team has.
They can be combined: the native SDK in the app, the Web SDK on the website and a link for emails and messengers — on one flow. Details — in the section “Mobile apps and WebView”.
A short list of what to check in a test build. Most camera failures at launch come from permissions, not from the check.
NSCameraUsageDescription. The key in Info.plist with a clear explanation of why the app needs the camera. Without it, the app will not get access. CAMERA in the manifest. The permission is declared in the manifest and requested from the user at runtime, before the check opens. clientUser your internal number is passed, without full name, phone or email. The app needs the result to show the next screen. The server needs the details to make a decision and save the file. That is why the result arrives through two channels. Field descriptions — in the session status documentation.
an event for the interface
success with the session resultsessionId and status in the return address for the browser patha webhook and a status request
clientUserwhat the result means
success — passedfailed — not passedsuspicious — suspiciousexception — processing errorexpired — the user did not finishidle orprocessingThe cloud runs on servers in Russia
Under Part 5 of Art. 18 of 152‑FZ, the data of Russian citizens, when collected, including over the internet, is recorded and stored in databases located in Russia. The NeuroVision cloud runs on servers in Russia; in your own environment images never leave your infrastructure.
You set the steps and the term
Under Parts 5 and 7 of Art. 5, data must not be excessive and is stored no longer than the purpose requires. You set the steps and documents; the session retention period is set in the flow, and it can be deleted earlier by an API method.
Your company obtains consent
The SDK checks that a live person is in front of the camera and matches the selfie against the photo in the document once, as part of this check. If the match serves to establish identity, your company obtains the customer’s written consent under Part 1 of Art. 11 of 152‑FZ.
A repeat check — from scratch
Face login and recognition of a returning customer by a stored template are permitted by 572‑FZ through the Unified Biometric System. A repeat check in the app — the document and Liveness again.
A guideline, not a legal opinion
The app collects images of the passport and the face — these are personal data. This is a guideline, not a legal opinion; your company remains the personal data operator.
152‑FZ
servers in Russia · Russian software register No. 19972
Opening an account or applying for a loan: passport, selfie and Liveness in the app, database checks — in the same session.
Checking a seller, contractor or courier at registration — before the first payout or the first order.
Both sides of the licence and a selfie right in the rental app — the user gets into the car without visiting an office.
Identity confirmation before a top-up, a withdrawal and a limit increase.
Remote eSIM activation and a plan change: Liveness confirms that a real subscriber is in front of the camera.
Age verification by document and liveness, without leaving the game or the app.
Where the customer comes through a mobile app and leaves if sent to a website or an office.
You pay per KYC session with all the steps of the flow, the same on any platform. There is no separate fee for the SDK in the price matrix; anti-fraud and screen styling are included in all packages.
from 16 ₽ per session
Document capture and recognition, classification, anti-fraud; up to 6 free attempts per step.
from 29 ₽ per session
Everything in “Document” + a selfie or Liveness, face match with the document photo.
on request
+ checks against Russian databases and international screening.
Test access — 1 month. Database checks are charged separately — from 5 ₽.
Yes. The iOS SDK in Swift and the Android SDK in Kotlin and Java show the document capture, selfie and Liveness screens inside your app. For websites there is a Web SDK, which also works in a WebView.
The native SDK is part of the app, with no browser screen and no WebView setup. The Web SDK in a WebView is faster to connect if the widget already works on your website. The flow, the response and the webhook are the same for both.
Passports, driving licences, ID cards and other documents from the list: 16,000+ types from 195+ countries and territories. You set the allowed documents and countries in the flow.
Yes. The logo, light and dark theme colours, screen texts and languages are set in the flow editor and applied to new sessions.
The API token and the flow secret key — only on your server. The app receives an encrypted session key from the server and passes it to the SDK.
From the SDK event after the last step. It is a hint for the interface: the server makes the decision on the customer from the webhook or a session status request.
The SDK shows a screen explaining how to allow access in the phone settings. Without the camera, the document, selfie and Liveness cannot be completed.
Up to six free attempts for each step. If the passport is photographed badly, only the passport is retaken. After the last failed attempt, the session is closed.
No. The SDK checks liveness and matches the selfie against the photo in the document once. The law permits recognition by a stored face template through the Unified Biometric System. A repeat check — the document and Liveness again.
There is no separate fee for the SDK: you pay per KYC session. The “Document” package — from RUB 16, “Document + Liveness” — from RUB 29, test access — 1 month.
Tell us which platforms your app runs on and which documents your customers photograph — we will choose the embedding path and give you test access for 1 month.
Can't put your request into words? Book a call and our team will contact you at a convenient time
Book a callThe NeuroVision platform is listed in the Russian software registry, entry no. 19972. Rospatent certificate no. 2023661508.
Address: Moscow, Presnenskaya Embankment 12 — Moscow City business centre, Federation Tower. Nearest metro stations: Delovoy Tsentr and Mezhdunarodnaya.