Skip to main content

Overview

Warnings on the NFC report flag every condition Didit observed while reading and validating the chip. They land in the warnings[] array on each item of nfc_verifications[] (see NFC report), with feature set to "NFC". Each entry follows the shared warning object shape: feature, risk, additional_data, log_type, short_description, long_description, node_id. Every warning has three layers:
  1. The risk code — a stable identifier you can match on in your code (the codes listed below).
  2. The log_type — one of information, warning, or error. It is derived from the action your workflow configures for that risk: No action → information, Review → warning, Decline → error.
  3. The decision impact — the same configured action also drives the NFC report’s status: a Review action moves it to In Review, a Decline action to Declined.
Four NFC risks are configurable this way (SKIPPED_NFC_VALIDATION, NFC_CHIP_NOT_VERIFIED, NFC_TRUST_ANCHOR_MISSING, NFC_AND_OCR_DATA_NOT_SAME), plus the five Japan My Number Card risks, each with its own setting. The two certificate risks (DSC_CERTIFICATE_REVOKED, DSC_CERTIFICATE_EXPIRED) are informational only: they always carry log_type: "information" and never change the NFC status by themselves. The full set of risk codes the NFC module produces is below. No other NFC risk codes exist.

Warnings produced

SKIPPED_NFC_VALIDATION is mutually exclusive with NFC_CHIP_NOT_VERIFIED and NFC_TRUST_ANCHOR_MISSING: chip-verification warnings are only evaluated when the chip read was not skipped. The two chip-verification warnings are also mutually exclusive.

Exact description strings

The API returns these exact short_description and long_description strings for each risk:

Skip reasons

SKIPPED_NFC_VALIDATION warnings carry additional_data.skip_reason, one of seven stable codes stating exactly why NFC did not run (on sessions recorded before skip reasons existed, additional_data may be null — treat the field as optional when processing historical decisions). The same taxonomy appears at the session level as nfc_skip_reason on the decision payload — including for sessions where NFC could never run at all (chipless document, web integration) and therefore no NFC report or warning exists.
An NFC report and its SKIPPED_NFC_VALIDATION warning only exist when the client reached the NFC step and explicitly skipped it (typically USER_SKIPPED, or DEVICE_WITHOUT_NFC when the reader turned out to be unavailable at scan time). When the NFC step was bypassed before it could ever be offered — chipless document, missing certificate, no NFC capability reported, unreadable MRZ key, JPKI unavailable — no report or warning is created and the reason surfaces only in the session-level nfc_skip_reason field, without affecting the session status.

Configuration

Three workflow settings control how NFC warnings route. Each can be set to No action, Review, or Decline:
  1. Skip NFC action (skip_nfc_action) — applies to SKIPPED_NFC_VALIDATION. Skipping is only offered to users when allow_nfc_skip is enabled.
  2. Unverified chip action (unverified_chip_action) — applies to both NFC_CHIP_NOT_VERIFIED and NFC_TRUST_ANCHOR_MISSING, so the session status behavior remains the same while the risk code explains why verification failed.
  3. Data inconsistency action (inconsistent_data_action) — applies to NFC_AND_OCR_DATA_NOT_SAME. This is the same data-inconsistency setting used by ID verification.
The two DSC_CERTIFICATE_* risks have no action setting — they are always informational. The Japan My Number Card risks have five more settings, listed in the next section.

Japan My Number Card (JPKI)

A Japan My Number Card is read through JPKI instead of ICAO 9303 (chip_protocol: "jpki"), so the ICAO risks above never fire for it. Its read raises these five risks instead, each with its own setting on the NFC node: A skipped My Number Card read raises SKIPPED_NFC_VALIDATION and follows skip_nfc_action, like any chip. See Japan My Number Card (JPKI) for how the read works.
My Number Card reading through JPKI is not enabled in production yet. Until it is, a My Number Card skips the NFC step with skip reason JPKI_UNAVAILABLE and none of these risks are raised.

Examples

In Review — chip could not be verified

Here the unverified-chip action is set to Review, so NFC_CHIP_NOT_VERIFIED carries log_type: "warning" and the NFC report’s status is In Review. The expired-DSC entry is purely informational.

Declined — chip / OCR mismatch

Here the data-inconsistency action is set to Decline, so the warning carries log_type: "error" and the NFC report’s status is Declined. Note that ocr_mrz is an array of MRZ lines while nfc_mrz is the chip’s single concatenated MRZ string.

In Review: My Number Card without a revocation answer

Here jpki_revocation_unchecked_action keeps its default, Review, so the warning carries log_type: "warning" and the NFC report’s status is In Review. The card itself was proven: jpki.chain_valid and jpki.signature_valid are both true.

Warning types

Each risk is assigned a severity based on your application’s configuration. The three severities are:
Last modified on October 28, 2026