Skip to main content

The Wallet Inbox

The inbox is the attended counterpart to direct issue. When you push a credential offer to a wallet without directIssue=true, the wallet does not accept it automatically. Instead it stores the offer as an inbox item that the holder can review and accept later.

Direct issue vs. inbox

Both use the same OIDC offer endpoint, the only difference is the directIssue flag:

Direct issueInbox
RequestPOST /api/oidc/offer/{key}?directIssue=true&credential_offer_uri=...POST /api/oidc/offer/{key}?credential_offer_uri=...
User interactionNone, accepted unattendedHolder reviews and accepts in the wallet
Trust requirementIssuer must be a trusted contact with directIssueAllowed = trueNone, the holder decides
ResultCredential appears immediately (if trusted)Offer waits in the inbox until the holder acts

Choose direct issue when provisioning a wallet you control (such as during onboarding). Choose the inbox when the holder should stay in control of what enters their wallet.

Item lifecycle

When an offer is delivered without directIssue, the wallet stores it as an inbox item that moves through these states:

  • NEW, just received, not yet viewed. Counts towards the unread badge.
  • READ, the holder has opened the item.
  • PROCESSED, the offer has been accepted (or dismissed) and needs no further action.