Digital Credentials API

This guide shows you how to register the walt.id Wallet SDK with the operating-system Digital Credentials API so a website or native app can request credentials without a QR code or custom URL scheme. The SDK reuses the same OID4VCI and OID4VP sessions documented in Receiving Credentials and Presenting Credentials.

Digital Credentials API: The OS-mediated protocol that lets a relying party request credentials through the system picker instead of a wallet-specific URL.

Prerequisites

Before you begin, ensure you have:

  • A wallet with stored credentials — Follow Integrate the SDK and Receive Credentials.
  • Platform Digital Credentials support — Android Credential Manager for get/create; iOS Identity Document Services for ISO 18013-7 presentation.

Current Platform Coverage

PlatformCurrently supported
AndroidOID4VCI create (openid4vci-v1), OID4VP (openid4vp-v1-unsigned and openid4vp-v1-signed), and ISO 18013-7 Annex C (org-iso-mdoc) for mdoc and SD-JWT VC as registered.
iOSISO 18013-7 mdoc presentation through Identity Document Services. OID4VP is not exposed to third-party wallets. Minimum OS reported by the SDK is iOS/iPadOS 26.

Check wallet.digitalCredentialCapabilities() at runtime. Registration can fail independently of wallet loading — inspect digitalCredentialRegistration or call refreshDigitalCredentialRegistration().

Android

Android Credential Manager hosts both get (presentation) and create (issuance).

  • Get — The SDK registers claim paths for mdoc and SD-JWT VC so the system picker can match a verifier request. Preview with previewDigitalCredentialPresentation and submit with submitDigitalCredentialPresentation. ISO 18013-7 Annex C requests use previewAnnexCPresentation / submitAnnexCPresentation instead.
  • Create — Register issuance capability separately from presentation. AndroidDigitalCredentialCreateProvider extracts the OID4VCI create request; pass the offer JSON with MobileWalletCredentialOffer.InlineJson into startIssuance.
val session = wallet.startIssuance(
    MobileWalletIssuanceRequest(offer = MobileWalletCredentialOffer.InlineJson(offerJson))
)

Compound values, JSON null, data URIs, and recognized base64 image payloads retain their registered paths without a matching value. They can be requested by field presence, but cannot satisfy an exact-value constraint in the platform matcher.

iOS

iOS uses the Identity Document Provider extension for presentation. The Swift WalletSDK bridges registration status with Identity Document Services. The wallet core still previews and builds the response; the extension returns it to the OS.

Identity Document Services registers ISO mobile documents. SD-JWT VCs have no doctype to register under, and OpenID4VP is not available to third-party wallets on this platform.

Set WalletConfiguration.crossProcessAccess with the App Group and Keychain access group shared by the app and the extension.

Next Steps

Last updated on September 29, 2026