Written by

Sumeshwar Pandey

View Profile
12 min read

Consent Receipt JSON: Fields, Hashing, Signatures and Withdrawal

Copyable consent receipt example and field dictionary with canonical hashes, issuer signatures, timestamps, version chains, withdrawal receipts and validation checks.

Key takeaways
  • A useful consent receipt links a specific consent event to the principal reference, fiduciary, purposes and versions, data scope, notice version, channel, timestamps, status, evidence and integrity metadata.

  • A hash only detects a change to canonical bytes when compared with a trusted digest. A digital signature authenticates the signer and protects integrity; encryption is a separate confidentiality control.

  • Model consent as immutable, versioned events. A withdrawal creates a new withdrawal receipt that references and supersedes the earlier grant; never overwrite the original evidence.

  • Validate schema and identifiers, canonicalize and re-hash, verify the signature and key status, follow the version chain, and compare the receipt with current ledger state before relying on it.

  • Current status (29 August 2026): DPDP definitions are in force, while substantive consent and withdrawal duties and most operational Rules are scheduled around May 2027. The Act does not prescribe this JSON format.

Illustrative consent receipt field dictionary; “required” fields depend on your policy and use case, not a statutory JSON schema.

Group

Purpose and integrity rule

Illustrative fields

Headers and metadata

Identify the immutable event and its place in the schema and consent-version chain; use UTC timestamps and stable correlation identifiers.

receipt_id, consent_record_id, event_id, event_type, schema_version, consent_version, previous_receipt_id, supersedes_receipt_id, issued_at, effective_at, source_system, channel, correlation_id

Parties

Identify the principal and accountable parties without copying unnecessary direct identifiers; include a guardian or representative only when applicable.

subject_ref, subject_is_child, guardian_ref, guardian_authority_ref, guardian_verification_method, data_fiduciary_id, processor_ids, tenant_id, party_role_versions

Processing

Bind the event to versioned purposes, data scope, operations, lawful basis, notice and validity window; do not infer these later from current catalogues.

purpose_id and purpose_version, data_category_ids, resource_scope, processing_operations, lawful_basis, notice_id, notice_version, notice_language, notice_presented_at, notice_content_sha256, valid_from, valid_until, retention_rule_id, recipient_or_transfer_refs

Consent specifics

Record the exact choice and current-state transition, with minimal evidence references and cryptographic provenance. A withdrawal is a new signed receipt, not an overwrite.

status_by_purpose, choice_captured_at, withdrawal_requested_at, withdrawal_effective_at, withdrawal_receipt_id, evidence_uri, evidence_sha256, canonicalization, payload_sha256, signature_alg, key_id, signature

Complete sample consent receipt (illustrative JSON)

{
  "receipt_id": "cr_01J6Z8Q4E4M9",
  "schema_version": "1.0",
  "consent_record_id": "consent_8f31",
  "consent_version": 7,
  "event_id": "evt_01J6Z8Q3W2",
  "event_type": "GIVEN",
  "status": "GIVEN",
  "issued_at": "2026-08-29T10:15:31Z",
  "effective_at": "2026-08-29T10:15:30Z",
  "previous_receipt_id": null,
  "supersedes_receipt_id": null,
  "principal": {
    "subject_ref": "sub_hmac_72d9...",
    "is_child": false,
    "guardian_ref": null,
    "guardian_authority_ref": null
  },
  "parties": {
    "data_fiduciary_id": "df_legal_entity_17",
    "processor_ids": ["dp_messaging_04"],
    "tenant_id": "tenant_acme"
  },
  "processing": {
    "lawful_basis": "consent",
    "purposes": [
      {"id": "marketing.sms", "version": 3, "status": "GIVEN"}
    ],
    "data_category_ids": ["contact.mobile"],
    "processing_operations": ["send_sms"],
    "resource_scope": "customer_contact_profile",
    "valid_from": "2026-08-29T10:15:30Z",
    "valid_until": null
  },
  "notice": {
    "id": "notice_marketing_sms",
    "version": 4,
    "language": "en-IN",
    "presented_at": "2026-08-29T10:14:58Z",
    "content_sha256": "sha256:8b1f..."
  },
  "evidence": {
    "capture_channel": "web",
    "interaction_ref": "interaction_01J6Z8",
    "evidence_uri": "vault://consent/evidence/evt_01J6Z8Q3W2",
    "evidence_sha256": "sha256:5ac2..."
  },
  "withdrawal": {
    "withdrawal_requested_at": null,
    "withdrawal_effective_at": null,
    "withdrawal_receipt_id": null
  },
  "integrity": {
    "canonicalization": "RFC8785-JCS",
    "payload_sha256": "sha256:c9d4...",
    "signature_alg": "Ed25519",
    "key_id": "consent-key-2026-08",
    "signature": "base64url:MEQC..."
  }
}

Copyable illustrative payload. A withdrawal receipt should use event_type and status WITHDRAWN, a new consent_version, withdrawal timestamps, and previous_receipt_id or supersedes_receipt_id pointing to the earlier grant. Define canonicalization before calculating payload_sha256 or signature, and never treat a valid signature as proof that the consent journey was legally valid.

A consent receipt is evidence about one recorded event—not proof by itself that consent was legally valid. The receipt should make the event reconstructable: who or what principal reference acted, which Data Fiduciary and channel were involved, which purpose and notice versions applied, what choice was made, when it became effective, what record it superseded, and how the payload’s integrity and issuer can be checked.

Current-status note (29 August 2026): the DPDP Act’s definitions are in force. Substantive consent, notice and withdrawal provisions and most related Digital Personal Data Protection Rules, 2025 are scheduled for the 18-month commencement tranche, around May 2027. Build evidence controls now, but confirm official notifications before treating duties or timelines as operative. The Act does not mandate ISO/IEC TS 27560, a JSON receipt or a particular hashing/signature scheme.

Keep three artefacts distinct. The consent interface is the notice and choice experience. The internal consent record is the authoritative, versioned state used for decisions. A receipt is a portable snapshot of one event that can be shown to a Data Principal or verifier. Hashes and signatures strengthen integrity and provenance; they do not cure a misleading notice, bundled choice or invalid capture flow.

Use the DPDP Act and commenced Rules as the legal source. ISO/IEC 29184, ISO/IEC TS 27560 and the Kantara receipt model can be useful engineering references, but they are optional standards and must not be described as India’s statutory receipt format. Map their fields to your organisation’s actual notice, purpose, withdrawal and evidence policy.

Global privacy standards provide a useful engineering template for that history. ISO/IEC 29184 describes how online privacy notices and consent journeys should be structured and presented, with a focus on the content of notices and the interaction patterns used to obtain consent.[1]

ISO/IEC TS 27560 goes deeper on the internal data model, defining an interoperable, open, and extensible information structure for consent records and consent receipts, including requirements for lifecycle management of consent states.[2]

The Kantara Consent Receipt specification adds a concrete JSON-based receipt format targeted at individuals, covering authority, purposes, data categories, and links to notices and policies so that a consent record can be expressed in a human-readable artefact.[3]

For organisations that also operate under GDPR or follow EDPB consent guidance, there is comfortable overlap with DPDP: both regimes expect you to prove who consented, to what, when, and on the basis of which information. Indian implementations, however, need to reflect concepts such as Data Fiduciary and Data Principal, the role of consent managers, and domestic rules around purpose and storage limitation. Implementations can also look at work such as the PublicSchema ConsentRecord concept, which aligns fields across ISO/IEC TS 27560, the Kantara Consent Receipt, and other vocabularies to show what a detailed, standards-convergent consent schema can look like.[5]

Use one canonical model across web, mobile, branch, call-centre and partner channels. Store immutable events plus a derived current-state projection. Version the receipt schema, purpose catalogue, notice, consent record and signing key independently so a verifier can reconstruct what existed at event time without applying today’s definitions retroactively.

Headers and metadata describe the consent record itself, not the person. Typical fields include a stable consent_record_id, a schema_version, created_at and last_updated_at timestamps, the source_system and channel (for example, web, Android, branch_kiosk, contact_centre), the environment (production or test), and an optional correlation_id for grouping related events in a single interaction. For DPDP audits, a clear separation between metadata about the record and the actual consent content helps you reason about lifecycle, retention, and migration without touching personal data.

The parties group identifies who is involved in the processing. At minimum this should include a subject_reference that links to your identity layer, a data_fiduciary_identifier (often a legal-entity identifier rather than a trading name), and zero or more data_processor_identifiers for vendors or group entities that perform processing on your behalf. In Indian B2B2C flows, such as diagnostic networks or marketplace models, there may be multiple Data Fiduciaries and processors in a single business flow; your schema should support structured party roles and clear references to underlying processor agreements rather than embedding free-text descriptions.

The processing group captures what is being done with the data. This is where you model purpose codes, data categories, processing operations, legal bases, and retention expectations. Instead of hard-coding text into the consent record, maintain separate catalogues for purposes and data categories with stable identifiers, machine-readable descriptions, and human-readable labels in the major languages you support. Each consent record then stores references, such as purpose_ids, data_category_ids, a legal_basis code indicating consent versus statutory obligation, and parameters such as geographic scope or cross-border transfer flags. That separation makes it easier to update notice wording or add languages without losing the original semantic intent.

Finally, the consent specifics group captures the Data Principal’s choices and how they change over time. Core elements include the consent_status (such as given, refused, withdrawn, expired), a granularity model that links each status to concrete purposes and channels, conditions such as expiry or review dates, references to notice_id and notice_version that were in force when the choice was made, and evidence_references pointing to logs, screen captures, OTP confirmations, or call recordings. This is also where you store a consent_receipt_identifier or signature if you generate receipts for Data Principals. As long as your internal schema can be projected into these four groups, you can build DPDP-ready receipts and logs even if your underlying database tables use different names or structures.

Hashing, signing, timestamps and validation

Store identifiers and decision fields needed for enforcement and audit; pseudonymise principal references and keep high-risk evidence behind a separate access-controlled reference. Hash the exact canonical notice and receipt payload to detect alteration. Sign the canonical payload or its digest with a managed private key to authenticate the issuer. Encrypt sensitive stored or transported evidence separately when the threat model requires confidentiality.

Hashing and signing are not interchangeable. A plain SHA-256 digest says only that bytes match a known digest; anyone who alters an unsigned payload can recompute a new hash. A digital signature lets a verifier check that a holder of the private key signed the canonical payload and that it was not changed. Verification still requires a trusted key id, key status, algorithm policy and certificate or key-distribution process.

Canonicalization is mandatory for deterministic hashes. Define JSON Canonicalization Scheme or another documented byte format, Unicode normalization, timestamp format and array ordering. For each notice event store notice_id, notice_version, language, presented_at, content_sha256 and an immutable content reference. For each receipt store payload_sha256, signature_alg, key_id and signature.

Timestamp separate facts separately: notice presented, choice captured, event accepted by the ledger, receipt issued, effective from, expiry if any, withdrawal requested, withdrawal effective and downstream enforcement completed. Use UTC RFC 3339 values and record a trusted clock source or tolerance policy where timing is disputed.

Version and withdraw through new events. A grant receipt has consent_version N. A later correction, renewal or withdrawal creates version N+1 with previous_receipt_id or supersedes_receipt_id and an event_type such as WITHDRAWN. Keep the old receipt immutable, update the current-state projection atomically, and issue a withdrawal receipt that the Data Principal or downstream service can retain.

Minimise evidence. Store pseudonymous subject_ref values, not raw mobile numbers or email addresses, in the portable receipt. Keep OTP logs, recordings, IP addresses or device details in a protected evidence store and reference them by URI and digest. Document retention and access separately; hashing personal data does not automatically make it anonymous.

Validation should: reject unknown schema versions and algorithms; canonicalize the payload; recompute and compare its digest; verify the signature and key validity at issued_at; validate required ids, enum values and timestamps; follow previous/supersedes links; confirm purpose and notice versions; check for duplicate or forked versions; and compare against the authoritative current ledger before authorizing processing.

The early JSON example and field dictionary are illustrative and deliberately explicit. Tailor identifiers, evidence references, algorithms, key management and retention to your system and threat model; do not treat the sample as a regulator-approved schema.

Use an append-only event ledger plus a derived current-state projection. Commands such as grant, refuse, renew and withdraw validate the expected previous version, append one immutable event, update the projection atomically and issue a receipt from the committed event. Event ids and idempotency keys prevent retries from creating duplicate versions.

Grant flow: resolve the principal reference; fetch the active purpose and notice versions from server-side catalogues; capture the Data Principal’s choices; append a GIVEN or REFUSED event; calculate canonical payload and evidence digests; sign the committed receipt; return the receipt id; and publish a versioned event to downstream systems. The UI must not invent purpose or notice versions.

Offline, assisted and guardian flows should call the same service and schema. Record channel, operator or device reference, guardian_ref and guardian authority/verification evidence only when applicable. If connectivity is unavailable, queue a signed capture envelope with a unique idempotency key and distinguish captured_at from accepted_at; do not backdate ledger order silently.

Withdrawal flow: accept a request through an equally accessible channel; authenticate the requester as policy requires; append a WITHDRAWN event at version N+1; issue a signed withdrawal receipt that references the earlier receipt; update the current projection; publish the revocation event; invalidate caches and future refreshes; and record withdrawal_effective_at plus downstream_enforced_at per system. Processing decisions after effective withdrawal should be queryable as exceptions.

Retention applies separately to current state, portable receipts and supporting evidence. An append-only ledger is not permission to retain linked personal data forever. Use explicit retention rules, pseudonymise or tombstone principal links when evidence no longer needs identity, retain cryptographic and version-chain metadata only where justified, and log deletion or archival jobs.

Continuously validate both receipt integrity and consent-state correctness. Parse against the declared schema version, verify canonicalization, digest, signature and key status, confirm a single monotonic version chain, and reconcile portable receipts with the authoritative event and current-state projection.

Common consent-record failure modes and technical mitigations.

Failure mode

Impact

Key technical controls

Missing or incorrect notice references

Cannot prove what information was shown to the Data Principal at consent time; weakens the argument that consent was informed.

Enforce referential integrity between consent records and a notice registry; make notice_id and notice_version non-nullable; expose them in decision APIs and internal queries.

Ambiguous or bundled purposes

Difficult to show that consent was specific; one flag may cover heterogeneous processing activities that should have been separated.

Require each consentable item in the UI to map to a single, stable purpose code; govern purpose catalogues jointly with legal and product; avoid reusing codes for new semantics.

Lost or delayed withdrawal propagation

Data continues to be processed after a Data Principal has withdrawn consent; creates direct regulatory exposure and user complaints.

Model consent as an append-only event stream; treat withdrawal events as idempotent but high-priority; define propagation SLAs to downstream systems; reconcile local flags against the central ledger.

Inconsistent consent state across channels

Call-centre, branch, and digital channels disagree on whether consent exists; disputes are harder to resolve and audits find conflicting evidence.

Centralise consent state computation in one service and ledger; treat channel-specific tables as read-only caches; always render UIs from the central state rather than local overrides.

In-place edits to consent records

Audit trails become unreliable; it is hard to prove that records were not modified after the fact to match desired outcomes.

Route all writes through services that append new events instead of updating rows in place; store logs in write-once or append-only storage; restrict direct database access and periodically verify hash chains or signatures on archives.

Run exception queries for: grants without a notice version or presented_at; invalid payload digests or signatures; unknown or revoked key ids; duplicate event ids; forked or skipped consent versions; orphan previous_receipt_id links; withdrawals without a withdrawal receipt; current projections that disagree with the latest event; and downstream ALLOW decisions recorded after withdrawal_effective_at.

Example validation matrix for DPDP-focused consent operations.

Area

Example test

What to verify

Notice integrity

Capture consent against a known notice version, then update the notice to a new version and capture more consents.

Existing records continue to reference the original notice_version, new records reference the new version, and both versions remain retrievable with their checksums.

Purpose granularity

Inspect a sample of consent records and associated UIs for multi-purpose checkboxes or flags.

Each consentable UI element maps to a single stable purpose code and the recorded purpose_ids accurately reflect the choices that were visible to the Data Principal.

Withdrawal propagation

Trigger withdrawals from each channel and trace them through the event bus into CRM, campaign tools, data exports, and other key systems.

All downstream systems stop processing based on the old consent state within the agreed propagation window; any lag beyond that fails the test and is treated as an incident.

Cross-channel consistency

Alternate grant and withdrawal operations from different channels for the same subject and purpose over a short period.

The central ledger shows a coherent event history and a single current state; every channel UI renders that state and no channel writes its own independent consent flag.

Retention and deletion behaviour

Create test consents with short retention periods and run retention jobs in a non-production environment.

Consent records and associated evidence are moved, pseudonymised, or deleted according to policy, and the retention or deletion itself is logged for later audit.

To make these controls operational, treat consent validation and monitoring as a recurring engineering workflow, not a one-off compliance project.

  1. Map consent flows, risks, and systems

    Inventory all channels that capture consent, all systems that rely on consent state, and the legal bases involved. Identify high-risk flows such as marketing, data sharing with processors, and cross-border exports where failure modes would have the greatest impact.

  2. Encode schema and API invariants

    Express assumptions such as non-null notice references, one-to-one UI-to-purpose mappings, and append-only consent events as explicit invariants in schema constraints, API contracts, and unit tests for the consent service.

  3. Automate validation in CI and pre-production

    Build test suites that simulate granting, refusing, and withdrawing consent from each channel, then verify downstream behaviour using the validation matrix. Run these suites in CI and pre-production; block releases that regress on consent guarantees.

  4. Instrument metrics and alerts around consent operations

    Emit metrics for consent service latency and error rates, event bus backlogs, cache refresh patterns, withdrawal propagation times, and the share of records missing critical fields. Connect these to alerting thresholds that trigger investigation before issues reach regulators or Data Principals.

  5. Schedule reconciliation and retention checks

    Run regular jobs that compare downstream consent flags to the central ledger and verify that retention and deletion jobs have executed as configured. Treat discrepancies as operational incidents with clear owners and remediation paths.

Monitor capture and withdrawal API errors, signature failures, event-bus lag, cache age, projection-rebuild drift, receipt-generation latency and time from withdrawal_effective_at to downstream enforcement. Sample complete chains regularly and alert on missing fields rather than waiting for a complaint.

Even with a solid schema and validation matrix, production systems will occasionally surface consent anomalies. Treat these as structured troubleshooting exercises that trace symptoms back to specific breaks in the consent pipeline or record model.

  • Campaigns continue after a Data Principal withdraws consent: check whether downstream systems subscribe to consent.changed events and specifically handle withdrawal. Inspect event bus metrics for dropped or backlogged events, confirm that CRM or marketing tools map withdrawal to the correct opt-out flags, and look for manual overrides or stale caches that bypass the central decision service.

  • UI and ledger show different consent states: verify that all UIs render state from the central consent service rather than local tables. Check cache time-to-live settings, confirm that idempotency keys are being sent so repeated submissions do not create conflicting events, and recompute the current state from the raw event history to see which view is wrong.

  • You cannot reconstruct which notice was shown during a dispute: audit the consent records for missing or invalid notice_id and notice_version fields, and verify that your notice catalogue retains historical versions with checksums. Fix UI integrations that fail to send notice references, and add schema constraints so such records cannot be written in future.

  • Duplicate consent records appear for the same subject and purpose: investigate how client_request_id or other idempotency keys are generated and enforced. Ensure the consent service treats duplicates for the same subject, purpose, and request ID as a single logical event. For historical data, write a migration that deduplicates events while preserving the original append-only history.

Digital Anumati - Service positions itself as a DPDP-focused consent management and governance platform, externalising many of the consent record and receipt patterns described here. It is built around a central consent ledger, real-time consent tracking, event-driven propagation of consent state, multi-language consent capture, and audit-ready artefacts aligned with India’s Data Fiduciary and Data Principal concepts. In documented healthcare deployments, it has been used to digitise consent capture at the point of care, link consents to specific processor agreements, generate hashed consent receipts alongside clinical outputs, and ensure that withdrawals move data from active systems into encrypted retention stores instead of leaving them in operational flows.[6]

For technical evaluators deciding whether to build or buy, the key question is which parts of the consent lifecycle you want to own directly and which you are comfortable delegating to a DPDP-native platform. Digital Anumati - Service can provide the consent ledger, receipt generation, and much of the integration scaffolding, while your engineering team focuses on embedding consent checks into business workflows and data pipelines. If you want to benchmark your in-house design against a production-tested DPDP consent architecture, you can review the platform details and technical documentation on the Digital Anumati - Service site.

Where Digital Anumati - Service already implements these consent patterns

1

Hashed consent receipts in diagnostic lab workflows

In one diagnostic labs deployment, Digital Anumati - Service generates secure, hashed consent receipts that are provided alongside the final pathology report to demonstrate that patient data was processed under an explicit, recorded consent decision.

Why it matters for you

If your organisation sends laboratory results or similar outputs to multiple parties, this pattern shows how receipts can travel with the artifact and provide immediate evidence that sharing and profiling were covered by valid consent.

2

Linking consent to Data Processor agreements

Digital Anumati - Service exposes APIs that bind each patient’s recorded consent to the specific Data Processor agreements in place with third-party testing facilities in a diagnostic network.

Why it matters for you

For complex B2B2C data flows, this linkage helps engineering teams enforce purpose limitation at integration points and makes it easier to explain processor responsibilities during DPDP audits.

3

Revocation pipelines that move data out of active systems

In a hospital deployment, when a patient revokes consent after discharge, Digital Anumati - Service triggers a cascading update that moves the patient’s records from active operational databases into encrypted cold-storage retention logs, removing them from active processing while preserving them for medico-legal obligations.

Why it matters for you

This shows a practical pattern for handling DPDP withdrawals without breaking clinical record-keeping: operational systems stop using the data, but an evidentiary trail remains available for disputes and statutory retention.

4

API-driven consent ledger integrated with EHR systems

At a specialised clinic, Digital Anumati - Service integrated an API-driven consent ledger with the Electronic Health Records system so that front-desk tablets could capture granular consent and map it directly to clinical workflows.

Why it matters for you

If your stack includes legacy clinical or line-of-business systems, this example demonstrates that a central consent ledger can be overlaid without rewriting the core application, while still eliminating paper forms and manual reconciliations.

5

Server-side preference centre tied to CRM platforms

In an elective healthcare deployment, Digital Anumati - Service provided a server-side preference centre that used event-driven syncing and webhooks to immediately update CRM systems when individuals rejected marketing cookies or opted out of outreach.

Why it matters for you

This pattern reduces the risk that withdrawals are lost between your consent UI and outbound engagement tools, and gives engineering and marketing teams a clear handoff contract at the API and webhook layer.

6

Multilingual consent capture at the point of care

At a high-throughput clinic, Digital Anumati - Service powered a multilingual consent capture interface in Hindi and English on front-desk tablets, with structured records written to the central consent ledger.

Why it matters for you

For Indian deployments where Data Principals interact in multiple languages, this shows how to keep the back-end schema and receipts stable while still presenting notices and purpose descriptions in the language most appropriate for the patient.

Once the basic consent record and pipeline are defined, most engineering teams run into a recurring set of edge cases: how far to go in issuing Data Principal-facing receipts, how to structure multi-language notices, what to do about offline and assisted consent capture, how to handle children’s data, and how long to retain the resulting logs. These questions often do not have single right answers, because they depend on your risk appetite and the sectors you operate in, but there are engineering patterns that narrow the options.

The answers that follow focus on the implementation perspective: how to adjust your schema and event flows so that, whatever policy choices your legal and compliance colleagues make, your systems can enforce them consistently and produce defensible evidence if the DPDP Board or a Data Principal asks you to prove what happened.

FAQs

No specific consent-receipt JSON or universal Data Principal-facing receipt format is prescribed by the DPDP Act or Rules. A reliable internal record and event history are the foundation; an interoperable signed receipt can improve transparency and portability. As of 29 August 2026, the substantive consent and withdrawal provisions are scheduled around May 2027, so confirm commencement and the exact obligation before relying on this design.

There is no single receipt-retention period in the DPDP Act. Once the relevant duties are operative, erasure and retention depend on purpose, withdrawal, legal necessity and applicable sectoral rules. Set separate periods for current consent state, portable receipts and supporting evidence; automate review, archival, pseudonymisation and deletion; and do not assume that hashing linked data makes indefinite retention acceptable.

With India’s language diversity, it is common for Data Principals to interact with notices in Hindi, English, or regional languages while back-end systems operate in English. Your consent schema should therefore treat language as a first-class property. The notice registry should store a canonical notice definition and per-language variants with stable identifiers; each consent event must capture both the canonical notice_id and the language_code actually shown. Receipts can then render the notice summary and purpose descriptions in the chosen language while still embedding canonical identifiers and checksums that your systems understand. When you hash or sign receipts, include the language code and canonical notice checksum rather than the rendered text, so that small typographical or layout differences across languages do not break verification. For voice-based or assisted flows, you can treat the script version and language as you would a visual template, with the consent record pointing to the script identifier that was read out.

For offline and assisted channels, the key is to avoid creating separate, opaque consent systems. Front-desk tablets, kiosks, and agent desktops should act as clients of the same consent APIs that power your web and mobile flows, so that every consent event ends up in the central ledger with the same schema. When consent is captured on paper, staff should transcribe choices into a digital consent capture interface as soon as practical, linking the scanned form or photograph as an evidence_reference. For contact-centre scenarios, record the call according to your telephony and regulatory requirements, but treat the agent’s screen as the authoritative source of the structured consent event: it sends subject_reference, purposes, notice_version, and channel to the consent service, which writes the event and stores the call_id as evidence. Where you send follow-up OTPs or confirmations, log those as additional evidence items tied to the same consent_record_id. This pattern keeps your evidentiary story consistent even when the initial touchpoint is not digital self-service.

Where the child-data provisions apply once operative, the Data Fiduciary must obtain verifiable consent from a parent or lawful guardian, subject to the Act, Rules and any notified exemptions. Model subject_is_child, guardian_ref, guardian_authority_ref, verification_method and versioned evidence without copying unnecessary identifiers into the receipt. A cryptographic signature authenticates the receipt issuer; it does not by itself verify guardianship.

Sources
  1. The Digital Personal Data Protection Act, 2023 - Government of India / IndiaCode
  2. Digital Personal Data Protection Rules, 2025 - Ministry of Electronics and Information Technology, Government of India
  3. DPDP Act commencement notification (13 November 2025) - Ministry of Electronics and Information Technology, Government of India
  4. Consent Receipt Specification - Kantara Initiative
  5. ISO/IEC TS 27560:2023 – Privacy technologies — Consent record information structure - International Organization for Standardization (ISO) / IEC
  6. Promotion page