Kila Nchi Mwanachama wa EU lazima itoe EU Digital Identity (EUDI) Wallet ifikapo Desemba 24, 2026, na biashara zinazodhibitiwa lazima ziikubali ifikapo Desemba 24, 2027. Didit inaendesha vitambulisho vitano vya kielektroniki vya kitaifa (eIDs) leo, na kukubalika kwa EUDI Wallet kunakuja hivi karibuni kwenye mtiririko huo huo wa kazi.
EUDI Wallet ni programu isiyolipishwa ambayo kila Nchi Mwanachama wa EU lazima itoe chini ya Kanuni (EU) 2024/1183, inayojulikana kama eIDAS 2. Inashikilia data ya utambulisho wa mtu (PID), ikimaanisha jina, tarehe na mahali pa kuzaliwa na utaifa, pamoja na uthibitisho wa kielektroniki wa sifa kama vile leseni ya udereva au diploma. Kuitumia ni hiari.
Wakati biashara inaomba data, mtu huona ni nani anaomba na anashiriki sifa zilizoombwa tu. Hii inaitwa ufichuzi teule: tovuti inaweza kujua kwamba mtu ana umri wa zaidi ya miaka 18 bila kuona tarehe ya kuzaliwa. Wallet inafanya kazi katika kiwango cha uhakikisho cha juu, chenye nguvu zaidi kati ya viwango vitatu vya eIDAS, na biashara huangalia saini ya mtoaji kabla ya kutegemea data.
Iliyopitiwa mwisho: Oktoba 5, 2026. Sio ushauri wa kisheria.
Tarehe muhimu
Wallets kufikia mwisho wa 2026. Kukubalika ifikapo Desemba 24, 2027.
Hizi ndizo tarehe katika Kanuni (EU) 2024/1183 na vitendo vyake vya utekelezaji ambavyo biashara inapaswa kupanga kuzunguka.
Aprili 30, 2024
eIDAS 2 imechapishwa
Kanuni (EU) 2024/1183, ambayo inarekebisha Kanuni ya eIDAS (EU) Na 910/2014, inaonekana katika Jarida Rasmi la EU. Inaingia kazini siku ya ishirini baada ya kuchapishwa.
Desemba 24, 2024
Sheria za kwanza za wallet zimeanza kutumika
Kanuni tano za kwanza za utekelezaji wa wallet zinaanza kutumika: data ya utambulisho wa mtu, kazi za msingi, arifa, uthibitisho, na itifaki na violesura. Zinaanza saa za miezi 24 na miezi 36 hapa chini.
Julai 15, 2026
Sheria za Wallet zimesasishwa
Tume inapitisha Kanuni ya Utekelezaji (EU) 2026/1731. Inaweka fomati mbili za sifa, SD-JWT VC na ISO/IEC mdoc, na inapanga picha ya lazima kwa 2028.
Julai 23, 2026
ARF v3.0.0
Mfumo wa Usanifu na Marejeleo (ARF), mpango wa kiufundi ambao wallets na wahusika wanaotegemea hujenga juu yake, unafikia toleo la 3.0.0.
Desemba 24, 2026
Wallets katika kila Nchi Mwanachama
Kila Nchi Mwanachama lazima itoe angalau EUDI Wallet moja. Sheria za kusajili wahusika wanaotegemea, Kanuni ya Utekelezaji (EU) 2025/848, zinatumika kuanzia siku hiyo hiyo.
Desemba 24, 2027
Biashara za kibinafsi lazima ziikubali
Biashara za kibinafsi ambazo lazima zitumie uthibitishaji thabiti wa mtumiaji kwa sheria au kwa mkataba, isipokuwa biashara ndogo sana na ndogo, lazima ziikubali wallet wakati mtumiaji anaomba kuitumia (Kifungu cha 5f(2)). Tarehe hiyo ya mwisho ni miezi 36 baada ya vitendo vya kwanza vya utekelezaji kuanza kutumika mnamo Desemba 24, 2024, yaani kufikia Desemba 24, 2027.
Agosti 11, 2028
Picha na ukaguzi wa usajili
Picha inakuwa sehemu ya data ya utambulisho wa mtu ya lazima, na wallets lazima zithibitishe na kuhalalisha cheti cha usajili cha kila chama kinachotegemea.
Nani lazima akubali
Nani anapaswa kukubali wallet, na lini.
Kifungu cha 5f cha Kanuni ya eIDAS, kama ilivyorekebishwa na Kanuni (EU) 2024/1183, kinaweka majukumu ya kukubalika. Katika kila kesi mtumiaji anachagua kutumia wallet, na unaendelea na njia zako zingine za kutambua watu.
Nani
Maana yake, kwa lugha rahisi
Kifungu ยท tarehe
Nani
Taasisi za sekta ya umma
Maana yake, kwa lugha rahisi
Pale ambapo Nchi Mwanachama inahitaji utambulisho wa kielektroniki ili kufikia huduma ya umma mtandaoni, huduma hiyo lazima pia ikubali EUDI Wallet.
Kifungu ยท tarehe
Kifungu cha 5f(1)
Nani
Huduma za kibinafsi zinazopaswa kutumia uthibitishaji thabiti wa mtumiaji
Maana yake, kwa lugha rahisi
Ikiwa sheria au mkataba unakuhitaji kutumia uthibitishaji thabiti wa mtumiaji kwa utambulisho mtandaoni, lazima pia ukubali EUDI Wallet. Kichocheo ni hitaji hilo, si sekta yako.
Kifungu ยท tarehe
Kifungu cha 5f(2) ยท 24 Desemba 2027
Nani
Maeneo yaliyotajwa kwenye kifungu
Maana yake, kwa lugha rahisi
Usafiri, nishati, benki, huduma za kifedha, hifadhi ya jamii, afya, maji ya kunywa, huduma za posta, miundombinu ya kidijitali, elimu na mawasiliano ya simu. Kifungu kinasema โikiwemoโ, kwa hivyo orodha inatoa mifano na haijafungwa.
Kifungu ยท tarehe
Kifungu cha 5f(2)
Nani
Biashara ndogo sana na ndogo
Maana yake, kwa lugha rahisi
Zimeondolewa kwenye wajibu wa sekta binafsi, kama ilivyofafanuliwa katika Mapendekezo ya Tume 2003/361/EC. Bado zinaweza kukubali wallet ikiwa zitachagua kufanya hivyo.
Kifungu ยท tarehe
Kifungu cha 5f(2)
Nani
Kwa ombi la mtumiaji tu
Maana yake, kwa lugha rahisi
Kukubali kunafanyika wakati mtumiaji anaomba kutumia wallet. Kuitumia ni hiari kwa watu, na huduma lazima zibaki wazi kwa njia zingine za utambulisho na uthibitishaji.
Kifungu ยท tarehe
Vifungu vya 5f(2), 5a(15)
Nani
Majukwaa makubwa sana ya mtandaoni
Maana yake, kwa lugha rahisi
Majukwaa yaliyoteuliwa chini ya Sheria ya Huduma za Kidijitali yanayohitaji uthibitishaji wa mtumiaji lazima yakubali wallet kwa ombi la mtumiaji, kwa data ndogo zaidi inayohitajika na huduma. Maandishi hayaweki tarehe tofauti kwa wajibu huu.
Kifungu ยท tarehe
Kifungu cha 5f(3)
Wahusika wanaotegemea lazima pia wajisajili katika Nchi Mwanachama ambako wameanzishwa, na wanaweza kuomba data tu waliyoisajili (Kifungu cha 5b). Ilipitiwa mara ya mwisho: 5 Oktoba 2026. Siyo ushauri wa kisheria.
Jinsi biashara inavyoikubali
Jinsi mtoa huduma anavyokubali EUDI Wallet, kwa hatua tano.
Hatua 01 / 05
01
Jisajili kama mtoa huduma
Jisajili katika Nchi Mwanachama ambako umeanzishwa, na maelezo yako na data unayokusudia kuomba. Utapokea cheti cha ufikiaji, kinachokuthibitisha kwa wallet, na, ambapo Nchi Mwanachama wako inatoa, cheti cha usajili kinachoorodhesha sifa ulizojisajili.
Omba tu unachohitaji
Omba sifa maalum, kwa mfano umri zaidi ya miaka 18, kwa kutumia OpenID for Verifiable Presentations (OpenID4VP) na hoja ya Digital Credentials Query Language (DCQL), au kwa ISO/IEC 18013-7. Huwezi kuomba data zaidi ya usajili wako.
Mtumiaji anakubali kwenye wallet
Kwenye simu hiyo hiyo, kivinjari kinahamisha hadi kwenye programu ya wallet. Kwenye kompyuta, mtumiaji anachanganua msimbo wa QR. Wallet inaonyesha nani anaomba, inathibitisha kuwa hauombi zaidi ya ulichojisajili, na mtumiaji anakubali au anakataa.
Thibitisha uwasilishaji
Angalia saini ya mtoaji dhidi ya orodha zinazoaminika, angalia kuwa cheti hakijafutwa, na angalia ufungaji wa kifaa, unaoonyesha kuwa cheti hakikunakiliwa au kutumika tena.
Pokea sifa na uamue
Utapokea tu sifa ambazo mtumiaji alishiriki, zilizosainiwa na mtoaji. Uamuzi wa kuingia au kufikia, na rekodi unayohifadhi, hubaki na wewe.
Didit itafanya hatua hizi kwa ajili yako wakati kukubaliwa kwa EUDI Wallet kutakapoanza (inakuja hivi karibuni).
Unachopokea dhidi ya kile ambacho KYC bado inahitaji
Wallet inathibitisha nani mtu ni. Uchunguzi wa kina unahitaji zaidi.
Chini ya Kanuni ya Kupambana na Utakatishaji Fedha (AMLR), Kanuni (EU) 2024/1624, utambulisho wa kielektroniki katika kiwango cha uhakika cha Muhimu au cha Juu ni moja ya njia mbili za kuthibitisha utambulisho (Kifungu cha 22(6)). Haibebi kila kitu ambacho ukaguzi wa KYC unahitaji. Hapa kuna data ya utambulisho wa mtu (PID) inashikilia, na jinsi Didit inavyoshughulikia kila kipengee leo.
Mahitaji ya uchunguzi wa kina
Katika EUDI Wallet PID
Jinsi Didit inavyoishughulikia leo
Mahitaji ya uchunguzi wa kina
Majina yote kamili
AMLR Kifungu cha 22(1)(a)
Katika EUDI Wallet PID
Jina la ukoo na jina la kwanza, yote ni lazima.
Jinsi Didit inavyoishughulikia leo
eIDs za kitaifa zinazotumika hurejesha jina kamili. Njia ya hati husoma kutoka aina 14,000+ za hati.
Mahitaji ya uchunguzi wa kina
Mahali na tarehe kamili ya kuzaliwa
AMLR Kifungu cha 22(1)(a)
Katika EUDI Wallet PID
Tarehe ya kuzaliwa na mahali pa kuzaliwa, yote ni lazima.
Jinsi Didit inavyoishughulikia leo
eIDs za kitaifa zinazotumika hurejesha tarehe ya kuzaliwa. Njia ya hati husoma mahali pa kuzaliwa pale hati inapochapisha.
Mahitaji ya uchunguzi wa kina
Uraia
AMLR Kifungu cha 22(1)(a)
Katika EUDI Wallet PID
Uraia, lazima, nchi moja au zaidi.
Jinsi Didit inavyoishughulikia leo
Njia ya hati husoma uraia kutoka hati ya utambulisho au chipu yake.
Mahitaji ya uchunguzi wa kina
Namba ya kitambulisho cha kitaifa, inapohitajika
AMLR Kifungu cha 22(1)(a)
Katika EUDI Wallet PID
Namba ya utawala ya kibinafsi, si lazima. Kila Nchi Mwanachama huamua kama itaitoa.
Jinsi Didit inavyoishughulikia leo
eIDs za kitaifa zinazotumika hurejesha kitambulisho cha mfumo: personnummer ya Uswidi, msimbo wa utambulisho wa kibinafsi wa Kifini au msimbo wa kibinafsi wa Baltic. MitID hurejesha kitambulisho kilichofichwa, si namba ya CPR.
Mahitaji ya uchunguzi wa kina
Mahali pa kawaida pa kuishi
AMLR Kifungu cha 22(1)(a)
Katika EUDI Wallet PID
Sehemu za anwani si lazima na mara nyingi hazipo. Rasimu ya mwisho ya viwango vya AMLA inasema sifa zinazokosekana lazima zipatikane kupitia njia nyingine.
Jinsi Didit inavyoishughulikia leo
Hakuna eID ya kitaifa inayotumika hurejesha anwani. Uthibitisho wa Anwani huangalia bili ya huduma, taarifa ya benki au barua ya serikali.
Mahitaji ya uchunguzi wa kina
Namba ya kitambulisho cha kodi, inapopatikana
AMLR Kifungu cha 22(1)(a)
Katika EUDI Wallet PID
Si sehemu ya PID.
Jinsi Didit inavyoishughulikia leo
Ikusanye kwa hatua ya dodoso katika mtiririko huo huo wa kazi.
Mahitaji ya uchunguzi wa kina
Mtu anafanana na kitambulisho
ARF ยท kuunganisha mtumiaji
Katika EUDI Wallet PID
Picha inabaki hiari hadi itakapokuwa lazima mnamo Agosti 11, 2028.
Jinsi Didit inavyoishughulikia leo
Uhai usio na shughuli na ulinganifu wa uso wa 1:1 dhidi ya picha ya hati au picha ya chipu, ndani ya ukaguzi kamili wa KYC kwa $0.33.
Mahitaji ya uchunguzi wa kina
Wamiliki wanufaika wa kampuni
AMLR Kifungu cha 20(1)(b)
Katika EUDI Wallet PID
Si katika PID. Wallet hutambua mtu, si nani anamiliki kampuni.
Jinsi Didit inavyoishughulikia leo
Uthibitishaji wa Biashara huchota data ya rejista na wamiliki ambapo rejista inawashikilia, na ukaguzi wa kitambulisho kwa kila mmiliki.
Mahitaji ya uchunguzi wa kina
Vikwazo na watu wenye nyadhifa za kisiasa (PEPs)
AMLR Kifungu cha 20(1)(d), (g)
Katika EUDI Wallet PID
Si katika PID.
Jinsi Didit inavyoishughulikia leo
Uchunguzi wa AML dhidi ya vikwazo 1,300+, PEP na orodha za uangalizi, kwa $0.20 kwa kila ukaguzi.
Mahitaji ya uchunguzi wa kina
Madhumuni ya uhusiano na ufuatiliaji unaoendelea
AMLR Vifungu vya 25, 26
Katika EUDI Wallet PID
Si katika PID.
Jinsi Didit inavyoishughulikia leo
Dodoso hurekodi madhumuni ya uhusiano. Ufuatiliaji unaoendelea huwachunguza wateja upya kila siku kwa $0.07 kwa kila mtu kwa mwaka.
Uchunguzi wa kina wa mteja unabaki kuwa jukumu lako. Didit inatoa ukaguzi na ushahidi na haikufanyi kuwa mtiifu. AMLR inaanza kutumika kuanzia Julai 10, 2027, na viwango vya kiufundi vya AMLA ni rasimu ya mwisho iliyoandikwa Septemba 30, 2026, si sheria.
Utayari kwa nchi
Hali ya pochi za kitaifa, zenye tarehe na vyanzo.
Hiki ndicho kila nchi imechapisha, au kile chanzo kilichotajwa kinaripoti, pamoja na tarehe na kiungo kwa kila safu.
Hali kufikia 5 Oktoba 2026
Nchi
Pochi au programu
Hali
Tarehe
Kinachojulikana
Nchi
Italia
Pochi au programu
IT-Wallet (app IO)
Hali
Programu hai
Tarehe
17 Februari 2026
Kinachojulikana
Inatumika kwenye programu ya IO, ikiwa na uanzishaji milioni 10.1 na nyaraka milioni 17.3 zilizopakiwa kufikia Februari 17, 2026. Bure na hiari kwa watu wazima, wanaoingia kwa kutumia CIE au SPID.
AltID inapatikana ikiwa na kitambulisho cha kidijitali na uthibitisho wa umri, na watu 281,390 walikuwa wameiunda kufikia Agosti 4, 2026. Shirika la Serikali ya Kidijitali linatekeleza pochi kwa hatua.
Sandbox ya umma tangu Desemba 2025. Programu inatarajiwa mapema 2027, ikianza na kazi ya kitambulisho. Sheria ya utekelezaji ilisomwa kwa mara ya kwanza Bundestag mnamo Septemba 23, 2026.
Hazijaorodheshwa: Austria, Ubelgiji, Estonia, Hungaria, Latvia, Lithuania, Luxembourg, Malta, Ureno, Slovenia. Hatukupata hali yoyote ya umma kwao tarehe hii. Tunasasisha jedwali hili kadri programu za kitaifa zinavyozinduliwa.
Jinsi Didit inavyokufikisha huko ยท Safu tano
Kubali eIDs za kitaifa sasa. Ongeza EUDI Wallet baadaye.
EUDI Wallet inaongeza njia mpya; haibadilishi zingine. Unda mtiririko wa kazi mara moja: vitambulisho vya kitaifa vya kielektroniki na nyaraka leo, na kukubalika kwa EUDI Wallet katika hatua ileile ya Uthibitishaji wa Kitambulisho itakapozinduliwa.
01 ยท Vitambulisho vya kitaifa vya kielektroniki, tayari
Kubali vitambulisho vya kitaifa vya kielektroniki ambavyo wateja wako tayari wanatumia.
Vitambulisho vitano vya kitaifa vya kielektroniki viko hewani kwenye Didit katika nchi saba: MitID, BankID Sweden, Finnish Trust Network, Smart-ID na Mobile-ID. Mtumiaji huingia kwa kutumia eID yake, na kipindi kinapokea sifa zilizotiwa saini: jina kamili, tarehe ya kuzaliwa, kitambulisho cha mfumo (kwa mfano personnummer ya Uswidi; MitID hurudisha kitambulisho chenye jina bandia) na kiwango cha uhakika kilichothibitishwa na mpango. Ni uingiaji uliokamilika tu ndio unaotozwa.
Vitambulisho vya kitaifa vya kielektroniki, moja kwa moja
Kutoka kwenye orodha ya pochi
MitIDMuhimuInatumika
BankIDMuhimuInatumika
Finnish Trust NetworkMuhimuInatumika
Smart-IDJuuInatumika
Mobile-IDJuuInatumika
Viwango kama Didit inavyoviweka. Hakuna anwani au picha inayorejeshwa.
02 ยท EUDI Wallet, inakuja hivi karibuni
Kukubalika kwa EUDI Wallet, kwenye mtiririko wa kazi uleule.
Kukubalika kwa EUDI Wallet kunakuja hivi karibuni. Katalogi yetu ya wallet inaiorodhesha kwa nchi 30 za EEA, katika hatua ile ile ya Uthibitishaji wa Kitambulisho kama eIDs za kitaifa. Hakuna tarehe au bei bado.
Imesanidiwa kwa kila nchi katika mtiririko wa kazi
30
Nchi za EEA zilizoorodheshwa
SD-JWT VC ยท mdoc
Fomati za vitambulisho vya Wallet
Vitambulisho vya kitaifa vya kielektronikiInatumika
EUDI WalletInakuja hivi karibuni
Hati yenye usomaji wa chip ya NFCInatumika
Hakuna tarehe au bei ya kukubali EUDI Wallet bado.
03 ยท Njia ya hati
Njia ya hati kwa kila mtu asiye na wallet.
Sio kila mtu atakuwa na au kutumia wallet, na sheria inaweka njia zingine wazi. Njia ya hati inasoma chip katika pasipoti na vitambulisho kwa NFC ($0.15), inaendesha uhakiki wa uhai usio na shughuli na inalinganisha uso na picha ya hati, katika aina 14,000+ za hati katika nchi na maeneo 220+.
UUadilifu wa makundi ya datahashes zinalinganaIna saini
Document Signer CertificateESP ยท CSCA
Usomaji wa chip$0.152โ4 s mwanzo hadi mwisho
04 ยท Uthibitishaji wa umri
Thibitisha umri kwa data ndogo zaidi.
EUDI Wallet inaweza kuthibitisha kuwa mtu ana umri zaidi ya miaka 18 bila tarehe ya kuzaliwa. Hadi wallet zitakapokuwa za kawaida, makadirio ya umri kutoka kwa selfie yanagharimu $0.10 kwa kila ukaguzi na hutuma matokeo ya mpaka kwa uthibitishaji wa kitambulisho. Uingiaji wa eID moja kwa moja pia unarudisha tarehe ya kuzaliwa iliyotiwa saini bila picha ya hati.
Uchunguzi, ufuatiliaji na kampuni, katika sehemu moja.
Kitambulisho ni sehemu moja ya uangalifu unaostahili wa mteja. Katika mtiririko wa kazi uleule, chunguza watu dhidi ya vikwazo 1,300+, PEP na orodha za uangalizi ($0.20 kwa kila ukaguzi), wachunguze tena kila siku kwa ufuatiliaji unaoendelea ($0.07 kwa kila mtu kwa mwaka), na thibitisha kampuni na wamiliki wao.
Uwasilishaji wa vifaa mbalimbali kama ARF inavyoelezea: mtu anaanza kwenye kompyuta na kumalizia kwenye simu inayoshikilia wallet.
01Changanua ili kuendelea
Changanua msimbo wa QR
Huduma inaonyesha msimbo wa QR, na mtu anauchanganua kwa kutumia programu ya wallet.
02Duka la mtandaoni linaomba: umri zaidi ya miaka 18
Kagua ombi
Wallet inaonyesha nani anaomba na sifa gani.
03Shiriki sifa 1
Shiriki
Mtu anakubali, na sifa zilizoombwa tu ndizo zinazotoka kwenye simu.
04Imethibitishwa
Imethibitishwa
Huduma inakagua saini ya mtoaji na kuendelea. Hakuna kingine kilichoshirikiwa.
Mchoro wa mtiririko wa kawaida. Kukubalika kwa EUDI Wallet ya Didit kunakuja hivi karibuni.
Unganisha leo
Unganisha leo, na uendelee kuitumia mkoba utakapowasili.
Bado hakuna Didit API mahususi kwa EUDI. Unda kipindi kwa ajili ya mtiririko wa kazi unaokubali eIDs na hati za kitaifa zinazotumika, kisha soma matokeo. Kukubali EUDI Wallet kumepangwa kwa hatua hiyo hiyo ya Uthibitishaji wa Kitambulisho.
Nakili prompt hii kwenye coding agent yako. Inajenga mtiririko wa kazi unaoweza kuendesha leo, eIDs za kitaifa zinazotumika na hati mbadala, pamoja na simu ya kipindi na webhook iliyotiwa saini. Haijaundi endpoint ya EUDI, kwa sababu bado hakuna.
didit-integration-prompt.md
# Didit: get ready for the EUDI Wallet with the ID Verification step you run today
You are adding electronic identification to my_stack so the product is ready
for the EU Digital Identity (EUDI) Wallet. Every URL, header and enum value
below is canonical. Do not paraphrase or "improve" them.
## 0. What exists today, and what does not
- EUDI Wallet acceptance on Didit is coming soon. There is NO EUDI-specific
endpoint, wallet id, field or flag to integrate yet. Do not invent one, do
not send any EUDI identifier in a workflow, and do not build an OpenID4VP
verifier yourself as part of this task.
- What is live: national digital ID wallets inside the ID Verification step,
with document capture (chip reading, liveness, face match) as the fallback.
EUDI Wallet acceptance is planned for the same ID Verification step, so the
workflow, session call and webhook you build now are the ones you keep.
- The live wallets, as listed by the methods catalog:
- MitID: wallet id mitid, country keys DNK (Denmark)
- BankID: wallet id bankid_se, country keys SWE (Sweden)
- Finnish Trust Network: wallet id ftn, country keys FIN (Finland)
- Smart-ID: wallet id smart_id, country keys EST (Estonia), LVA (Latvia), LTU (Lithuania), BEL (Belgium)
- Mobile-ID: wallet id mobile_id, country keys EST (Estonia), LTU (Lithuania)
Check the catalog for your environment before you go live. Never
hard-code dates.
## 1. Provision an account
- Sign up: https://business.didit.me (no credit card required).
- Copy the API key of your application from the console.
## 2. Read the methods catalog
Availability is server-driven per country. Only wallets marked available can
be enabled on a live application.
- 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").
## 3. Create the workflow (ID Verification = feature OCR)
POST https://verification.didit.me/v3/workflows/
-H "x-api-key: <your-api-key>"
-H "Content-Type: application/json"
{
"workflow_label": "eID onboarding",
"features": [
{
"feature": "OCR",
"config": {
"methods": {
"DNK": {
"document": { "enabled": true },
"wallet": {
"enabled": true,
"providers": ["mitid"],
"on_failure": "fallback_to_document"
}
},
"EST": {
"document": { "enabled": true },
"wallet": {
"enabled": true,
"providers": ["smart_id", "mobile_id"],
"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:
- OCR is UPPERCASE; ID_VERIFICATION is rejected in this body (the decision
later lists the step as ID_VERIFICATION in its features)
- country keys are ISO 3166-1 alpha-3; method keys are document, id_lookup, wallet
- providers is an accept-list, not a ranking; the end user picks
- on_failure is fallback_to_document or decline
- a wallet the catalog does not mark available rejects the whole save (400)
- every other country keeps document capture, so people without an eID
can still verify
- this body runs document capture only. Chip reading, liveness and face
match are their own features: add { "feature": "NFC" },
{ "feature": "LIVENESS" } and { "feature": "FACE_MATCH" } to features
when your policy needs them
## 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.
## 5. Webhook
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).
Never hash the raw request bytes under this header.
Freshness: the signed body field timestamp is the dispatch time (Unix
seconds). 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 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. A wallet sign-in sets:
verification_method "wallet"
assurance "cryptographic"
wallet_provider the catalog wallet id the user picked
wallet_verification provider, provider_name, issuing_authority,
issuing_country, credential_type, level_of_assurance,
verified_at, signature_valid, attributes, portrait
(null for the live wallets), 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
full_name, the normalised identity fields, on the entry itself
date_of_birth
On a live application, check wallet_verification.signature_valid before you
trust attributes. The
live wallets return name, date of birth and a scheme identifier (for example
the Swedish personnummer; MitID returns a pseudonymised identifier), never an
address or a portrait: collect those through other steps if your policy
needs them.
Reference: https://docs.didit.me/core-technology/id-verification/digital-id-wallets
## 7. Billing
Only completed wallet sign-ins are billed; cancelled, timed-out and failed
ones are free. Prices per wallet: https://didit.me/pricing
## 8. 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 wallet through the hosted flow and
assert verification_method is "wallet" and wallet_provider is the wallet
you picked
- run one session with sandbox_scenario "wallet_cancelled" and assert the
flow offers document capture
- assert the 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
Inatii kwa muundo
Fungua nchi mpya kwa kubofya mara moja. Tunafanya kazi ngumu.
Tunafungua kampuni tanzu za ndani, tunapata leseni, tunafanya majaribio ya kupenya, tunapata vyeti, na tunalingana na kila kanuni mpya. Ili kusafirisha uthibitishaji katika nchi mpya, geuza swichi. Nchi 220+ ziko hewani, zinakaguliwa na kupimwa kila robo mwaka, mtoa huduma pekee wa utambulisho ambaye serikali ya nchi mwanachama wa EU imemwita rasmi kuwa salama zaidi kuliko uthibitishaji wa ana kwa ana.
Anza bure. Lipa kadri unavyotumia. Kuza hadi Enterprise.
Uthibitishaji 500 bila malipo kila mwezi, milele. Kisha lipa tu moduli inapofanya kazi. Mikataba maalum, uhifadhi wa data, na makubaliano ya kiwango cha huduma (SLAs) kwenye Enterprise.
Bure
$0/ mwezi ยท hakuna kadi
Kwa ajili ya kuunda, kujaribu, na watumiaji wako wa kwanza.
Kila kitu unachohitaji kuanzia:
Uthibitishaji kamili wa KYC 500 kila mwezi
Kitambulisho, uhai, kulinganisha uso, kifaa & IP
Ishara za udanganyifu 200+, orodha nyeusi, marudio
KYC inayoweza kutumika tena kwenye mtandao wa Didit
Mjenzi wa mtiririko wa kazi, usimamizi wa kesi, SDKs
Usaidizi wa AIAI agent ndani ya console, docs, na jumuiya.