Skip to main content

Error codes

This page lists the HTTP error responses that wallets encounter during verification and issuance flows with the Truvity EUDIW Connector. Some errors originate from the connector and others from the authorization server.

Wallet-facing error responses

When the connector encounters an error while processing a wallet request, it returns a JSON response with an error field and the corresponding HTTP status code.

Error codeHTTP statusDescription
invalid_request400Validation errors during request parsing or format validation
invalid_request403Cryptographic validation failures (signatures, key binding, nonce) or trust chain validation failures
server_error500Infrastructure errors (database, key management)
temporarily_unavailable503Transient errors (downstream service timeouts)

The invalid_request error code maps to two HTTP statuses because it covers two distinct failure categories defined by OID4VP. Use the HTTP status code to distinguish them: 400 indicates a malformed or missing request parameter, while 403 indicates a cryptographic or trust validation failure.

Error description field

Error responses may include an optional error_description field with a human-readable explanation of the error. This field provides additional context for debugging but is not guaranteed to be present in every response.

Issuance error codes

The connector and the authorization server return the following error codes to wallets during OID4VCI credential issuance flows.

Wallet-facing issuance error responses

Error codeHTTP statusWhen returnedResolution
invalid_proof400Key Proof JWT is structurally invalid (wrong signature, aud mismatch, or expired iat)Wallet creates a new Key Proof with the correct audience and a fresh timestamp
invalid_nonce400c_nonce in Key Proof is invalid or expiredWallet requests a fresh c_nonce from the nonce endpoint and retries
unknown_credential_configuration400credential_configuration_id not found in Credential Issuer MetadataCheck that the credential configuration matches a configured type
unknown_credential_identifier400credential_identifier not recognized (not found in the session or not matching any known configuration)Check that the credential identifier matches a value from the token response
invalid_credential_request400Credential request payload is malformed (missing required parameters, unsupported values)Check request body structure against the OID4VCI specification
invalid_grant400Pre-authorized code expired or already used, invalid tx_code, or session not foundCheck offer expiration, verify tx_code delivery, confirm the offer has not been redeemed
invalid_token401Access token invalid, expired, or DPoP thumbprint mismatchWallet must obtain a new token
invalid_request400Request contains invalid parameters (for example, unsupported tx_code input mode)Check request parameters against the API documentation
server_error500Infrastructure errors (database, key management)Retry after delay
temporarily_unavailable503Transient errors (authorization server or credential signing service unavailable)Wallet retries after delay
use_dpop_nonce400DPoP nonce required. Returned by the authorization server at the token endpointWallet retries with the server-provided nonce from the DPoP-Nonce response header

Further reading