Overview
walt.id's Wallet Service enables organizations and wallet providers to create digital wallets that use draft OpenID4VCI and OpenID4VP protocols. It supports consumer wallets for end users as well as organizational wallets for companies.
For new projects, use the Wallet2 Service (type: "wallet2", /v2 API) with OID4VCI / OID4VP 1.0. The Wallet Service documented here is the legacy draft stack (type: "wallet", /v1 API).
Feature Flag
Legacy Wallet routes and inventability require the wallet-draft-routes feature in _features.conf. The feature defaults to off. When it is disabled:
/v1/.../wallet-service-apidraft Wallet routes are not registered- Creating a service with
"type": "wallet"is rejected (use"wallet2"instead)
Enable it only if you need draft-protocol wallets or existing integrations that depend on them.
Supported Standards
| Credential Formats: | SD-JWT VC (IETF), W3C VC (v1.1+, v2.0), ISO 18013-5 mDL |
| Credential Exchange: | OID4VCI (Draft 11, 13), OID4VP (Draft 14, 20; Presentation Exchange and DCQL on present), ISO/IEC 18013-7 |
| Signing Algorithms: | ed25519, secp256k1, secp256r1, RSA |
Service Type and API
| Resource type | "wallet" |
| API base | /v1/{target}/wallet-service-api/... |
| Feature flag | wallet-draft-routes (default off) |
"wallet" and "wallet2" are different resource types. A node created as "wallet" is not served by the Wallet2 /v2 API until you migrate it.
Migrating to Wallet2
An optional manual MongoDB migration rewrites _t: "wallet" to _t: "wallet2" on organization tree documents (same document shape; no field remapping). After migration, use Wallet2 /v2 APIs and clients. If you never run the migration, existing "wallet" nodes continue to work only with this legacy /v1 Wallet Service (when wallet-draft-routes is enabled).
Core Features
KMS & Identifiers
- Holder Keys — via the KMS Service.
- DIDs — via the DID Service and DID Store.
Credential Storage
- Persist received credentials using the Credential Store Service.
Credential Exchange
- Draft OID4VCI/VP flows for receiving and presenting credentials.
- Presentation Exchange and DCQL on present (legacy Wallet present path).
- Optional client attestation and holder policy store dependencies.
Getting Started
- Setup —
init-walletwizard and"type": "wallet"create (requireswallet-draft-routes).
Receive & present (draft protocols)
