Troubleshooting — Developers¶
Common errors during integration and how to resolve them.
invalid_grant when redeeming the pre-authorized code
- Likely cause: the code was already consumed or expired (typical TTL: 5 minutes).
- Solution: request a new offer from the Issuer. The pre-authorized code is single-use.
Wallet rejects the credential after issuance
- Likely cause: mismatch in the
vct(Verifiable Credential Type) or missing public verification keys at/.well-known/jwt-issuer. - Solution: verify that the
vctdeclared in the Issuer metadata matches the one in the issued credential.
Verifier does not receive the presentation
- Likely cause: the
response_uriis not publicly accessible or has an invalid certificate. - Solution: the wallet performs
direct_postfrom the user's device; the endpoint must be a public HTTPS endpoint with a valid certificate.
invalid_presentation_submission
- Likely cause: the DCQL query requests claims that the credential does not contain, or the Key Binding JWT signature does not validate.
- Solution: verify that the presented credential satisfies the query and that the
noncein the KB-JWT matches the one in the request.
invalid_dpop_proof
- Likely cause: the
htuorhtmin the DPoP does not match the actual URL/method, or theiatis outside the acceptable window. - Solution: verify that you regenerate the DPoP proof on every request; do not reuse one across calls.
404 or tenant not found with correct domain
- Likely cause: the subdomain is not provisioned or the session points to a different tenant.
- Solution: confirm with support that the tenant is active and that your OAuth client is registered for it.
The login always shows the QR code (or prompt=none returns login_required), even though the user just logged in on another application
- Likely cause: SSO is not enabled for your tenant, or the two applications don't hang off the same configured root domain (
rootDomain) — without that, the browser doesn't share the session cookie between them. Your application may also be sendingprompt=loginor amax_agelower than the session's age, which force the QR code. - Solution: confirm with your tenant administrator that SSO is active and that both applications are served under the same root domain. See the administration guide.
The QR code appears despite a valid SSO session (or prompt=none returns interaction_required)
- Likely cause: there is a valid SSO session, but your
client_idis not on the tenant's eligible applications catalog. - Solution: ask your tenant administrator to add your
client_idto the SSO catalog. See the SSO across applications guide.
The id_token from a reuse doesn't include the sid claim
- Likely cause: the request fell back to the full login flow (for example, after a previous
login_required/interaction_required) —sidis only issued when an active SSO session backs the token. - Solution: check the authorization response to see whether you got a direct
code(reuse) or had to go through the QR code (full login).
Your redirect_uri receives error=invalid_request
- Likely cause:
prompt=nonecombined with another value (for example,none login), a malformedmax_age(negative, decimal or non-numeric) or, in a request object, apromptthat is not a string. The exact reason arrives inerror_description. - Solution: fix the request parameter. See Behaviour by
prompt.
Still stuck?¶
Contact support. Include:
- Exact endpoint and method.
- Complete request (sanitized of secrets).
- Response received.
trace-idif included in the response.