Skip to content
The outline of a document in teal: an empty circle for a photograph in the upper half, a solid horizontal line across the middle and three shorter lines below it.

“The record is worth as much as the event.”

Identity verification for the German financial market

A KYC system with liveness checks of both the person and the document, where the model gives a reliable proposal in about 98% of cases — and an operator confirms every decision. The product was sold at MVP stage.

Get in touch
A German financial organization · web, mobile and API · 2020, 6 months · product sold
98%
reliable proposals, operator-confirmed
7
verification steps, four randomized per session
3
document types with authenticity checks
Summary

A German financial organization opens accounts remotely, and German regulation requires video identification with a record that survives a review years later. The system takes an applicant through seven steps and asks for proof of liveness from two sides — the person and the document.

Four of the seven steps are randomized per session: prescribed document rotations, a finger on the edge, five spoken digits, head movements. A recording cannot be prepared in advance or replayed. Three document types are checked, and passports and ID cards are read off the NFC chip — cryptographically signed, instead of guessing the data off an image.

The model gives a reliable proposal in about 98% of cases, but a named operator confirms the decision — the system was built to support a decision, not to automate it. The product was sold at MVP stage.

The problem

A German financial organization needed remote identity verification under German regulation: a person proves they are who they claim to be, and what remains of the session must survive review.

The constraint

Video identification was a regulatory requirement and the decision must be attributable to a named person — so the system was deliberately built as decision support, not an automat. Biometrics could be kept only within statutory retention periods, out of the development team's reach.

What we did

  1. Randomness as the principle — no session can be staged

    Seven steps: face photo, document photo, video with prescribed rotations, finger on the edge, five random numbers, selfie video with random head movements. Nothing can be pre-recorded or replayed.

    7 steps, randomized per session
  2. Liveness for both the person and the document

    TensorFlow in the browser tracks the face and gestures — recording starts only with the face in frame. Rotation and the finger prove the document is physical; the NFC chip in passports and ID cards yields cryptographically signed data through our native module (Java, Swift, Turbo Modules).

    Passports and ID cards off the NFC chip
  3. Biometrics under the user’s key

    Unlocked only while processing runs, then moved to a separate bucket under a user- or admin-held key — out of the team’s reach. Encrypted requests, single-use tokens, external penetration testing.

    Model 98% — an operator confirms every decision
NO SESSION CAN BE STAGED OR REPLAYED
Video session WebRTC, recorded

Seven steps, four of them randomized per session: face and document photos, a video with prescribed rotations, a finger gesture on the edge, five random numbers, a selfie with head movements. TensorFlow in the browser tracks the face — recording starts only once the face is in frame.

Recordarchived within statutory retention — accurate, traceable, legally usable

The result

The model gave a reliable proposal in about 98% of cases, and an operator confirmed every one — confirming a decision instead of making it from scratch. The product was sold at MVP stage.
For context
up to 60%
of users abandon account opening before finishing
UserTesting, 2026
3–5 min
past that, abandonment passes 50%
MX Technologies, 2026

Seven steps here were a regulatory requirement, not a UX decision — designing such a flow is a trade between friction and proof.

What we’d do differently

We would log operator access from day one. A decision has to be attributable to a named person, and that means a record of who saw what — not only of who confirmed what.

We would write the chip-reading module once. Java for Android and a Swift rewrite for iOS mean two implementations of the same regulation, and two places to change when the regulation changes.

Related
All 18 case studies
  • TensorFlow
  • WebRTC
  • Node.js
  • Express
  • PostgreSQL
  • AWS S3
  • NFC / ICAO 9303
  • React Native / Turbo Modules
  • Java
  • Swift

Building a product in a regulated industry?

Get in touch

Systems that can’t stop — from architecture to production.

© 2026 Micro Tech, Sarajevo