OpenID4VCI: in-time vs deferred vs dynamic — when do you use which?
OpenID4VCI gives you three issuance flow shapes and they're not interchangeable:
• In-time → https://docs.igrant.io/docs/openID4vci-issue-credential-intime/
Issuer has the data ready; wallet asks, gets it immediately.
• Deferred → https://docs.igrant.io/docs/openID4vci-issue-credential-deferred/
Issuer needs time (KYC review, manual approval); wallet polls back.
• Dynamic → https://docs.igrant.io/docs/openID4vci-issue-dynamic-credential-request/
Wallet drives shape — claim selection at request time.
We default to in-time wherever possible (best UX), drop to deferred when there's a human in the loop, and use dynamic for anything where the wallet picks claims contextually.
What's your default? And has anyone done deferred well — the polling story still feels rough.

Replies