eIDAS Audit Entry Types

Every audit entry shares a common envelope and then adds type-specific evidence. Use this page when reviewing a query response and deciding whether the recorded evidence answers your compliance question.

Shared Fields

FieldMeaning
entryTypeEntry discriminator: CREDENTIAL_ISSUED, CREDENTIAL_LIFECYCLE, or PRESENTATION_VERIFICATION_COMPLETED
idUnique entry ID
organizationIdOrganization that owns the integrity chain
targetService instance that produced the entry (for example waltid.tenant1.issuer1)
timestampWhen the action was recorded (Unix epoch milliseconds)
sequenceNumberMonotonic position in the organization chain — gaps indicate missing entries
prevEntryHashHash of the previous entry, or GENESIS for the first entry in the organization
entryHashHash of this entry linked to prevEntryHash

CREDENTIAL_ISSUED

Recorded when a signed credential payload is successfully delivered to a wallet via OID4VCI.

FieldMeaning
sessionIdOID4VCI issuance session ID — correlates with operational issuance events
credentialConfigurationIdCredential configuration that was issued
credentialIndexPosition in a batch credential response (0 for a single credential)
formatCredential format, e.g. dc+sd-jwt or mso_mdoc
credentialPayloadHashSHA-256 of the signed credential bytes — proves what was delivered without storing claims
holderBindingPublicKeyJwkHolder device-binding public key (JWK). null when cryptographic holder binding was not required
proofTypeProof used during issuance, e.g. jwt
callIdOptional correlation ID for application logs
loaAchievedLevel of Assurance recorded for this issuance — see below. Defaults to NOT_APPLICABLE
identityProofingRefIdOptional reference to an external identity-proofing session / log (for example an eID or passport chip verification). null when not supplied

Level of Assurance (loaAchieved)

Identity proofing often happens outside walt.id. Callers pass the achieved LoA on the Issuer2 issuance request or credential-offer runtime overrides; the value is copied onto the audit entry when the credential is issued.

ValueMeaning
HIGHHigh level of assurance
SUBSTANTIALSubstantial level of assurance
LOWLow level of assurance
NOT_APPLICABLENo LoA was supplied for this issuance (default)

How to use it in a review

  • Confirm a specific credential configuration and format were issued in a given session.
  • Use credentialPayloadHash if you need to prove which signed payload was delivered, without retaining personal claims in the audit store.
  • Use holderBindingPublicKeyJwk to show the credential was bound to a specific wallet key / hardware instance.
  • Use loaAchieved and identityProofingRefId to bind the issued credential to the external onboarding / identity-proofing session that established the holder's assurance level.

The signed credential itself is never stored in the audit log. Only its hash is retained.


CREDENTIAL_LIFECYCLE

Recorded when a credential's lifecycle state changes.

FieldMeaning
sessionIdRelated issuance session identifier
credentialConfigurationIdCredential configuration affected by the transition
eventNew lifecycle state — see below
reasonCodeOptional free-form legal or technical reason (typically set for suspension/revocation), e.g. key_compromise
operatorIdOperator or system identity that triggered the transition, when available

Lifecycle Events

eventMeaning
PROVISIONEDIssuance offer / binding step started for the wallet instance
ISSUEDSigned credential was delivered
SUSPENDEDCredential temporarily suspended
UNSUSPENDEDSuspension lifted
REVOKEDCredential permanently revoked

How to use it in a review

  • Reconstruct the timeline of state changes for a session.
  • Identify who or what system triggered a suspension or revocation (operatorId, reasonCode).

PRESENTATION_VERIFICATION_COMPLETED

Recorded when an OID4VP presentation session finishes (success or failure).

FieldMeaning
sessionIdOID4VP verification session ID
nonceHashSHA-256 of the OpenID4VP nonce — supports lookup without retaining the raw nonce
dcqlQueryExact DCQL presentation request sent to the wallet (JSON string)
requestObjectX5cCertificate chain (x5c) from the signed Authorization Request Object
requestObjectHashSHA-256 fingerprint of the signed Authorization Request Object, when present
verifierInfoverifier_info items from the authorization request (format and data)
issuerSignatureEvidenceResults of issuer signature policies that were actually executed
issuerTrustEvidenceResults of issuer trust policies that were actually executed (for example EU Trusted List / VICAL)
holderBindingEvidenceResults of holder-binding policies that were actually executed
revocationStatusEvidenceResults of credential status / revocation checks that were actually executed (for example Token Status List or Bitstring)
verifierTrustEvidenceResults of Verifier WRPAC / Relying Party registry validation policies that were actually executed
pairwiseSubjectIdOptional sector-specific or presentation-derived pairwise subject identifier — supports correlation without storing PII claims
outcomeOverall result: SUCCESS, FAILED, or WALLET_ERROR
failureCategoryWhen failed: VP_POLICY, VC_POLICY, DCQL, or WALLET_ERROR
callIdOptional correlation ID for application logs

Policy Evidence Objects

Each item in the evidence arrays looks like:

FieldMeaning
policyIdPolicy that ran (for example signature, credential-status, or dc+sd-jwt/kb-jwt_signature)
queryIdRelated DCQL credential query ID, when applicable
credentialIndexIndex of the credential in the presentation, when applicable
successWhether that policy passed
errorsHuman-readable failure details
evidenceOptional structured evidence object
evidenceCapturedAtWhen the policy result was captured (Unix epoch milliseconds)

How to use it in a review

  • Read dcqlQuery to verify data minimization — for example that you requested age_over_18 rather than a full date of birth.
  • Use requestObjectX5c and verifierInfo as relying-party authentication / authorization evidence for the session.
  • Use revocationStatusEvidence to show the credential's status list / revocation check was evaluated at verification time.
  • Use verifierTrustEvidence when WRPAC / national RP-registry validation ran for the verifier certificate.
  • Use pairwiseSubjectId to correlate the presentation with internal business actions without retaining real identity claims.
  • Use the policy evidence arrays and outcome to show which cryptographic checks passed or failed.
  • Correlate with a wallet transaction using sessionId, or look up by the original nonce via the query API.

dcqlQuery can contain constrained claim values from the request. Treat audit access and retention according to your organization's audit-data policy even though credential payloads are not stored.


Next Steps

Last updated on August 18, 2026