Skip to main content
Didit Raises $7.5M to Build the Infrastructure for Identity and Fraud
Didit
eID verification

Verify people with the
eID they already use.

Run eID verification with five national eIDs, live in seven countries: MitID, BankID Sweden, Finnish Trust Network, Smart-ID and Mobile-ID. Each returns a signed name, date of birth and scheme identifier, such as the Swedish personnummer (MitID returns a pseudonymised one). Anyone without an eID finishes with a document check in 220+ countries and territories, in the same workflow.

Backed by
Y CombinatorRobinhood Ventures
Firecrawl
Slash
Crnogorski Telekom
UCSF Neuroscape
Bit2Me

Trusted by 3,000+ organizations worldwide.

What an eID sign-in gives you

Signed by the issuer.
Checked by Didit.

An eID (electronic identification) sign-in replaces a photo of a document with data the scheme signs. Didit checks the signature and puts the result on the session.

  1. 01Full name and date of birth, signed by the scheme
  2. 02A scheme identifier: personnummer, personal identity code or personal code (MitID returns a pseudonymised identifier)
  3. 03The level of assurance the scheme asserted
  4. 04A signature check on every result: signature_valid
  5. 05No document photo, no PIN shared with Didit, and no charge unless the sign-in completes
How it works

From national eID to a verified customer in four steps.

Step 01 / 04

Pick the eIDs per country

In the workflow builder, open the ID Verification step, choose a country and tick the eIDs you accept under Wallets accepted. Then choose what happens when a sign-in fails: fall back to document capture, or decline.

eID verification · Six parts

National eIDs and a document route, in one workflow.

Each row is one part of the same workflow. Turn on what your onboarding needs, country by country, and keep one integration.
01 · Live national eIDs

Five national eIDs, live in seven countries.

MitID in Denmark, BankID in Sweden, the Finnish Trust Network in Finland, Smart-ID in Estonia, Latvia, Lithuania and Belgium, and Mobile-ID in Estonia and Lithuania. Each returns a full name, a date of birth and the scheme's own identifier: the Swedish personnummer, the Finnish personal identity code, the Baltic personal code, or a pseudonymised CPR alias for MitID. No live eID shares an address or a portrait.
See digital ID wallets
02 · Documents for everyone else

One workflow, with a document route for everyone else.

Not everyone has an eID, and many customers live where none is live yet. Set the fallback per country and the same session moves to a document check: 14,000+ document types, chip (NFC) reading of e-passports and eID cards for $0.15, passive liveness and face match. A full KYC (know your customer) check with a document costs $0.33.
See NFC Verification
03 · Signed data

Signed data you can act on.

Every eID result lands in a wallet_verification object on the session: the scheme, the issuing country, the level of assurance, the attributes and signature_valid. If a scheme returns a weaker level than the one you requested, the sign-in fails instead of quietly downgrading. Only completed sign-ins are billed. Cancelled, timed-out and failed ones are free.
See ID Verification
04 · Age checks

Prove age from a signed date of birth.

An eID sign-in returns a date of birth signed by the scheme, so it proves age without a document photo. For high volume, a recommended design is age estimation first, at $0.10 per check with passive liveness, and an eID or document check only for borderline results.
See age verification
05 · AML in the same flow

Screen the person you just verified.

Add AML (anti-money laundering) screening after the eID step and the verified name and date of birth go straight into sanctions, PEP (politically exposed person) and watchlist checks across 1,300+ lists, for $0.20 per check. Ongoing monitoring re-screens every day for $0.07 per person per year. A possible match goes to your reviewer.
See AML Screening
06 · More schemes

More schemes on the way, and the EUDI Wallet.

iDIN, the German eID card, Freja eID, the Estonian ID card, eParaksts, BankID Norway, Vipps, Buypass, itsme, OneID, ConnectID, UAE PASS, gov.br, GOV.UK Wallet, Bank iD, MojeID, Diia, FranceConnect and Auðkenni are on our roadmap, and EUDI Wallet (EU Digital Identity Wallet) acceptance is coming soon. For any other scheme, talk to us: Didit adds schemes on request, and the document route already works in that country.
See the EUDI Wallet page
eID coverage

Every national eID, country by country.

The national and bank eIDs across Europe and the main digital ID schemes elsewhere: what each asks of the user, its level of assurance and what it returns. Status and prices come from Didit's live wallet catalog.

136 of 136 schemes

MitID

Country

  • Denmark

Didit status

Live

Level of assurance

Substantial, High · EU-notified

What the user does

Approves in the eID app

Data returned to you

Name, date of birth, pseudonymised CPR alias, level of assurance, signature check

Price per sign-in

$0.25

Mobile-ID

Country

  • Estonia

Didit status

Live

Level of assurance

High · EU-notified

What the user does

Confirms a code on the phone

Data returned to you

Name, date of birth, personal code, signature check

Price per sign-in

$0.20

Smart-ID

Country

  • Estonia

Didit status

Live

Level of assurance

High · not EU-notified

What the user does

Confirms a code on the phone

Data returned to you

Name, date of birth, personal code, signature check

Price per sign-in

$0.20

Estonian ID card and Digi-ID

Country

  • Estonia

Didit status

Coming soon

Level of assurance

High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

Finnish Trust Network (bank IDs)

Country

  • Finland

Didit status

Live

Level of assurance

Substantial · not EU-notified

What the user does

Signs in on the scheme's page

Data returned to you

Name, date of birth, personal identity code, signature check

Price per sign-in

$0.25

FINeID citizen certificate (ID card)

Country

  • Finland

Didit status

On request

Level of assurance

High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

Mobiilivarmenne

Country

  • Finland

Didit status

On request

Level of assurance

Substantial · not EU-notified

What the user does

Confirms a code on the phone

Data returned to you

Per scheme

Price per sign-in

On request

Auðkenni (app, SIM and card)

Country

  • Iceland

Didit status

Coming soon

Level of assurance

not EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Mobile-ID

Country

  • Lithuania

Didit status

Live

Level of assurance

High · not EU-notified

What the user does

Confirms a code on the phone

Data returned to you

Name, date of birth, personal code, signature check

Price per sign-in

$0.20

Smart-ID

Country

  • Lithuania

Didit status

Live

Level of assurance

High · not EU-notified

What the user does

Confirms a code on the phone

Data returned to you

Name, date of birth, personal code, signature check

Price per sign-in

$0.20

Asmens tapatybės kortelė (identity card)

Country

  • Lithuania

Didit status

On request

Level of assurance

High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

Smart-ID

Country

  • Latvia

Didit status

Live

Level of assurance

not EU-notified

What the user does

Confirms a code on the phone

Data returned to you

Name, date of birth, personal code, signature check

Price per sign-in

$0.20

eParaksts mobile

Country

  • Latvia

Didit status

Coming soon

Level of assurance

Substantial, High · EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

eID karte (identity card)

Country

  • Latvia

Didit status

On request

Level of assurance

Substantial, High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

eParaksts karte

Country

  • Latvia

Didit status

On request

Level of assurance

Substantial, High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

BankID (Norway)

Country

  • Norway

Didit status

Coming soon

Level of assurance

High · EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Buypass ID

Country

  • Norway

Didit status

Coming soon

Level of assurance

High · EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Vipps

Country

  • Norway

Didit status

Coming soon

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Commfides eID

Country

  • Norway

Didit status

On request

Level of assurance

High · not EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

MinID

Country

  • Norway

Didit status

On request

Level of assurance

Substantial · not EU-notified

What the user does

Password plus a one-time code

Data returned to you

Per scheme

Price per sign-in

On request

BankID Sweden

Country

  • Sweden

Didit status

Live

Level of assurance

Substantial · EU-notified

What the user does

Approves in the eID app

Data returned to you

Name, date of birth, personnummer, signature check

Price per sign-in

$0.20

Freja eID

Country

  • Sweden

Didit status

Coming soon

Level of assurance

Substantial · EU-notified (Freja+ via ATG agent route only)

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

SverigeID

Not launched yet

Country

  • Sweden

Didit status

On request

Level of assurance

not EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

ID Austria

Country

  • Austria

Didit status

On request

Level of assurance

High · EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Smart-ID

Country

  • Belgium

Didit status

Live

Level of assurance

High · not EU-notified

What the user does

Confirms a code on the phone

Data returned to you

Name, date of birth, personal code, signature check

Price per sign-in

$0.20

itsme

Country

  • Belgium

Didit status

Coming soon

Level of assurance

High · EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Belgian eID card

Country

  • Belgium

Didit status

On request

Level of assurance

High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

MyGov.be key

Country

  • Belgium

Didit status

On request

Level of assurance

not EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Swiss E-ID (swiyu)

Not launched yet

Country

  • Switzerland

Didit status

On request

Level of assurance

not EU-notified

What the user does

Scans a QR code with the app

Data returned to you

Per scheme

Price per sign-in

On request

SwissID

Country

  • Switzerland

Didit status

On request

Level of assurance

not EU-notified

What the user does

Password plus a one-time code

Data returned to you

Per scheme

Price per sign-in

On request

Online-Ausweisfunktion (Personalausweis)

Country

  • Germany

Didit status

Coming soon

Level of assurance

High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

d-you

Not launched yet

Country

  • Germany

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

FranceConnect

Country

  • France

Didit status

Coming soon

Level of assurance

Not stated

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

France Identité

Country

  • France

Didit status

On request

Level of assurance

High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

L'Identité Numérique La Poste

Country

  • France

Didit status

On request

Level of assurance

Substantial · EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

eID.li

Country

  • Liechtenstein

Didit status

On request

Level of assurance

Substantial, High · EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

itsme

Country

  • Luxembourg

Didit status

Coming soon

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Luxembourg eID card

Country

  • Luxembourg

Didit status

On request

Level of assurance

High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

LuxTrust

Country

  • Luxembourg

Didit status

On request

Level of assurance

not EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

iDIN

Country

  • Netherlands

Didit status

Coming soon

Level of assurance

not EU-notified

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

itsme

Country

  • Netherlands

Didit status

Coming soon

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

DigiD

Country

  • Netherlands

Didit status

On request

Level of assurance

Substantial, High · EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

eHerkenning (business login)

Country

  • Netherlands

Didit status

On request

Level of assurance

Substantial, High · EU-notified

What the user does

Password plus a one-time code

Data returned to you

Per scheme

Price per sign-in

On request

Yivi

Country

  • Netherlands

Didit status

On request

Level of assurance

not EU-notified

What the user does

Scans a QR code with the app

Data returned to you

Per scheme

Price per sign-in

On request

GOV.UK Wallet

Country

  • United Kingdom

Didit status

Coming soon

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

OneID

Country

  • United Kingdom

Didit status

Coming soon

Level of assurance

Not stated

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

GOV.UK One Login

Country

  • United Kingdom

Didit status

On request

Level of assurance

not EU-notified · GPG 45 medium

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

Government Digital Wallet

Not launched yet

Country

  • Ireland

Didit status

On request

Level of assurance

not EU-notified

What the user does

Scans a QR code with the app

Data returned to you

Per scheme

Price per sign-in

On request

MyGovID

Country

  • Ireland

Didit status

On request

Level of assurance

not EU-notified · SAFE 2

What the user does

Password plus a one-time code

Data returned to you

Per scheme

Price per sign-in

On request

Digital Identity (IdentiTek)

Not launched yet

Country

  • Albania

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

e-Albania

Country

  • Albania

Didit status

On request

Level of assurance

not EU-notified

What the user does

Password plus a one-time code

Data returned to you

Per scheme

Price per sign-in

On request

B-Trust Mobile

Country

  • Bulgaria

Didit status

On request

Level of assurance

not EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

eAuth

Country

  • Bulgaria

Didit status

On request

Level of assurance

not EU-notified

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

Electronic identity certificate (identity card)

Not launched yet

Country

  • Bulgaria

Didit status

On request

Level of assurance

not EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

Evrotrust eID

Country

  • Bulgaria

Didit status

On request

Level of assurance

Substantial, High · EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Cyprus national eID

Country

  • Cyprus

Didit status

On request

Level of assurance

High · EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Bank iD

Country

  • Czechia

Didit status

Coming soon

Level of assurance

not EU-notified

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

MojeID

Country

  • Czechia

Didit status

Coming soon

Level of assurance

Low, Substantial, High · EU-notified

What the user does

Password plus a one-time code

Data returned to you

Per scheme

Price per sign-in

On request

eDoklady

Country

  • Czechia

Didit status

On request

Level of assurance

not EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

eObčanka (identity card)

Country

  • Czechia

Didit status

On request

Level of assurance

High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

Identita občana (NIA)

Country

  • Czechia

Didit status

On request

Level of assurance

Not stated

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

Mobilní klíč eGovernmentu

Country

  • Czechia

Didit status

On request

Level of assurance

Low, Substantial, High · EU-notified

What the user does

Scans a QR code with the app

Data returned to you

Per scheme

Price per sign-in

On request

Cartera Digital Beta

Not launched yet

Country

  • Spain

Didit status

On request

Level of assurance

not EU-notified

What the user does

Scans a QR code with the app

Data returned to you

Per scheme

Price per sign-in

On request

Cl@ve

Country

  • Spain

Didit status

On request

Level of assurance

not EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

DNIe (DNI 3.0 and 4.0)

Country

  • Spain

Didit status

On request

Level of assurance

High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

MiDNI

Country

  • Spain

Didit status

On request

Level of assurance

not EU-notified

What the user does

Scans a QR code with the app

Data returned to you

Per scheme

Price per sign-in

On request

Gov.gr Wallet

Country

  • Greece

Didit status

On request

Level of assurance

not EU-notified

What the user does

Scans a QR code with the app

Data returned to you

Per scheme

Price per sign-in

On request

TAXISnet credentials

Country

  • Greece

Didit status

On request

Level of assurance

not EU-notified

What the user does

Password plus a one-time code

Data returned to you

Per scheme

Price per sign-in

On request

Certilia mobile.ID

Country

  • Croatia

Didit status

On request

Level of assurance

not EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

eOI (identity card)

Country

  • Croatia

Didit status

On request

Level of assurance

High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

NIAS (e-Građani)

Country

  • Croatia

Didit status

On request

Level of assurance

not EU-notified (uses eOI, which is EU-notified at High)

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

DÁP (Digitális Állampolgárság)

Country

  • Hungary

Didit status

On request

Level of assurance

not EU-notified

What the user does

Scans a QR code with the app

Data returned to you

Per scheme

Price per sign-in

On request

Ügyfélkapu+

Country

  • Hungary

Didit status

On request

Level of assurance

not EU-notified

What the user does

Password plus a one-time code

Data returned to you

Per scheme

Price per sign-in

On request

CIE and CieID

Country

  • Italy

Didit status

On request

Level of assurance

Low, Substantial, High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

IT-Wallet

Country

  • Italy

Didit status

On request

Level of assurance

not EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

SPID

Country

  • Italy

Didit status

On request

Level of assurance

Low, Substantial, High · EU-notified

What the user does

Password plus a one-time code

Data returned to you

Per scheme

Price per sign-in

On request

Carte de identitate (identity card)

Country

  • Moldova

Didit status

On request

Level of assurance

not EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

EVO

Country

  • Moldova

Didit status

On request

Level of assurance

not EU-notified

What the user does

Scans a QR code with the app

Data returned to you

Per scheme

Price per sign-in

On request

EVOSign

Country

  • Moldova

Didit status

On request

Level of assurance

not EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

MPass

Country

  • Moldova

Didit status

On request

Level of assurance

not EU-notified

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

Semnătura Mobilă

Country

  • Moldova

Didit status

On request

Level of assurance

not EU-notified

What the user does

Confirms a code on the phone

Data returned to you

Per scheme

Price per sign-in

On request

Evrotrust eID

Country

  • North Macedonia

Didit status

On request

Level of assurance

High · not EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

m.Uslugi

Not launched yet

Country

  • North Macedonia

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

OneID (KIBS)

Country

  • North Macedonia

Didit status

On request

Level of assurance

High · not EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

uslugi.gov.mk eID

Country

  • North Macedonia

Didit status

On request

Level of assurance

not EU-notified

What the user does

Password plus a one-time code

Data returned to you

Per scheme

Price per sign-in

On request

Maltese e-ID

Country

  • Malta

Didit status

On request

Level of assurance

High · EU-notified (eID card and e-residence documents only)

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

e-dowód (identity card)

Country

  • Poland

Didit status

On request

Level of assurance

Substantial, High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

login.gov.pl

Country

  • Poland

Didit status

On request

Level of assurance

Not stated

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

mObywatel

Country

  • Poland

Didit status

On request

Level of assurance

not EU-notified

What the user does

Scans a QR code with the app

Data returned to you

Per scheme

Price per sign-in

On request

Profil Zaufany

Country

  • Poland

Didit status

On request

Level of assurance

Substantial, High · EU-notified

What the user does

Password plus a one-time code

Data returned to you

Per scheme

Price per sign-in

On request

Autenticação.gov

Country

  • Portugal

Didit status

On request

Level of assurance

Not stated

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

Cartão de Cidadão

Country

  • Portugal

Didit status

On request

Level of assurance

High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

Chave Móvel Digital

Country

  • Portugal

Didit status

On request

Level of assurance

High · EU-notified

What the user does

Confirms a code on the phone

Data returned to you

Per scheme

Price per sign-in

On request

Carte electronică de identitate

Country

  • Romania

Didit status

On request

Level of assurance

not EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

ROeID

Country

  • Romania

Didit status

On request

Level of assurance

Substantial · EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

eID.gov.rs (ConsentID)

Country

  • Serbia

Didit status

On request

Level of assurance

High · not EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Lična karta (identity card)

Country

  • Serbia

Didit status

On request

Level of assurance

High · not EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

eOI and eOsebna

Country

  • Slovenia

Didit status

On request

Level of assurance

High · EU-notified (ID card only)

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

SI-PASS

Country

  • Slovenia

Didit status

On request

Level of assurance

Not stated

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

eID karta (identity card)

Country

  • Slovakia

Didit status

On request

Level of assurance

High · EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

MeID

Country

  • Slovakia

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Slovensko v mobile

Country

  • Slovakia

Didit status

On request

Level of assurance

Not stated

What the user does

Scans a QR code with the app

Data returned to you

Per scheme

Price per sign-in

On request

e-Devlet

Country

  • Türkiye

Didit status

On request

Level of assurance

not EU-notified

What the user does

Password plus a one-time code

Data returned to you

Per scheme

Price per sign-in

On request

T.C. Kimlik Kartı (identity card)

Country

  • Türkiye

Didit status

On request

Level of assurance

not EU-notified

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

Diia

Country

  • Ukraine

Didit status

Coming soon

Level of assurance

not EU-notified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

BankID NBU

Country

  • Ukraine

Didit status

On request

Level of assurance

not EU-notified

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

UAE PASS

Country

  • United Arab Emirates

Didit status

Coming soon

Level of assurance

Basic, Verified

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Kuwait Mobile ID (Hawyti)

Country

  • Kuwait

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Absher

Country

  • Saudi Arabia

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Nafath

Country

  • Saudi Arabia

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

ConnectID

Country

  • Australia

Didit status

Coming soon

Level of assurance

Not stated

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

myID

Country

  • Australia

Didit status

On request

Level of assurance

Per scheme rules

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

National Online Identity Authentication

Country

  • China

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Identitas Kependudukan Digital (IKD)

Country

  • Indonesia

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Aadhaar e-KYC

Country

  • India

Didit status

On request

Level of assurance

Not stated

What the user does

Confirms a code on the phone

Data returned to you

Per scheme

Price per sign-in

On request

DigiLocker

Country

  • India

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

My Number Card (JPKI)

Country

  • Japan

Didit status

On request

Level of assurance

Not stated

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

Mobile ID

Country

  • South Korea

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

RealMe verified identity

Country

  • New Zealand

Didit status

On request

Level of assurance

Not stated

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

PhilSys (PhilID, ePhilID)

Country

  • Philippines

Didit status

On request

Level of assurance

Not stated

What the user does

Scans a QR code with the app

Data returned to you

Per scheme

Price per sign-in

On request

Singpass (Myinfo)

Country

  • Singapore

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

NDID

Country

  • Thailand

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

ThaID

Country

  • Thailand

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Mi Argentina

Country

  • Argentina

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

gov.br

Country

  • Brazil

Didit status

Coming soon

Level of assurance

Per scheme rules

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

Service d'authentification gouvernementale

Country

  • Canada

Didit status

On request

Level of assurance

Not stated

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

Llave MX

Country

  • Mexico

Didit status

On request

Level of assurance

Not stated

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

DNIe 3.0

Country

  • Peru

Didit status

On request

Level of assurance

Not stated

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

Apple Wallet Digital ID

Country

  • United States

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Google Wallet ID Pass

Country

  • United States

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

ID.me

Country

  • United States

Didit status

On request

Level of assurance

NIST IAL2

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

Login.gov

Country

  • United States

Didit status

On request

Level of assurance

Not stated

What the user does

Signs in on the scheme's page

Data returned to you

Per scheme

Price per sign-in

On request

State mobile driver's licences (mDL)

Country

  • United States

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

Cédula digital wallet

Not launched yet

Country

  • Uruguay

Didit status

On request

Level of assurance

Not stated

What the user does

Approves in the eID app

Data returned to you

Per scheme

Price per sign-in

On request

National Identification Number (NIN)

Country

  • Nigeria

Didit status

On request

Level of assurance

Not stated

What the user does

Confirms a code on the phone

Data returned to you

Per scheme

Price per sign-in

On request

Smart ID card

Country

  • South Africa

Didit status

On request

Level of assurance

Not stated

What the user does

Taps the ID card (NFC) or uses a card reader

Data returned to you

Per scheme

Price per sign-in

On request

Last reviewed: 5 October 2026. Not legal advice. The level of assurance is the scheme's own level under eIDAS (the EU regulation on electronic identification) or national rules, as the issuer or the EU list of notified schemes publishes it. Prices are per completed sign-in. For any scheme marked On request, talk to us: the document route with chip reading already works in that country.

See the flow

Three screens, no document photo.

What your customer sees with Smart-ID: pick the eID, confirm a code in the app, come back verified. MitID, BankID and Finnish Trust Network hand off to the app on the same phone, or show a QR code on desktop.
  1. 01

    Choose your eID

    The chooser lists the eIDs you accept for the user's country, with their official marks.

  2. 02

    Approve in the app

    The user checks that the code matches, then confirms with their PIN in the eID app. Didit never sees the PIN.

  3. 03

    Verified

    The flow returns the user to you, and the signed result arrives by webhook.

Integrate

Turn eIDs on. Read the signed result.

Enable eIDs per country in the workflow, with the document route as the fallback, then read the signed result from the session decision or the webhook.
POST /v3/workflows/Enable eIDs
{
  "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" }
          }
        }
      }
    }
  ]
}
201Created{ "uuid": "…" }
Providers is an accept-list, not a ranking. A wallet that is not live in that country rejects the save.docs
GET /v3/session/{id}/decision/Signed result
{
  "node_id": "ocr",
  "status": "Approved",
  "verification_method": "wallet",
  "assurance": "cryptographic",
  "wallet_provider": "mitid",
  "wallet_verification": {
    "provider": "mitid",
    "issuing_country": "DNK",
    "level_of_assurance": "substantial",
    "signature_valid": true,
    "attributes": {
      "full_name": "Freja Nielsen",
      "date_of_birth": "1988-03-02",
      "cpr_alias": "b0f1c2d3-e4f5-4678-9abc-def012345678"
    },
    "portrait": null
  }
}
200OKid_verifications[0]
Check signature_valid and level_of_assurance before you rely on the attributes.docs
Agent-ready integration

Ship eID verification in one prompt.

Copy this prompt into your coding agent and describe your stack. It covers the workflow config per country, the session call, the signed webhook, the wallet_verification result and billing.
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

Open a new country in one click. We do the hard work.

We open the local subsidiaries, secure the licenses, run the penetration tests, earn the certifications, and align with every new regulation. To ship verifications in a new country, flip a toggle. 220+ countries live, audited and pen-tested every quarter, the only identity provider an EU member-state government has formally called safer than in-person verification.
Read the security & compliance dossier
SOC 2 · Type II — AICPA · 2026
SOC 2 · Type I — AICPA · 2026
ISO/IEC 27001 — Information security · 2026
EU financial sandbox — Tesoro · SEPBLAC · BdE
FIDO Alliance — Associate member · 2026
iBeta Level 1 PAD — NIST / NIAP · 2026
GDPR — EU 2016/679
HIPAA — 45 CFR §160 · §164
DORA — EU 2022/2554
MiCA — EU 2023/1114
EBA remote onboarding — EBA/GL/2022/15
AMLD6 · eIDAS 2.0 — EU-aligned by design
Jugendschutz geprüft — FSM · JMStV §4(2) · 2026

Proof numbers

Proof numbers
  • 3,000+
    Companies in production
  • 5
    National eIDs live
  • 220+
    Countries and territories with the document route
  • 14,000+
    Document types supported
Three tiers, one price list

Start free. Pay as you go. Scale to Enterprise.

500 free verifications every month, forever. Then pay only when a module runs. Custom contracts, data residency, and service level agreements (SLAs) on Enterprise.

Free

$0/ month · no card

For building, testing, and your first users.

Everything you need to start:
  • 500 full KYC verifications every month
  • ID, liveness, face match, device & IP
  • 200+ fraud signals, blocklist, duplicates
  • Reusable KYC across the Didit network
  • Workflow builder, case management, SDKs
  • AI support In-console AI agent, docs, and community.
Most popular

Pay as you go

$0.33per full KYC

25+ modules, publicly priced. Automatic volume discounts.

Everything in Free, plus:
  • AML screening and monitoring from $0.07
  • Business registry pricing by country and data tier
  • Transaction monitoring at $0.02 each
  • Wallet screening at $0.15 per check
  • White-label flow under your own brand
  • AI support In-console AI agent, docs, and community.

Enterprise

Customannual contract

For large volumes and regulated programs.

Everything in Pay as you go, plus:
  • Annual contracts, committed-volume pricing
  • Custom legal terms and a 99.99% uptime SLA
  • Data residency, retention, security review
  • Manual reviewers on demand
  • Reseller and white-label terms
  • Priority human support 24/7 shared Slack channel, named success manager.

Volume discounts apply automatically as usage grows — no negotiation, no sales call.

FAQ

eID verification questions, answered

Last reviewed: 5 October 2026. Not legal advice.
What is Didit?

Didit is infrastructure for identity and fraud, the platform we wished existed when we were building products ourselves: open, flexible, and developer-friendly, so it works as a real part of your stack instead of a black box you integrate around.

One API covers verifying people (KYC, know your customer), verifying businesses (KYB, know your business), screening crypto wallets (KYT, know your transaction), and monitoring transactions in real time, on a stack built to be:

  • Fast, sub-2-second p99 on every session
  • Reliable, in production with 3,000+ companies across 220+ countries
  • Secure, SOC 2 Type 1 & Type 2, ISO 27001, GDPR-native, and formally attested by Spain's financial regulator as safer than verifying someone in person

The footprint underneath: 14,000+ document types in 48+ languages, 1,000+ data sources, and 200+ fraud signals on every session. The Didit infrastructure dynamically learns from every session and gets better every day.

What is eID verification?

eID verification (electronic identification) means checking who someone is through a digital identity they already hold, issued or approved by a government or a bank, instead of asking for a photo of a document. The person signs in with their national eID, approves sharing their data in the eID app, and the scheme sends back their identity attributes with a digital signature.

For a business, the difference is what you receive. A document check gives you an image that has to be analysed. An eID sign-in gives you data the issuer has already verified and signed: name, date of birth, a scheme identifier (for example the Swedish personnummer; MitID returns a pseudonymised identifier) and the level of assurance.

Didit runs eID sign-ins inside the ID Verification step of a workflow. Five national eIDs are live today (MitID, BankID Sweden, Finnish Trust Network, Smart-ID and Mobile-ID), and anyone without one finishes with a document check in the same session. The coverage table on this page lists every scheme by country.

Which eIDs does Didit support today?

Five national eIDs are live in production, across seven countries:

  • MitID in Denmark
  • BankID in Sweden
  • Finnish Trust Network (the Finnish bank IDs) in Finland
  • Smart-ID in Estonia, Latvia, Lithuania and Belgium
  • Mobile-ID in Estonia and Lithuania

More are coming soon: iDIN, the German eID card (Personalausweis), Freja eID, the Estonian ID card, eParaksts, BankID Norway, Vipps, Buypass, itsme, OneID, ConnectID, UAE PASS, gov.br, GOV.UK Wallet, Bank iD, MojeID, Diia, FranceConnect and Auðkenni, plus EUDI Wallet acceptance. You can see coming-soon eIDs in the console, but you cannot switch them on until they go live.

For every other scheme in the coverage table, talk to us: Didit adds schemes on request, and the document route with chip reading already works in those countries.

What data do I receive from an eID sign-in?

You receive the attributes the scheme signs, normalised onto the session. Every live eID returns a full name and a date of birth, plus the scheme's own identifier:

  • BankID Sweden: the Swedish personnummer
  • Finnish Trust Network: the Finnish personal identity code
  • Smart-ID and Mobile-ID: the Baltic personal identification code
  • MitID: a pseudonymised CPR alias, not the CPR number

Each result also records the level of assurance the scheme asserted and signature_valid, Didit's check of the signed assertion. No live eID returns an address or a portrait, so add liveness and face match steps if your policy needs a selfie, and a second source if it needs an address.

In the API, the result sits in wallet_verification on the ID Verification entry of the decision, with verification_method set to wallet.

What is a level of assurance, and which one do I need?

A level of assurance (LoA) says how much confidence an eID gives that the person is who they claim to be. The EU eIDAS Regulation on electronic identification defines three levels: low, substantial and high. Each scheme's level comes from the EU list of notified schemes or from the scheme's own rules, and many national schemes are not EU-notified at all.

Which level you need depends on the rules you follow, not on Didit. For example, AMLR (the EU Anti-Money Laundering Regulation) accepts electronic identification at substantial or high for customer checks.

Didit records the level each sign-in actually asserted in wallet_verification.level_of_assurance. If a scheme returns a weaker level than the one requested, the sign-in fails rather than quietly downgrading. Didit labels MitID, BankID Sweden and Finnish Trust Network sign-ins substantial, and Smart-ID and Mobile-ID sign-ins high.

Is eID verification enough for KYC under AMLR?

For the identity part, it can be. Article 22(6) of AMLR (Regulation (EU) 2024/1624, which applies from 10 July 2027) allows obliged entities to verify a customer's identity with an identity document or with electronic identification under eIDAS. The final draft standards on customer due diligence from AMLA (the EU Anti-Money Laundering Authority), dated 30 September 2026, treat eID as the default remote route and document-based remote verification as a justified alternative. They are a final draft sent to the Commission, not law.

Identity verification is one part of KYC (know your customer). You still need sanctions and PEP screening, beneficial owners for companies, ongoing monitoring and records, and the decisions stay with you. Didit runs those checks in the same workflow, with AML screening at $0.20 per check and ongoing monitoring at $0.07 per person per year.

This is not legal advice. The AMLR page maps each article to what Didit provides.

What happens if the user has no eID?

They finish with a document check in the same session. For each country, you choose what happens when an eID sign-in is cancelled, times out or fails: fall back to document capture or decline.

The document route covers 14,000+ document types in 220+ countries and territories. It captures the ID, reads the chip (NFC) of e-passports and eID cards in the native SDKs, runs passive liveness and matches the face to the document portrait. A full KYC check with a document, liveness, face match and device and IP analysis costs $0.33.

Because the fallback is part of the workflow, your integration does not change: you create one session, and the result tells you which route the person took (verification_method is wallet or document). Only a completed eID sign-in is billed as an eID check, and a fallback is billed as its own document check.

Can I use an eID to verify age?

Yes. An eID sign-in returns a date of birth signed by the scheme, so it proves age without asking for a document photo.

For high volume, a recommended design is age estimation first: a selfie estimates age for $0.10 per check, with passive liveness included, and a mean absolute error of 3.5 years overall and 1.5 years under 18. Clear passes and clear fails end there, and only borderline results go on to a stronger check, an eID sign-in or a document check.

Regulators treat these methods differently. In the UK, Ofcom lists both facial age estimation and digital ID among highly effective methods. In the EU, the guidelines under the Digital Services Act (DSA) treat estimation for 18+ content as a temporary bridge and favour the EU age verification app or the EUDI Wallet. The age verification page covers the rules by country.

How much does eID verification cost?

eID sign-ins are priced per scheme, per completed sign-in. The coverage table on this page shows the current published price for each live eID, read from the same price data as the pricing page. Schemes marked On request are quoted individually.

You only pay when a sign-in completes. Cancelled, timed-out, refused and failed sign-ins are free, and repeated callbacks or status checks never create another charge. eID checks are not part of the free document tier.

The rest of the workflow is billed per check at published prices: a full KYC check with a document costs $0.33, NFC chip reading $0.15, age estimation $0.10, AML screening $0.20 and ongoing monitoring $0.07 per person per year. A document fallback is billed as its own document check. You can create an account and test in a sandbox before you commit to anything.

Do I need a contract with each eID scheme or bank?

No, not for the live schemes. Didit holds the scheme connections for MitID, BankID Sweden, Finnish Trust Network, Smart-ID and Mobile-ID, so you do not sign a separate agreement with each scheme, bank or certificate provider to accept them. You enable the eIDs in your workflow and pay Didit per completed sign-in.

The chooser and comparison-code screens inherit your session branding and custom domain, so the user stays in your flow. The scheme still shows its own app and its own consent step, because that is where the person approves sharing their data.

Some schemes have their own rules on who may accept them; a few government logins are open to public services only. For any scheme that is not live yet, talk to us about what it requires and how Didit can connect it.

How is eID different from NFC chip reading of an ID card?

Both rely on cryptography, but they prove different things. NFC chip reading uses the phone to read the chip inside an e-passport or eID card and checks the issuer's signature on that data, which shows the document is genuine and unaltered. It still needs liveness and a face match to show the person holding it is its owner. In Didit it runs in the native iOS and Android SDKs for $0.15.

An eID sign-in shows the person controls their national digital identity: they approve in their eID app with their PIN or biometrics, and the scheme signs their attributes. No document is involved, and the live eIDs share no portrait.

The two work well together. Offer the eID where one is live, and fall back to document capture with chip reading for everyone else, country by country, in the same workflow.

What about the EUDI Wallet?

The EUDI Wallet (EU Digital Identity Wallet) is the wallet every EU Member State must offer by 24 December 2026 under eIDAS 2 (Regulation (EU) 2024/1183). Private businesses that are legally or contractually required to use strong user authentication must accept it at the user's request by 24 December 2027. Micro and small enterprises are exempt. That deadline is 36 months after the first implementing acts entered into force on 24 December 2024, so by 24 December 2027.

Italy's IT-Wallet and Denmark's AltID are the most advanced national apps, and Germany's wallet app is due early 2027.

EUDI Wallet acceptance is coming soon in Didit: our wallet catalog lists it for 30 EEA countries, on the same workflow as the national eIDs. Until then, the live national eIDs and the document route cover your customers. The EUDI Wallet page explains what accepting it involves for a business.

Can you add an eID scheme that is not listed?

Yes. Didit adds schemes on request, so tell us which national eID, bank ID or government login your customers use, and in which countries. We look at what the scheme requires from a business that accepts it (some are open to private companies, some only to public services) and what it returns, and come back to you with what it takes to connect it.

In the meantime, nothing stops you from going live in that country. The document route works there today: document capture across 14,000+ document types, chip (NFC) reading of e-passports and eID cards, passive liveness and face match, plus AML screening across 1,300+ lists.

When the scheme goes live, you tick it in the workflow for that country and your integration stays the same. Use Talk to us to start.

How fast can we go live with eID verification?

You can test the same day. Create an account at business.didit.me, open your workflow, and in the ID Verification step go to Countries, pick a country and tick the eIDs under Wallets accepted. Set the fallback, then save and publish.

The fastest path is the hosted flow: create a session with one API call (POST /v3/session/) and redirect the user to the URL it returns. Didit shows the eID chooser, hands off to the eID app and sends the signed result to your webhook. If you prefer to keep users inside your app, the Web, iOS, Android, React Native and Flutter SDKs open the same flow.

Test with a sandbox application first, then switch to your live application. The integration prompt on this page lets a coding agent build the whole flow for you.

Infrastructure for identity and fraud.

One API for KYC, KYB, Transaction Monitoring, and Wallet Screening. Integrate in 5 minutes.

Ask an AI to summarise this page