Identidad de grado bancario tocando el chip del pasaporte electrónico.
El usuario acerca el pasaporte al teléfono. Se verifica la firma del gobierno, el retrato del chip supera a la selfie. Nivel bancario en menos de cinco segundos. $0.15 por lectura de chip.
Con la confianza de más de 2.000 organizaciones en todo el mundo.
Lo que debe una plataforma regulada
Lea el chip. Verifique la firma. Supere los escaneos de documentos.
Los datos de un chip de pasaporte electrónico están firmados criptográficamente por el país emisor.
Verificar esa cadena de firma — y hacer coincidir la selfie con el retrato de alta resolución del chip — le da la seguridad de nivel bancario de que el documento es
genuino. El flujo NFC de Didit se ejecuta en menos de cinco segundos, recurre a OCR cuando
NFC no está disponible, y se envía con SDK nativos para iOS, Android, React
Native y Flutter.
Cómo funciona
Desde el registro hasta el usuario verificado en cuatro pasos.
Paso 01
Crear el flujo de trabajo
Elija las verificaciones que desee — identificación, prueba de vida, coincidencia facial, sanciones, dirección, edad, teléfono, correo electrónico, preguntas personalizadas. Arrástrelas a un flujo en el panel de control, o publique el mismo flujo en nuestra API. Ramifique según las condiciones, ejecute pruebas A/B, no se requiere código.
Paso 02
Integrar
Incorpore de forma nativa con nuestro SDK web, iOS, Android, React Native o Flutter. Redirija a una página alojada. O simplemente envíe a su usuario un enlace — por correo electrónico, SMS, WhatsApp, en cualquier lugar. Elija lo que se adapte a su pila.
Paso 03
El usuario pasa por el flujo
Didit aloja la cámara, las señales de iluminación, la transferencia móvil y la accesibilidad. Mientras el usuario está en el flujo, puntuamos más de 200 señales de fraude en tiempo real y verificamos cada campo contra fuentes de datos autorizadas. Resultado en menos de dos segundos.
Paso 04
Recibe los resultados
Los webhooks firmados en tiempo real mantienen su base de datos sincronizada en el momento en que un usuario es aprobado, rechazado o enviado a revisión. Consulte la API bajo demanda. O abra la consola para inspeccionar cada sesión, cada señal y gestionar los casos a su manera.
Construido para nivel bancario · Con precio de infraestructura
Cinco verificaciones. $0.50 por usuario incorporado.
La lectura de chips NFC eleva la incorporación de un nivel de escaneo de documentos a un nivel bancario en un paso adicional en el teléfono del usuario. El flujo de trabajo recurre automáticamente a MRZ + OCR cuando NFC no está disponible.
El usuario lee la página visual (MRZ deriva la clave del chip), acerca el documento al teléfono y el chip devuelve el Grupo de Datos 1 (datos personales), el Grupo de Datos 2 (retrato de alta resolución), el Grupo de Datos 11 (detalles personales). $0.15 por lectura de chip. 2-4 segundos de principio a fin.
Tocar para leer el chip del pasaporte electrónico.
$0.15 per chip read
Paso 2 / 4
Sostenga el pasaporte al teléfono
Clave MRZ derivadaAutomático
BAC / PACE handshakeChip
Lectura de DG1, DG2, DG11Chip
Firma ICAO verificadaPKD
Coincidencia facial con el retrato$0.05
02 · Cadena de firma ICAO
La firma del gobierno, verificada.
La autenticación pasiva verifica el Certificado de Firmante de Documentos del chip contra la CA firmante del país a través del Directorio de Claves Públicas de la ICAO. La autenticación de chip y la autenticación activa se ejecutan donde son compatibles. Conforme a la ICAO Doc 9303.
Active Authentication (AA)Chip · RSA challengePass
Data group integrityDG1, DG2, DG11, DG13Pass
Conforme a ICAO Doc 9303 · Profundidad de incorporación de grado bancario.
03 · Coincidencia facial con el retrato del chip
Selfie comparada con el retrato del chip.
El retrato DG2 en el chip tiene una resolución mucho mayor que la foto impresa en la página visual; compararlo con la selfie en vivo es significativamente más preciso. Similitud de coseno ≥ 0.85 → Aprobado, ≥ 0.92 → nivel bancario. $0.05 por coincidencia.
Certificado iBeta Nivel 1 de Detección de Ataques de Presentación (PAD). Derrota fotos impresas, reproducciones de pantalla, máscaras de silicona y deepfakes, con una sola selfie estática, sin indicaciones de desafío. $0.10 por verificación.
Reproducción de pantallaActualización + brilloPass
Máscara de siliconaPatrones micro-cutáneosPass
Deepfake (video)Consistencia temporalPass
Una sola imagen fija · sin indicaciones de desafío.$0.10 por verificación
05 · Detección AML
Examina la identidad verificada por chip.
Sanciones, Personas Políticamente Expuestas (PEP), medios adversos en más de 1,300 listas, actualizadas diariamente, en 14 idiomas. Los aciertos abren un caso automáticamente y bloquean la incorporación antes de la autorización.
Teléfonos sin NFC, documentos sin chips o denegaciones de permiso NFC: el mismo flujo de trabajo recurre a la Verificación de ID ($0.15) con MRZ + OCR de alta precisión en la página visual. Misma URL alojada, mismo webhook, mismos estados.
200OKmatched_against chip_portrait → garantía de grado eIDAS.
El flujo de trabajo recurre a MRZ + OCR cuando NFC no está disponible.documentación →
Integración lista para el agente
Implemente la incorporación de pasaportes electrónicos NFC en una sola instrucción.
Pegue en Claude Code, Cursor, Codex, Devin, Aider o Replit Agent. Rellene su pila. El agente construye el flujo de trabajo NFC, conecta el SDK nativo, recurre a MRZ + OCR cuando NFC no está disponible y lee el webhook firmado.
didit-integration-prompt.md
You are integrating Didit's NFC e-passport reading into a regulated onboarding flow (bank, fintech, crypto exchange, eIDAS-grade public service). NFC chip reading lifts onboarding from document-scan-grade to bank-grade in one extra step on the user's phone.
Five obligations on every onboarding:
1. Read the e-passport / e-ID chip via NFC — DG1 (MRZ), DG2 (portrait), DG11 (personal details).
2. Verify the government signature chain — Passive Authentication (PA) against the ICAO Public Key Directory, Chip Authentication (CA), Active Authentication (AA).
3. Match the live selfie to the high-resolution DG2 portrait extracted from the chip.
4. Run Passive Liveness on the selfie — iBeta Level 1 anti-spoof certified, defeats printed photos, screen replays, masks, and deepfakes.
5. Screen the chip-verified identity against sanctions, Politically Exposed Persons (PEP), and adverse-media lists.
Fallback automatically when NFC is unavailable (no chip, NFC blocked by iOS or by user permission, chip damaged): the workflow drops to high-accuracy MRZ + OCR on the visual page using ID Verification.
Pricing (verified live):
- NFC Reading: $0.15 per chip read
- ID Verification (fallback or always-on belt-and-braces): $0.15 per check
- Passive Liveness: $0.10 per check
- Face Match 1:1: $0.05 per match
- AML Screening: $0.20 per check
- Bundle (NFC + Liveness + Face Match + AML): $0.50 per onboarded user when NFC succeeds; $0.50 also when the workflow falls back to ID Verification
- First 500 KYC verifications free every month, forever
PRE-REQUISITES
- Production API key from https://business.didit.me (sandbox key in 60s, no card).
- Webhook endpoint with HMAC SHA-256 verification using the X-Signature-V2 header and your webhook secret.
- A workflow_id from the Workflow Builder bundling NFC Reading + ID Verification (fallback) + Passive Liveness + Face Match 1:1 + AML Screening.
- The Didit hosted flow or the native SDKs (web SDK, iOS, Android, React Native, Flutter) — NFC chip reading requires the native NFC stack, so plain web-only deployments fall back to MRZ + OCR automatically.
STEP 1 — Create the NFC session
POST https://verification.didit.me/v3/session/
Headers:
x-api-key: <your api key>
Content-Type: application/json
Body:
{
"workflow_id": "<your nfc onboarding workflow id>",
"vendor_data": "<your user id, max 256 chars>",
"callback_url": "https://<your-app>/onboarding/kyc/callback",
"expected_country": "ES",
"metadata": {
"channel": "native_ios",
"purpose": "high_assurance_onboarding"
}
}
Response: 201 Created with the hosted session URL. Open it via the native SDK (iOS NFC requires CoreNFC entitlement) or in the hosted webview; the user taps the e-passport against the phone's NFC reader, the chip data is read in 2-4 seconds.
STEP 2 — The chip-read sequence (handled by the SDK / hosted flow)
Inside the hosted flow, in this order:
a. The user presents the data page so the device camera reads the Machine-Readable Zone (MRZ). The MRZ provides the BAC / PACE key needed to handshake with the chip.
b. The user taps the passport to the phone. PACE (preferred) or BAC handshake establishes a secure session with the chip.
c. The chip returns Data Group 1 (MRZ data — name, DOB, expiry, document number), Data Group 2 (the high-resolution portrait), and Data Group 11 (personal details where available).
d. Passive Authentication verifies the Document Signer Certificate against the country's Country Signing CA via the ICAO Public Key Directory. Chip Authentication and Active Authentication run if supported by the issuing country.
e. The user takes a single selfie (Passive Liveness, no challenge prompts).
f. The selfie is matched 1:1 against the DG2 portrait.
STEP 3 — Read the signed webhook on completion
Didit POSTs to your callback. Session statuses are Title Case With Spaces:
Body (excerpted):
{
"session_id": "<uuid>",
"vendor_data": "<your user id>",
"status": "Approved",
"nfc_verification": {
"status": "Approved",
"passive_authentication": "Approved",
"chip_authentication": "Approved",
"active_authentication": "Approved",
"data_groups_read": [1, 2, 11]
},
"id_verification": { "status": "Approved", "document_type": "passport", "country_code": "ES" },
"liveness": { "status": "Approved" },
"face": { "status": "Approved", "similarity_score": 0.94, "matched_against": "chip_portrait" },
"aml": { "status": "Approved", "hits": [] }
}
Session status enum (exact case):
Approved | Declined | In Review | Resubmitted | Expired | Not Finished | Kyc Expired | Abandoned
Verify the X-Signature-V2 header BEFORE reading the body — HMAC SHA-256 of the raw bytes with your webhook secret.
STEP 4 — Decide
Branch logic:
Approved → onboard the user with bank-grade assurance.
In Review → hold the account, wait for analyst webhook update.
Declined → refuse onboarding, log the decline reason.
Resubmitted → user updated something; re-read the decision.
When face.matched_against === "chip_portrait", you can mark the identity as eIDAS High-grade (Substantial / High depending on your local regulator's reading). When it falls back to "id_document_portrait" (the visual page), it's still bank-grade by document-scan standards but not chip-anchored.
STEP 5 — Fallback paths
iPhones below iPhone 7, or any phone with NFC disabled, or a document without a chip (pre-2014 in some countries) → the workflow surfaces "NFC unavailable" and routes to the ID Verification + MRZ + OCR path. Same hosted URL, same webhook, same statuses. The fallback is configured in the Workflow Builder, not in your code.
Some Android devices won't read every chip due to NFC antenna placement — Didit's iOS / Android SDKs surface a graceful retry hint before failing over to OCR.
STEP 6 — Ongoing monitoring
Enable Ongoing AML at $0.07/user/year to keep the identity fresh. NFC re-reads aren't required for ongoing — the chip data was captured at onboarding and the binding is permanent for the document's validity period.
WEBHOOK EVENT NAMES
- status.updated — session status changed.
- data.updated — session data changed (resubmission, NFC retry, ongoing AML hit).
Verify X-Signature-V2 on every payload. The webhook secret is per-environment — sandbox key is separate from production.
CONSTRAINTS
- Session statuses use Title Case With Spaces (Approved, In Review).
- NFC chip reading requires the native NFC stack — iOS, Android, React Native, Flutter SDKs handle it; pure web falls back to MRZ + OCR.
- The chip portrait (DG2) is far higher-resolution than the visual page — matching the selfie to it is meaningfully more accurate than matching to a phone-camera-captured ID photo.
- Document Signer Certificate trust is anchored to the ICAO Public Key Directory; some countries (eg. small island states) do not publish to the PKD and will return a Passive Authentication warning rather than Approved.
- Default record retention is 5 years post-relationship per the EU AML package.
Read the docs:
- https://docs.didit.me/sessions-api/create-session
- https://docs.didit.me/sessions-api/retrieve-session
- https://docs.didit.me/core-technology/nfc-verification/overview
- https://docs.didit.me/core-technology/face-match/overview
- https://docs.didit.me/integration/webhooks
Start free at https://business.didit.me — sandbox key in 60 seconds, 500 verifications free every month, no credit card.
¿Necesita más contexto? Consulte la documentación completa del módulo.docs.didit.me →
Cumplimiento por diseño
Abre un nuevo país con un clic. Nosotros hacemos el trabajo duro.
Abrimos las filiales locales, aseguramos las licencias, realizamos las pruebas de penetración, obtenemos las certificaciones y nos alineamos con cada nueva regulación. Para enviar verificaciones en un nuevo país, activa un interruptor. Más de 220 países en vivo, auditados y probados trimestralmente — el único proveedor de identidad que un gobierno de un estado miembro de la UE ha calificado formalmente como más seguro que la verificación en persona.
Por lectura de chip NFC — firma gubernamental verificada.
2-4s
Duración de la lectura del chip desde el toque hasta el veredicto en Android de nivel básico.
<0s
Coincidencia facial de selfie con el retrato del chip.
0
Verificaciones gratuitas cada mes, en cada cuenta.
Tres niveles, una lista de precios
Empiece gratis. Pague por uso. Escale a Enterprise.
500 verificaciones gratuitas cada mes, para siempre. Pago por uso para producción. Contratos personalizados, residencia de datos y SLAs (Acuerdos de Nivel de Servicio) en Enterprise.
Gratis
Gratis
$0 / mes. No se requiere tarjeta de crédito.
Paquete KYC gratuito (Verificación de ID + Prueba de vida pasiva + Coincidencia facial + Análisis de dispositivo e IP) — 500 / mes, cada mes