Skip to main content

Introduction

The NFC Credential represents a uniquely issued government document. It supports passports and eIDs. The availability generally varies by country and continues to be extended over time. An NFC Credential is guaranteed to be issued to a single World ID per unique document. In addition to ICAO-9303 compliant documents (such as passports or eIDs), the Japanese My Number Card is also supported. This MNC card has different handling internally for enrollment, but the same credential is issued.

Use Cases

Use the NFC Credential when you need proof of a unique document. This is useful for example for situations where you want to have some sybil resistance but you don’t need a strong guarantee of a unique human.

Credential Structure

This credential implements the following attributes beyond the defaults in the Credential.
AttributeDescription
genesis_issued_atThe timestamp of when the unique document was first verified.
expires_atThe expiration of the document with a maximum of 10 years.
associated_data_commitmentA commitment to the user’s Associated Data (see Associated Data).
In addition, the credential implements the following claims:

Claim 0 - Authentication Claim

Identifies the type of authentication performed when enrolling a document. This helps determine the state of the document at enrollment time. For example, documents that only undergo Passive Authentication have no guarantee that the data isn’t cloned from an original document. Please note that not all authentications are supported for all documents, and it usually varies per country. The strongest authentication available is always selected.
ValueClaimDescription
1NonePassive authentication only (document signature verification).
2Chip AuthenticationDocument passed Chip Authentication (CA) per ICAO 9303. Proves the chip is genuine and not cloned.
3Active AuthenticationDocument passed Active Authentication (AA) per ICAO 9303. Proves the chip holds a private key.
4MNC AuthenticationDocument was verified via the MNC (My Number Card) SD-JWT flow.

Claim 1 - SOD Signature

Contains a hash of the document’s signature from the issuing authority. For passports and other ICAO-9303 compliant documents, the signature is retrieved from SignedData.SignerInfos[0].Signature in the EF.SOD (Security Object Document) (see Section 4.6.2.1 from ICAO-9303 Part 10). The raw signature bytes are then hashed with blake3 and converted to a field element with modulo reduction. Please note that this claim is not set for credentials from My Number Cards.

Credential Renewal

Renewal is not supported for this credential. A document can only be enrolled once. From a user standpoint, they will generally obtain a new document from their issuing authority (e.g. a new passport) and register it as a new credential.

API Reference

The API Reference here is only relevant for Authenticators and internal development of the credential.

Enrollment Coming soon

Details coming soon.

Re-issuance Coming soon

Details coming soon.

Migration

This endpoint is intended for World ID v3 holders to obtain v4 NFC credentials. It is not a general re-issuance endpoint for v4 holders.
method
POST
/v2/refresh
Content-Type: application/json

Headers

HeaderTypeRequiredDescription
x-zkp-proofstringyesBase64-encoded JSON containing the ZKP proof and identity commitment.
attestation-gateway-tokenstringyesAttestation gateway token for device integrity verification.

Body fields (common)

FieldTypeRequiredDescription
identityCommitmentstringyesThe holder’s identity commitment (decimal or hex with 0x prefix). Must match the ZKP header.
substringyesWorld ID 4.0 blinded subject identifier (hex with 0x prefix, 256-bit). Must match previous refreshes for this identity.
credentialobjectyesFlow-specific credential data (see below). The client decrypts PCP data locally before submission.

Credential fields

The credential object contains data extracted and decrypted from the user’s Personal Custody Package (PCP) by the client.
FieldTypeDescription
credential.sodstringBase64-encoded SOD (Security Object Document) in DER format from the identity document.
credential.verification_metadatastringBase64-encoded verification metadata from the original document check.
{
  "identityCommitment": "0x000000000000000000000000000000000000000000000000000000000000000c",
  "sub": "0x000000000000000000000000000000000000000000000000000000000000002a",
  "credential": {
    "sod": "<base64-sod-der>",
    "verification_metadata": "<base64-json>"
  }
}

Success response

{
  "result": {
    "credential": "<base64-encoded World ID v4 credential>"
  }
}

Error responses

StatusErrorDescription
400invalid_dataRequest payload is malformed or missing required fields.
400sub_mismatchsub does not match the one used in previous refreshes for this identity.
400document_expiredThe identity document has expired and cannot be used for refresh.
401unauthorizedAuthentication failed.
404not_foundNo matching enrollment record found for this credential.

Internal Documentation

This is advanced documentation about the internal workings of the NFC Credential and is not relevant for RP integration.

Associated Data

The associated data of this credential contains different data groups found in the original document. More information coming soon.

Associated Data Commitment

To ensure the associated data has guaranteed integrity and can be re-used in the future for credential re-issuance, the commitment is computed as follows:
  1. For ICAO-9303 documents, the message digest of the EF.SOD signature is used. The message digest is obtained from SignedData.SignerInfos[0].SignedAttrs where the signed attribute for the digest is identified by the Object Identifier 1.2.840.113549.1.9.4. This digest is then hashed with the blake3 hashing function from the raw bytes. Finally, the blake3 hash is converted to a field element with modulo reduction.
  2. Information on MNC documents coming soon.