The developer-first DPDP stack for Indian engineering teams: consent, data-rights, and legal-hold-aware deletion - by API. We hold the tamper-evident evidence; your users' personal data never leaves your systems.
$ pip install dpdpstack-python-sdkFull compliance deadline — 13 May 2027fpr a3:f1:9c:2b:7e:44:0d:e1 · getdpdp.net
Zero-egress
Your users' data never leaves your systems - we hold only the proof.
Self-hostable
Run it inside your own VPC. India data residency.
Open-source SDK
pip install and go. The engine works fully offline.
Tamper-evident
Hash-chained audit + counter-signed certificates.
Capturing consent is a week of work. But deleting a user's data on withdrawal across your DB, analytics, CRM and backups - while RBI, PMLA and CERT-In force you to keep some of it - with audit-proof evidence, is months of undifferentiated engineering. DPDPStack does that part.
DPDP says erase; RBI/PMLA/CERT-In say retain. We delete what we can, defer what the law holds, anonymize where it fits - automatically, with the basis recorded.
Purpose-level consent with 22-language notices and immutable receipts; access/correction/erasure/nomination & grievances tracked to their SLA.
Every event in a hash-chained log; a counter-signed Certificate of Erasure a regulator can verify independently - and you cannot fake.
Propagate an erasure to your DB, analytics, CRM and backups, and collect proof each one complied. The part teams dread building.
The open-source library does everything locally - legal-hold erasure, anonymization, a hash-chained audit log, and a Certificate of Erasure. Optionally push the evidence to getdpdp.net for a durable, counter-signed, regulator-ready vault. Gate the proof, not the function.
Read the docs$ pip install dpdpstack-python-sdk
from dpdpstack import ErasureEngine, rbi_kyc, issue_certificate
engine = ErasureEngine()
# user withdraws consent - but RBI KYC mandates 5y retention:
res = engine.request_erasure(
subject="user_42",
policy=rbi_kyc("kyc"),
reason="consent_withdrawn",
)
print(res.status) # -> "deferred" (not deleted; basis recorded)
cert = issue_certificate(engine.audit, "user_42", "kyc")
# -> verifiable Certificate of ErasureDesign partners get the beta free and shape the roadmap. Tell me your biggest DPDP headache - it goes straight to the founder.