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
| Platform | Currently supported |
|---|---|
| Android | OID4VCI 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. |
| iOS | ISO 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
previewDigitalCredentialPresentationand submit withsubmitDigitalCredentialPresentation. ISO 18013-7 Annex C requests usepreviewAnnexCPresentation/submitAnnexCPresentationinstead. - Create — Register issuance capability separately from presentation.
AndroidDigitalCredentialCreateProviderextracts the OID4VCI create request; pass the offer JSON withMobileWalletCredentialOffer.InlineJsonintostartIssuance.
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
- Drive OID4VCI sessions, including inline offers — Receiving Credentials via OID4VCI.
- Drive OID4VP preview and submit — Presenting Credentials via OID4VP.
- Exercise OS pickers from a sample app — Try the Demo.
