Skip to main content

Consent Receipts

A consent receipt is a tamper-proof record of a single consent decision. Every time a visitor accepts, rejects, or changes their consent, a receipt is created.

Receipt contents

{
"id": "rec_01HXYZ123456",
"property_id": "prop_abc",
"policy_id": "pol_def",
"policy_version": 3,
"banner_version": 7,
"timestamp": "2026-03-09T12:34:56Z",
"event_type": "consent.created",
"choices": {
"necessary": true,
"analytics": true,
"marketing": false,
"functional": true
},
"region": "DE",
"user_agent_hash": "sha256:a1b2c3...",
"ip_hash": "sha256:d4e5f6...",
"previous_receipt_id": null,
"hmac": "sha256:g7h8i9..."
}

Fields explained

FieldDescription
idUnique receipt identifier
policy_versionExact policy version active at time of decision
banner_versionBanner configuration version
timestampUTC timestamp of the decision
event_typeconsent.created, consent.updated, or consent.revoked
choicesPer-category accept/reject decisions
regionGeoIP-detected region of visitor
user_agent_hashSHA-256 of user agent string
ip_hashSHA-256 of IP address
previous_receipt_idLinks to prior receipt (null for first decision)
hmacHMAC-SHA256 signature for tamper detection

Viewing receipts

Dashboard → Property → Evidence → Receipts

Search by: date range, region, choice (accepted/rejected analytics, etc.).

Receipt retention

Receipts are stored for 7 years to support GDPR audit requirements (Art. 7(1) GDPR requires demonstrating that consent was given).

Verifying a receipt

The hmac field lets you verify that a receipt hasn't been altered. See Audit Chain for verification instructions.

Receipt API

Receipts are available via the API:

GET /api/v1/receipts?property_id=prop_abc&from=2026-01-01
Authorization: Bearer YOUR_API_TOKEN

Requires scope: receipts:read