SD-JWT VC vs. ISO mdoc for wallet verification
SD-JWT VC and ISO mdoc are two credential formats that can be used in wallet presentation flows. They can both support selective disclosure, but they use different data structures, cryptographic proofs, and verifier processing. Choose based on the credential issued, the target wallets, and the profile your relying-party integration supports.
At a glance
| SD-JWT VC | ISO mdoc | |
|---|---|---|
| Typical representation | Signed JWT plus selectively released disclosures | CBOR-based mobile document with issuer authentication and device response |
| Credential type | The vct value identifies the credential type | The docType identifies the mobile document type |
| Selective disclosure | Holder shares disclosures whose digests are bound to the signed JWT | Wallet returns requested document elements under the applicable mdoc profile |
| Holder or device binding | A Key Binding JWT can bind the presentation to the verifier and transaction | Device authentication uses the mdoc session transcript and requested profile |
| Common ecosystem example | PID or other JSON-claim credentials where issued in this format | Mobile driving licence and other ISO mobile documents |
| OID4VP query metadata | vct_values | doctype_value |
The table describes format-level differences. A deployment profile may add requirements or constrain supported algorithms, transport, issuer trust, and holder binding.
How the formats differ
SD-JWT VC
An SD-JWT combines an issuer-signed JWT with optional disclosures. The signed payload contains digests for selectively disclosable values; a presentation includes the disclosures the holder chooses to share. When the profile requires cryptographic holder binding, the presentation also includes a Key Binding JWT.
The SD-JWT format is specified in RFC 9901. SD-JWT VC defines its use for verifiable credentials; check the applicable profile and issuer metadata rather than assuming every SD-JWT is an SD-JWT VC.
ISO mdoc
An mdoc is a mobile document format defined by the ISO/IEC 18013 and related standards. An mDL is one document type within that ecosystem. The verifier checks the issuer-authenticated document and, when required by the profile, the wallet device response bound to the presentation session.
For mdoc, request the intended document type and namespace as well as the specific data elements. The exact transport, trust anchors, and proof checks depend on the mdoc and OID4VP profile in use.
Both formats can use OID4VP
OID4VP is the presentation protocol, not a credential format. Its DCQL query uses vct_values to select SD-JWT VC types and doctype_value to select mdoc document types. The verifier and wallet need compatible format and protocol profiles; accepting one does not imply support for the other.
The verifier must bind each returned presentation to the expected verifier and transaction, then check issuer trust, credential validity, requested claims, and format-specific holder proof. See OID4VP nonce and state validation for transaction binding details.
How to choose a format
Start from the credentials your intended issuers actually provide and the wallets your users can access. Then confirm:
- the credential type or mdoc
docTypeand claim names for the profile; - how issuer authenticity and status are established;
- whether the profile requires holder or device binding;
- which claims the wallet can selectively disclose;
- which wallets and presentation modes are supported in your target market;
- what fallback path is available when a wallet cannot satisfy the request.
Neither format is universally more private or more interoperable. Data minimization depends on what the request asks for, what the credential contains, and how the profile and verifier process the response.
Implement both paths with DLBR
DLBR's API accepts vc+sd-jwt requests with vct_values and mso_mdoc requests with doc_type and namespace. Review the format-specific guides:
- SD-JWT verification with TypeScript
- ISO mdoc and mobile driving licence verification
- OID4VP overview
- Advanced OID4VP profiles
- EUDI Wallet verification API