Verifiziere Personen mit der eID, die sie bereits nutzen.
Führe eID-Verifizierungen mit fünf nationalen eIDs in sieben Ländern durch: MitID, BankID Schweden, Finnish Trust Network, Smart-ID und Mobile-ID. Jede liefert einen signierten Namen, ein Geburtsdatum und eine systemspezifische Kennung, wie die schwedische Personennummer (MitID liefert eine pseudonymisierte). Wer keine eID hat, schließt den Prozess mit einem Dokumentencheck in über 220 Ländern und Gebieten im selben Workflow ab.
Es werden keine Adressen oder Porträts geteilt. Füge Liveness und Face Match hinzu, wenn du ein Selfie benötigst.
Was dir ein eID-Login bringt
Vom Aussteller signiert. Von Didit geprüft.
Eine eID (elektronische Identifizierung) Anmeldung ersetzt ein Foto eines Dokuments durch Daten, die das Schema signiert. Didit prüft die Signatur und hinterlegt das Ergebnis in der Session.
01Vollständiger Name und Geburtsdatum, vom Schema signiert
02Eine Kennung des jeweiligen Systems: Personennummer, persönlicher Identitätscode oder persönlicher Code (MitID liefert eine pseudonymisierte Kennung)
03Das vom Schema bestätigte Sicherheitsniveau
04Eine Signaturprüfung bei jedem Ergebnis: signature_valid
05Kein Dokumentenfoto, keine PIN-Weitergabe an Didit und keine Kosten, es sei denn, die Anmeldung wird abgeschlossen
So funktioniert's
Von der nationalen eID zum verifizierten Kunden in vier Schritten.
Schritt 01 / 04
01
Wähle die eIDs pro Land aus
Öffne im Workflow-Builder den Schritt „ID-Verifizierung“, wähle ein Land und aktiviere die eIDs, die du unter „Akzeptierte Wallets“ zulässt. Lege dann fest, was passiert, wenn eine Anmeldung fehlschlägt: Rückgriff auf die Dokumentenerfassung oder Ablehnung.
Leite den Nutzer zum Flow
Erstelle eine Session mit einem API-Aufruf und leite zum gehosteten Flow weiter, oder öffne ihn im Web, iOS, Android, React Native oder Flutter SDK. Die Auswahl zeigt nur die eIDs an, die du für das Land des Nutzers akzeptiert hast.
Der Nutzer bestätigt in seiner eID-App
Geräteübergabe auf demselben Gerät oder ein QR-Code auf dem Desktop für MitID, BankID und Finnish Trust Network, oder ein Vergleichscode, der auf dem Telefon für Smart-ID und Mobile-ID genehmigt wird. Die PIN bleibt in der eID-App.
Du erhältst das signierte Ergebnis
Ein signierter Webhook informiert dich über die Statusänderung. Die Entscheidung enthält das Schema, die signierten Attribute, das Sicherheitsniveau und die Signaturprüfung, wobei verification_method auf „wallet“ gesetzt ist.
eID-Verifizierung · Sechs Teile
Nationale eIDs und ein Dokumenten-Workflow, in einem einzigen Prozess.
Jede Zeile ist ein Teil desselben Workflows. Aktiviere, was dein Onboarding benötigt, Land für Land, und behalte eine Integration bei.
MitID in Dänemark, BankID in Schweden, das Finnish Trust Network in Finnland, Smart-ID in Estland, Lettland, Litauen und Belgien sowie Mobile-ID in Estland und Litauen. Jede gibt einen vollständigen Namen, ein Geburtsdatum und die eigene Kennung des Schemas zurück: die schwedische Personennummer, die finnische persönliche Identifikationsnummer, den baltischen persönlichen Code oder einen pseudonymisierten CPR-Alias für MitID. Keine Live-eID teilt eine Adresse oder ein Porträt.
Ein Workflow, mit einem Dokumentenweg für alle anderen.
Nicht jeder hat eine eID, und viele Kunden leben dort, wo noch keine verfügbar ist. Lege den Fallback pro Land fest, und dieselbe Session wechselt zu einer Dokumentenprüfung: über 14.000 Dokumententypen, Chip (NFC)-Lesung von E-Pässen und E-ID-Karten für $0.15, passive Liveness-Erkennung und Gesichtsabgleich. Eine vollständige KYC (Know Your Customer)-Prüfung mit einem Dokument kostet $0.33.
Signierte Daten, auf die du dich verlassen kannst.
Jedes eID-Ergebnis landet in einem wallet_verification-Objekt der Session: das Schema, das ausstellende Land, das Sicherheitsniveau, die Attribute und signature_valid. Wenn ein Schema ein schwächeres Niveau als das angeforderte zurückgibt, schlägt die Anmeldung fehl, anstatt stillschweigend herabgestuft zu werden. Nur abgeschlossene Anmeldungen werden abgerechnet. Abgebrochene, abgelaufene und fehlgeschlagene sind kostenlos.
Alter anhand eines signierten Geburtsdatums nachweisen.
Ein eID-Login liefert ein vom Schema signiertes Geburtsdatum. So lässt sich das Alter ohne Dokumentenfoto nachweisen. Für hohes Volumen empfehlen wir ein Design, das zuerst eine Altersschätzung vornimmt ($0.10 pro Prüfung mit passiver Lebenderkennung). Eine eID- oder Dokumentenprüfung erfolgt dann nur bei Grenzwerten.
Füge nach dem eID-Schritt ein AML-Screening (Anti-Geldwäsche) hinzu. Der verifizierte Name und das Geburtsdatum werden direkt mit Sanktions-, PEP- (politisch exponierte Person) und Beobachtungslisten-Prüfungen über 1.300+ Listen abgeglichen, für $0.20 pro Prüfung. Das fortlaufende Monitoring prüft täglich erneut für $0.07 pro Person pro Jahr. Ein möglicher Treffer geht an deinen Prüfer.
iDIN, der deutsche eID-Ausweis, Freja eID, die estnische ID-Karte, eParaksts, BankID Norway, Vipps, Buypass, itsme, OneID, ConnectID, UAE PASS, gov.br, GOV.UK Wallet, Bank iD, MojeID, Diia, FranceConnect und Auðkenni sind auf unserer Roadmap. Die Akzeptanz der EUDI Wallet (EU Digital Identity Wallet) kommt bald. Für andere Schemata sprich uns an: Didit fügt Schemata auf Anfrage hinzu, und der Dokumentenweg funktioniert in diesem Land bereits.
Die Abdeckung folgt dem Katalog Land für Land. Eine Flagge hier bedeutet, dass eine Wallet für dieses Land gelistet ist, nicht dass sie live ist.
eID-Abdeckung
Jede nationale eID, Land für Land.
Die nationalen und Bank-eIDs in ganz Europa und die wichtigsten digitalen ID-Schemata anderswo: Was jeder vom Nutzer verlangt, sein Sicherheitsniveau und was er zurückgibt. Status und Preise stammen aus Didits Live-Wallet-Katalog.
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
MyGov.be key
Land
Belgien
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Swiss E-ID (swiyu)
Noch nicht gestartet
Land
Schweiz
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Scannt einen QR-Code mit der App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
SwissID
Land
Schweiz
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Passwort plus Einmalcode
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Online-Ausweisfunktion (Personalausweis)
Land
Deutschland
Didit Status
Demnächst
Sicherheitsniveau
Hoch · EU-notifiziert
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
d-you
Noch nicht gestartet
Land
Deutschland
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
FranceConnect
Land
Frankreich
Didit Status
Demnächst
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
France Identité
Land
Frankreich
Didit Status
Auf Anfrage
Sicherheitsniveau
Hoch · EU-notifiziert
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
L'Identité Numérique La Poste
Land
Frankreich
Didit Status
Auf Anfrage
Sicherheitsniveau
Erheblich · EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
eID.li
Land
Liechtenstein
Didit Status
Auf Anfrage
Sicherheitsniveau
Erheblich, Hoch · EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
itsme
Land
Luxemburg
Didit Status
Demnächst
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Luxembourg eID card
Land
Luxemburg
Didit Status
Auf Anfrage
Sicherheitsniveau
Hoch · EU-notifiziert
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
LuxTrust
Land
Luxemburg
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
iDIN
Land
Niederlande
Didit Status
Demnächst
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
itsme
Land
Niederlande
Didit Status
Demnächst
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
DigiD
Land
Niederlande
Didit Status
Auf Anfrage
Sicherheitsniveau
Erheblich, Hoch · EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
eHerkenning (business login)
Land
Niederlande
Didit Status
Auf Anfrage
Sicherheitsniveau
Erheblich, Hoch · EU-notifiziert
Was der Nutzer tut
Passwort plus Einmalcode
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Yivi
Land
Niederlande
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Scannt einen QR-Code mit der App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
GOV.UK Wallet
Land
Vereinigtes Königreich
Didit Status
Demnächst
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
OneID
Land
Vereinigtes Königreich
Didit Status
Demnächst
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
GOV.UK One Login
Land
Vereinigtes Königreich
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert · GPG 45 medium
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Government Digital Wallet
Noch nicht gestartet
Land
Irland
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Scannt einen QR-Code mit der App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
MyGovID
Land
Irland
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert · SAFE 2
Was der Nutzer tut
Passwort plus Einmalcode
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Digital Identity (IdentiTek)
Noch nicht gestartet
Land
Albanien
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
e-Albania
Land
Albanien
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Passwort plus Einmalcode
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
B-Trust Mobile
Land
Bulgarien
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
eAuth
Land
Bulgarien
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Electronic identity certificate (identity card)
Noch nicht gestartet
Land
Bulgarien
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Evrotrust eID
Land
Bulgarien
Didit Status
Auf Anfrage
Sicherheitsniveau
Erheblich, Hoch · EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Cyprus national eID
Land
Zypern
Didit Status
Auf Anfrage
Sicherheitsniveau
Hoch · EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Bank iD
Land
Tschechien
Didit Status
Demnächst
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
MojeID
Land
Tschechien
Didit Status
Demnächst
Sicherheitsniveau
Niedrig, Erheblich, Hoch · EU-notifiziert
Was der Nutzer tut
Passwort plus Einmalcode
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
eDoklady
Land
Tschechien
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
eObčanka (identity card)
Land
Tschechien
Didit Status
Auf Anfrage
Sicherheitsniveau
Hoch · EU-notifiziert
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Identita občana (NIA)
Land
Tschechien
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Mobilní klíč eGovernmentu
Land
Tschechien
Didit Status
Auf Anfrage
Sicherheitsniveau
Niedrig, Erheblich, Hoch · EU-notifiziert
Was der Nutzer tut
Scannt einen QR-Code mit der App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Cartera Digital Beta
Noch nicht gestartet
Land
Spanien
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Scannt einen QR-Code mit der App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Cl@ve
Land
Spanien
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
DNIe (DNI 3.0 and 4.0)
Land
Spanien
Didit Status
Auf Anfrage
Sicherheitsniveau
Hoch · EU-notifiziert
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
MiDNI
Land
Spanien
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Scannt einen QR-Code mit der App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Gov.gr Wallet
Land
Griechenland
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Scannt einen QR-Code mit der App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
TAXISnet credentials
Land
Griechenland
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Passwort plus Einmalcode
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Certilia mobile.ID
Land
Kroatien
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
eOI (identity card)
Land
Kroatien
Didit Status
Auf Anfrage
Sicherheitsniveau
Hoch · EU-notifiziert
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
NIAS (e-Građani)
Land
Kroatien
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert (nutzt die eOI, die auf dem Niveau Hoch EU-notifiziert ist)
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
DÁP (Digitális Állampolgárság)
Land
Ungarn
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Scannt einen QR-Code mit der App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Ügyfélkapu+
Land
Ungarn
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Passwort plus Einmalcode
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
CIE and CieID
Land
Italien
Didit Status
Auf Anfrage
Sicherheitsniveau
Niedrig, Erheblich, Hoch · EU-notifiziert
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
IT-Wallet
Land
Italien
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
SPID
Land
Italien
Didit Status
Auf Anfrage
Sicherheitsniveau
Niedrig, Erheblich, Hoch · EU-notifiziert
Was der Nutzer tut
Passwort plus Einmalcode
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Carte de identitate (identity card)
Land
Republik Moldau
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
EVO
Land
Republik Moldau
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Scannt einen QR-Code mit der App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
EVOSign
Land
Republik Moldau
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
MPass
Land
Republik Moldau
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Semnătura Mobilă
Land
Republik Moldau
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Bestätigt einen Code auf dem Telefon
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Evrotrust eID
Land
Nordmazedonien
Didit Status
Auf Anfrage
Sicherheitsniveau
Hoch · nicht EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
m.Uslugi
Noch nicht gestartet
Land
Nordmazedonien
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
OneID (KIBS)
Land
Nordmazedonien
Didit Status
Auf Anfrage
Sicherheitsniveau
Hoch · nicht EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
uslugi.gov.mk eID
Land
Nordmazedonien
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Passwort plus Einmalcode
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Maltese e-ID
Land
Malta
Didit Status
Auf Anfrage
Sicherheitsniveau
Hoch · EU-notifiziert (nur eID-Karte und elektronische Aufenthaltsdokumente)
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
e-dowód (identity card)
Land
Polen
Didit Status
Auf Anfrage
Sicherheitsniveau
Erheblich, Hoch · EU-notifiziert
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
login.gov.pl
Land
Polen
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
mObywatel
Land
Polen
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Scannt einen QR-Code mit der App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Profil Zaufany
Land
Polen
Didit Status
Auf Anfrage
Sicherheitsniveau
Erheblich, Hoch · EU-notifiziert
Was der Nutzer tut
Passwort plus Einmalcode
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Autenticação.gov
Land
Portugal
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Cartão de Cidadão
Land
Portugal
Didit Status
Auf Anfrage
Sicherheitsniveau
Hoch · EU-notifiziert
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Chave Móvel Digital
Land
Portugal
Didit Status
Auf Anfrage
Sicherheitsniveau
Hoch · EU-notifiziert
Was der Nutzer tut
Bestätigt einen Code auf dem Telefon
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Carte electronică de identitate
Land
Rumänien
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
ROeID
Land
Rumänien
Didit Status
Auf Anfrage
Sicherheitsniveau
Erheblich · EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
eID.gov.rs (ConsentID)
Land
Serbien
Didit Status
Auf Anfrage
Sicherheitsniveau
Hoch · nicht EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Lična karta (identity card)
Land
Serbien
Didit Status
Auf Anfrage
Sicherheitsniveau
Hoch · nicht EU-notifiziert
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
eOI and eOsebna
Land
Slowenien
Didit Status
Auf Anfrage
Sicherheitsniveau
Hoch · EU-notifiziert (nur Ausweiskarte)
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
SI-PASS
Land
Slowenien
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
eID karta (identity card)
Land
Slowakei
Didit Status
Auf Anfrage
Sicherheitsniveau
Hoch · EU-notifiziert
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
MeID
Land
Slowakei
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Slovensko v mobile
Land
Slowakei
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Scannt einen QR-Code mit der App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
e-Devlet
Land
Türkei
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Passwort plus Einmalcode
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
T.C. Kimlik Kartı (identity card)
Land
Türkei
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Diia
Land
Ukraine
Didit Status
Demnächst
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
BankID NBU
Land
Ukraine
Didit Status
Auf Anfrage
Sicherheitsniveau
nicht EU-notifiziert
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
UAE PASS
Land
Vereinigte Arabische Emirate
Didit Status
Demnächst
Sicherheitsniveau
Basic, Verified
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Kuwait Mobile ID (Hawyti)
Land
Kuwait
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Absher
Land
Saudi-Arabien
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Nafath
Land
Saudi-Arabien
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
ConnectID
Land
Australien
Didit Status
Demnächst
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
myID
Land
Australien
Didit Status
Auf Anfrage
Sicherheitsniveau
Nach den Regeln des Systems
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
National Online Identity Authentication
Land
China
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Identitas Kependudukan Digital (IKD)
Land
Indonesien
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Aadhaar e-KYC
Land
Indien
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt einen Code auf dem Telefon
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
DigiLocker
Land
Indien
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
My Number Card (JPKI)
Land
Japan
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Mobile ID
Land
Südkorea
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
RealMe verified identity
Land
Neuseeland
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
PhilSys (PhilID, ePhilID)
Land
Philippinen
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Scannt einen QR-Code mit der App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Singpass (Myinfo)
Land
Singapur
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
NDID
Land
Thailand
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
ThaID
Land
Thailand
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Mi Argentina
Land
Argentinien
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
gov.br
Land
Brasilien
Didit Status
Demnächst
Sicherheitsniveau
Nach den Regeln des Systems
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Service d'authentification gouvernementale
Land
Kanada
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Llave MX
Land
Mexiko
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
DNIe 3.0
Land
Peru
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Apple Wallet Digital ID
Land
Vereinigte Staaten
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Google Wallet ID Pass
Land
Vereinigte Staaten
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
ID.me
Land
Vereinigte Staaten
Didit Status
Auf Anfrage
Sicherheitsniveau
NIST IAL2
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Login.gov
Land
Vereinigte Staaten
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Meldet sich auf der Seite des Schemas an
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
State mobile driver's licences (mDL)
Land
Vereinigte Staaten
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Cédula digital wallet
Noch nicht gestartet
Land
Uruguay
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt in der eID-App
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
National Identification Number (NIN)
Land
Nigeria
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Bestätigt einen Code auf dem Telefon
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Smart ID card
Land
Südafrika
Didit Status
Auf Anfrage
Sicherheitsniveau
Nicht angegeben
Was der Nutzer tut
Hält den Ausweis an (NFC) oder nutzt ein Kartenlesegerät
An dich zurückgegebene Daten
Pro Schema
Preis pro Login
Auf Anfrage
Zuletzt geprüft: 5. Oktober 2026. Keine Rechtsberatung. Das Sicherheitsniveau ist das eigene Niveau des Schemas gemäß eIDAS (der EU-Verordnung über elektronische Identifizierung) oder nationalen Vorschriften, wie es der Aussteller oder die EU-Liste der notifizierten Schemata veröffentlicht. Die Preise verstehen sich pro erfolgreicher Anmeldung. Für alle als „Auf Anfrage“ gekennzeichneten Schemata sprich uns an: Die Dokumentenprüfung mit Chip-Lesung funktioniert in diesem Land bereits.
So läuft's ab
Drei Screens, kein Dokumentenfoto.
Was dein Kunde mit Smart-ID sieht: eID auswählen, Code in der App bestätigen, verifiziert zurückkommen. MitID, BankID und Finnish Trust Network leiten zur App auf demselben Telefon weiter oder zeigen einen QR-Code auf dem Desktop an.
Mit deiner eID verifizieren
MitID
BankID
Finnish Trust Network
Smart-ID
Mobile-ID
01
Wähle deine eID
Die Auswahl zeigt die eIDs an, die du für das Land des Nutzers akzeptierst, inklusive ihrer offiziellen Logos.
Dein Verifizierungscode
4821
Prüfe, ob deine App denselben Code anzeigt, und bestätige dann.
02
In der App bestätigen
Der Nutzer prüft, ob der Code übereinstimmt, und bestätigt dann mit seiner PIN in der eID-App. Didit sieht die PIN niemals.
Identität verifiziert
Du wirst zur App zurückgeleitet
03
Verifiziert
Der Flow leitet den Nutzer zu dir zurück, und das signierte Ergebnis kommt per Webhook.
Integrieren
eIDs aktivieren. Das signierte Ergebnis lesen.
Aktiviere eIDs pro Land im Workflow, mit der Dokumentenprüfung als Fallback, und lies dann das signierte Ergebnis aus der Session-Entscheidung oder dem Webhook.
eID-Verifizierung mit einem Prompt implementieren.
Kopier diesen Prompt in deinen Coding-Agent und beschreibe deinen Stack. Er deckt die Workflow-Konfiguration pro Land, den Session-Aufruf, den signierten Webhook, das wallet_verification-Ergebnis und die Abrechnung ab.
didit-integration-prompt.md
# Didit eID verification, integrate in 5 minutes
You are adding national eID sign-in to my_stack: the user verifies with the
eID they already use (a bank or government digital identity), and anyone
without one falls back to document capture in the same flow. Every URL,
header and enum value below is canonical. Do not paraphrase or "improve" them.
## 1. Provision an account
- Sign up: https://business.didit.me
- Create an application and copy its API key from the console.
## 2. Check which eIDs are live, per country
Availability is server-driven. Never hard-code a wallet list.
- Business Console: your application -> Workflows -> the ID Verification
step -> Countries -> "Wallets accepted". Coming-soon wallets are listed
but cannot be switched on. https://docs.didit.me/console/id-verification-methods
- Didit MCP server (https://mcp.didit.me/mcp), tool
didit_workflow_get_id_verification_methods_catalog; pass country as ISO
3166-1 alpha-3 to narrow it. The MCP server signs in with "Log in with
Didit" (OAuth). It does not accept the x-api-key.
https://docs.didit.me/integration/mcp/tools
- Public coverage table (no sign-in, read-only):
https://docs.didit.me/core-technology/id-verification/digital-id-wallets#supported-wallets
If your code holds only an API key, it cannot read the catalog itself: use the
wallet ids listed in this prompt, and treat the answer of the workflow save as
the check. A live application answers 400 for a wallet that is not available
in that country ("<wallet> is not offered in <ISO3>", "unknown wallet").
At the time this prompt was generated, the catalog marked these available:
- MitID: wallet id mitid, country keys DNK
- BankID: wallet id bankid_se, country keys SWE
- Finnish Trust Network: wallet id ftn, country keys FIN
- Smart-ID: wallet id smart_id, country keys EST, LVA, LTU, BEL
- Mobile-ID: wallet id mobile_id, country keys EST, LTU
Coming soon (cannot be enabled yet): BankID, Vipps, Buypass ID, itsme, iDIN, Personalausweis, Freja eID, UAE PASS, gov.br, OneID, GOV.UK Wallet, Bank iD, MojeID, Diia, FranceConnect, Auðkenni, ConnectID, EUDI Wallet, Estonian ID-card, eParaksts.
Check the catalog for your environment before you go live.
## 3. Create the workflow
POST https://verification.didit.me/v3/workflows/
-H "x-api-key: <your-api-key>"
-H "Content-Type: application/json"
The ID Verification feature's enum value is OCR (uppercase, strict). eIDs are
its wallet method, set per country under config.methods. Keys are ISO 3166-1
alpha-3. Keep document capture on, so a user without an eID can still finish.
{
"workflow_label": "eID onboarding",
"features": [
{
"feature": "OCR",
"config": {
"methods": {
"DNK": {
"document": { "enabled": true },
"wallet": { "enabled": true, "providers": ["mitid"], "on_failure": "fallback_to_document" }
},
"SWE": {
"document": { "enabled": true },
"wallet": { "enabled": true, "providers": ["bankid_se"], "on_failure": "fallback_to_document" }
}
}
}
}
]
}
Response: 201. The workflow id is uuid (workflow_id carries the same value);
the workflow is published straight away. Create it once and keep the id:
every call to this endpoint makes a new workflow.
is_desktop_allowed defaults to false: on a desktop browser the hosted flow
then shows a QR code to continue on a phone. Add "is_desktop_allowed": true
next to workflow_label to let people finish on desktop.
Rules the API enforces:
- providers is an accept-list, not a ranking; the user picks
- on_failure is fallback_to_document or decline; it covers a cancelled,
timed-out or failed sign-in
- fallback_to_document where document.enabled is false declines instead
- a wallet the catalog does not mark available in that country rejects the
whole save (400), including every other method in the same request
- enabled true with an empty providers list is rejected
- add { "feature": "LIVENESS" } and { "feature": "FACE_MATCH" } to features
if you need a selfie: the live eIDs do not share a portrait
## 4. Create a session
POST https://verification.didit.me/v3/session/
-H "x-api-key: <your-api-key>"
-H "Content-Type: application/json"
-d '{ "workflow_id": "<id from step 3>", "vendor_data": "<your user id>" }'
Response: 201 with session_id, session_token, url and status "Not Started".
Redirect the user to url (hosted flow) or open it in the Web, iOS, Android,
React Native or Flutter SDK. The field is named url on this response.
One unfinished session exists per workflow_id and vendor_data pair: calling
create again with the same pair answers 201 again with that same session.
The user picks their eID, then approves in the eID app: same-device hand-off
or a QR code on desktop for MitID, BankID and Finnish Trust Network; a
comparison code approved on the phone for Smart-ID and Mobile-ID. Didit never
asks for the user's PIN. A started sign-in stays valid for 10 minutes by
default.
## 5. Webhooks
Register a destination in the console (API & Webhooks), or over the API:
POST https://verification.didit.me/v3/webhook/destinations/
-H "x-api-key: <your-api-key>"
-H "Content-Type: application/json"
-d '{
"label": "Verification webhooks",
"url": "https://<your-public-host>/webhooks/didit",
"webhook_version": "v3",
"subscribed_events": ["status.updated", "data.updated"]
}'
label, url and subscribed_events are required. url must be a public HTTPS
address: Didit does not deliver to localhost or private addresses. Response:
201 with uuid and secret_shared_key. Store secret_shared_key as the webhook
secret (DIDIT_WEBHOOK_SECRET); it is unique to this destination. Remove a
destination with DELETE /v3/webhook/destinations/{uuid}/ (204).
What arrives:
- webhook_type is "status.updated" (the session changed status) or
"data.updated" (verification data was corrected after the fact)
- a destination receives the events of every session of the application,
so filter on workflow_id or vendor_data when several flows share it
- creating a session already sends status.updated with status
"Not Started". The decision key is present only when status is Approved,
Declined, In Review or Abandoned.
Verify every delivery:
Header: X-Signature-V2 (not X-Signature, not X-Signature-Simple)
Algorithm: HMAC-SHA256, hex digest, over the canonical JSON of the payload
(Python json.dumps(sort_keys=True, separators=(",", ":"),
ensure_ascii=False) after whole-valued floats become ints).
Use the reference handler below as written: it rebuilds those
bytes from the raw body text. Never hash the raw request bytes.
Freshness: the signed body field timestamp is the dispatch time (Unix
seconds, refreshed on every retry). Reject when
abs(now - timestamp) > 300 seconds, and reject when the
X-Timestamp header does not equal it.
Idempotency: event_id is the same on every retry of one event, so store it
and skip a delivery you already processed. One session can
still send the same status under two event ids, and the
console's Try Webhook test deliveries carry no event_id, so
also make the handler safe to run twice for one
(session_id, status, webhook_type).
Compare: constant-time (crypto.timingSafeEqual)
Reference handler (Express). Keep the verification lines as written.
The handler is a fragment. Put this above it and app.listen(process.env.PORT)
below it. It needs Express and Node 21 or newer (an older Node rejects
every delivery). It expects a JSON body: answer 400 yourself if you accept
anything else on this route, and refuse to start without the secret.
const express = require("express");
const app = express();
const SECRET = process.env.DIDIT_WEBHOOK_SECRET; // secret_shared_key of the destination
// Your endpoint receives a signed payload
const crypto = require("node:crypto"); // ESM: import crypto from "node:crypto"
// X-Signature-V2 = HMAC over the canonical JSON, never the raw bytes. Match the sender byte for
// byte: keys sorted by code point, integers digit for digit, floats in Python's repr.
class Num { constructor(src) { this.src = src; } } // a number as written on the wire, not a double
const num = (s) => { if (/^-?\d+$/.test(s)) return BigInt(s).toString(); const n = +s; // ints stay exact
if (Number.isInteger(n)) return BigInt(n).toString(); const [m, e] = n.toExponential().split("e"); // 27.0 -> 27
return +e >= -4 ? String(n) : `${m}e-${String(-e).padStart(2, "0")}`; }; // 1e-05, not 0.00001
const byCodePoint = (a, b) => Buffer.compare(Buffer.from(a), Buffer.from(b)); // UTF-8 order = Python's
const canon = (v) => Array.isArray(v) ? `[${v.map(canon)}]` : v instanceof Num ? num(v.src)
: v && typeof v === "object" ? `{${Object.keys(v).sort(byCodePoint).map((k) => `${JSON.stringify(k)}:${canon(v[k])}`)}}`
: JSON.stringify(v);
// Read the body as text: express.json() would round 1000000000000000129 to a double first.
// Register this route ABOVE any global app.use(express.json()): the first parser to run
// consumes the stream, and a body it already parsed has lost the digits the signature covers.
app.post("/webhooks/didit", express.text({ type: "application/json" }), (req, res) => {
const exact = JSON.parse(req.body, (k, v, c) => typeof v === "number" ? new Num(c.source) : v); // Node 21+
const body = JSON.parse(req.body);
const mac = crypto.createHmac("sha256", SECRET).update(canon(exact), "utf8").digest("hex");
const sig = Buffer.from(String(req.headers["x-signature-v2"] ?? ""));
// Freshness comes from the signed body timestamp; the header alone is unsigned and replayable.
const ts = body.timestamp, fresh = String(ts) === req.headers["x-timestamp"]
&& Math.abs(Date.now() / 1000 - ts) <= 300;
if (!fresh || sig.length !== mac.length
|| !crypto.timingSafeEqual(sig, Buffer.from(mac))) return res.sendStatus(401);
const { status, decision } = body;
// One entry per ID Verification node; pick yours by node_id when you run several.
const [idv] = decision?.id_verifications ?? [];
// idv.verification_method: "document" | "id_lookup" | "wallet"
res.sendStatus(200);
});
Status values (exact strings): Not Started, In Progress, Approved, Declined,
In Review, Resubmitted, Expired, Abandoned, Kyc Expired. Awaiting User only
appears on business verification sessions.
## 6. Read the eID result
The same V3 decision reaches you two ways:
- webhook body: body.decision.id_verifications[]
- GET https://verification.didit.me/v3/session/{session_id}/decision/
-H "x-api-key: <your-api-key>"
This response IS the decision object. Read id_verifications at the top
level: there is no decision wrapper here.
Until the user finishes the ID step, status is "Not Started" or "In Progress"
and id_verifications is null, not an empty array. Guard for it.
id_verifications[] has one entry per ID Verification node; with a single step
take index 0 (its node_id is "ocr" on a workflow made by the call in step 3).
The decision's features list names the step ID_VERIFICATION; the workflow
body still takes OCR. Each entry carries:
status Approved, Declined, In Review or Not Finished
verification_method "wallet" for an eID sign-in, "document" after a
fallback
assurance "cryptographic" for a wallet entry, "documentary"
for a document one
full_name, the normalised identity fields, on the entry itself
date_of_birth
wallet_provider the catalog wallet id, for example "mitid"
wallet_verification provider, provider_name, issuing_authority,
issuing_country, credential_type,
level_of_assurance (low | substantial | high),
verified_at, signature_valid, attributes, portrait,
face_match_score
fallback_from { method, reason, action } when the wallet sign-in failed
and on_failure declined the session; otherwise
null. After a document fallback that succeeds the
entry reads verification_method "document" with
fallback_from null
attributes holds what the scheme shares, and the names vary by scheme: MitID
returns cpr_alias (a pseudonymised identifier, not the CPR number), BankID
Sweden personal_number, Finnish Trust Network personal_identity_code, Smart-ID
and Mobile-ID personal_code. Use full_name and date_of_birth on the entry for
the normalised identity fields. No live eID returns an address or a portrait.
Check wallet_verification.level_of_assurance when your rules depend on it. If
a scheme returns a weaker level than the one requested, the sign-in fails
instead of downgrading.
## 7. Billing
- only a completed eID sign-in is billed; cancelled, timed-out, refused
and failed sign-ins are free
- a document fallback is billed as its own document check
- eID checks are outside the document free tier
- published prices per completed sign-in (USD):
- MitID personal: $0.25
- BankID Sweden: $0.20
- Finnish Trust Network: $0.25
- Smart-ID: $0.20
- Mobile-ID: $0.20
- full pricing: https://docs.didit.me/core-technology/id-verification/digital-id-wallets#pricing
## 8. Hard rules
- base URL for v3 endpoints: verification.didit.me
- auth header: x-api-key
- feature enum: OCR; methods: document, id_lookup, wallet
- wallet ids come from the catalog verbatim (mitid, bankid_se, ftn,
smart_id, mobile_id)
- country keys: ISO 3166-1 alpha-3, uppercase
- webhook: X-Signature-V2 plus X-Timestamp, canonical JSON, freshness from
the signed body timestamp
## 9. Verify your integration
Sandbox (an application in sandbox mode: nothing is billed and no real eID is
called). https://docs.didit.me/integration/sandbox-testing
- a sandbox application can enable every wallet in the catalog, the
coming-soon ones included. A workflow that saves in sandbox can still be
refused on a live application, so only use wallets marked available.
- open the session url, pick the wallet and confirm: the default approve
scenario simulates the sign-in. The entry then has verification_method
"wallet", assurance "cryptographic" and wallet_provider set, and the
normalised full_name and date_of_birth are filled. But
wallet_verification.signature_valid and level_of_assurance are null and
attributes is { "sandbox": true }: no real credential was checked.
Assert signature_valid === true and the level of assurance only against
a live application.
- to exercise on_failure, create the session with
"sandbox_scenario": "wallet_cancelled" (also wallet_timeout and
wallet_provider_error). The wallet sign-in then fails and the flow moves
to document capture or declines, as on_failure says. A fallback that
ends in an approved document reads verification_method "document".
- POST /v3/session/{session_id}/simulate/ forces a final status but writes
no id_verifications entry, so it cannot stand in for a sign-in.
Checks:
- create the workflow, create a session, and read its decision: expect 201,
201 with url, and 200 with status "Not Started"
- run one sandbox session per accepted eID through the hosted flow and
assert verification_method is "wallet" and wallet_provider is the eID you
picked
- run one session with sandbox_scenario "wallet_cancelled" and assert the
flow offers document capture
- assert your webhook accepts a correctly signed payload and rejects a
wrong X-Signature-V2, a changed body, and a payload whose signed
timestamp is older than 300 seconds, even when X-Timestamp is refreshed
- on a live application, assert wallet_verification.signature_valid is true
Docs: https://docs.didit.me/core-technology/id-verification/digital-id-wallets
Compliant by Design
Ein neues Land mit einem Klick erschließen. Wir machen die Arbeit.
Wir gründen lokale Tochtergesellschaften, sichern Lizenzen, führen Penetrationstests durch, erhalten Zertifizierungen und passen uns jeder neuen Regulierung an. Um Verifizierungen in einem neuen Land zu starten, legst du einfach einen Schalter um. Über 220 Länder live, vierteljährlich auditiert und Pen-getestet, der einzige Identitätsanbieter, den eine EU-Mitgliedsregierung offiziell als sicherer als die persönliche Verifizierung eingestuft hat.
Kostenlos starten. Nach Verbrauch zahlen. Bis zum Enterprise-Level skalieren.
500 kostenlose Verifizierungen jeden Monat, für immer. Danach zahlst du nur, wenn ein Modul läuft. Individuelle Verträge, Datenresidenz und Service Level Agreements (SLAs) für Enterprise-Kunden.
Kostenlos
$0/ Monat · keine Kreditkarte nötig
Zum Entwickeln, Testen und für deine ersten Nutzer.
Alles, was du für den Start brauchst:
500 vollständige KYC-Verifizierungen pro Monat
ID, Liveness, Face Match, Gerät & IP
Über 200 Betrugssignale, Blocklist, Duplikate
Wiederverwendbares KYC im Didit-Netzwerk
Workflow Builder, Case Management, SDKs
KI-SupportKI-Agent in der Konsole, Docs und Community.