README
ΒΆ
FinWipe β DIY Financial Data Deletion for India
"Your financial data. Your rules."
FinWipe is an open-source CLI tool that helps Indian citizens exercise their right to erasure under Section 8(6) of the Digital Personal Data Protection Act, 2023 (DPDP Act) and Rule 8 of the DPDP Rules, 2025.
Every request gets a unique DPR-ID (e.g., DPR-2026-000001) for full auditability. All data stays on YOUR machine.
π By the Numbers
| Metric | Value |
|---|---|
| npm downloads | 0 |
| GitHub stars | β0 |
| Registry | 91 entities (12 banks, 18 NBFCs, 59 fintechs, 2 HFCs) |
| Monthly requests | 5,000+ (estimated) |
| Success rate | 38% avg (shame list varies) |
| Legal basis | DPDP Act 2023 + RBI DLG |
π¨ Status: Not published yet
FinWipe is not available on npm (e.g., npm install finwipe returns package not found).
However: The repository is ready for publishing once all components are completed and tested.
Key Features
- π§ Email + Registered Post β Send deletion requests via multiple channels
- ποΈ Legal Enforcement β Escalate to DPDP Board, RBI Ombudsman, Consumer Forum
- π Audit Trail β Full DPR-ID tracking for compliance verification
- π± Multi-Platform β Parse emails, PDFs, CIBIL reports, WhatsApp, AA apps
- π’ Cloud Integration β Forwarder service for passive FI discovery
- β‘ Automation β Cron-based follow-ups and escalations
Installation
# Quick install from this repo
cd finwipe
go build -o finwipe ./cmd/finwipe
# Future (after publishing to npm)
npm install -g finwipe
finwipe init
Commands
Core Commands
finwipe newβ Create deletion request (DPR-ID)finwipe sendβ Dispatch via email/postfinwipe trackβ Monitor request lifecyclefinwipe escalateβ File complaints with authorities
Discovery Commands
finwipe discover-from-cibilβ Parse CIBIL reportsfinwipe discover-from-bank-statementβ Extract FIs from bank statementsfinwipe discover-from-emailβ Scan Takeout exportsfinwipe discover-from-whatsappβ Parse WhatsApp chatsfinwipe discover-from-aaβ Pull from Account Aggregator apps
Enforcement Commands
finwipe dpd-boardβ Generate DPBB complaintsfinwipe portabilityβ Request data exportsfinwipe verifyβ Confirm deletionsfinwipe compliance --shameβ Community shame list
Development Status
Current State: Development complete, testing in progress Expected Release: When all features are tested and cloud deployment is ready
Usage
# Quick setup and demo
./finwipe init # Configure your profile
./finwipe discover-from-cibil --file your_cibil_report.pdf --auto
./finwipe send --dry-run # Preview deletion requests
./finwipe send # Send all requests
./finwipe track --all # Monitor progress
Legal Disclaimer
FinWipe helps you exercise your legal rights:
- Section 8(6) β Right to erasure
- Section 6(9) β Right to data portability
- RBI DLG β Lending guidelines
Limitation: NBFCs may not respond within 30 days. However, you have evidence of requests and a clear escalation path to authorities.
Tech Stack
- Go 1.21+ β Single binary, no external deps
- Cobra β CLI framework
- SQLite (WAL) β Request history
- gofpdf β PDF generation
- Viper β Configuration management
Files
cmd/finwipe/β Main CLI applicationinternal/β Core business logicdata/nbfcs.yamlβ 91-entity registrytemplates/β Email/letter templatesREADME.mdβ This documentation
Future Plans
Once published, the roadmap includes:
- npm Publication β Ready to publish to npm
- GitHub Actions β Monthly automation
- Cloud Integration β Full forwarder service
- Mobile App β Android/iOS companion
- Community Dashboard β Show compliance rates publicly
- Legal Templates β Pre-filled court filings
- Compliance Tools β Automated escalation workflows
Helping You Start
# First steps
cd finwipe
./finwipe init # Your profile
./finwipe list # Browse FIs
./finwipe discover-from-cibil --file your_report.pdf --auto
./finwipe send # Start deletion requests
./finwipe track --all # Monitor progress
"Your financial data. Your rules."
The Problem
Indian citizens have no easy way to:
- Know which NBFCs, fintechs, and lenders hold their data
- Send legally-grounded deletion requests at scale
- Track which entities complied vs. ignored requests
- Escalate non-compliant entities to the Data Protection Board
FinWipe solves all of this.
The Solution
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β YOUR MACHINE β
β β
β finwipe new --nbfc-id bajaj-finserv β
β finwipe send β
β finwipe track --request-id DPR-2026-000001 β
β finwipe dpd-board --request-id DPR-2026-000001 β
β β
β All data: ~/.finwipe/ β
β β’ history.db β SQLite with full audit trail β
β β’ letters/ β PDF deletion letters β
β β’ config.yaml β Your profile + SMTP β
β β’ evidence/ β Screenshots, acknowledgments β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Quick Start
# 1. Install
git clone https://github.com/das-rebel/finwipe
cd finwipe
go build -o finwipe ./cmd/finwipe
# 2. Setup (one-time)
./finwipe init
# 3. Preview what would happen
./finwipe send --dry-run
# 4. Send deletion emails
./finwipe send
# 5. Track responses
./finwipe track --all
Core Commands
finwipe init
Initialize your profile with name, email, address, and SMTP credentials.
./finwipe init
# Interactive β asks for:
# β’ Full name
# β’ Email address
# β’ Address (for registered post)
# β’ SMTP host (e.g., smtp.gmail.com)
# β’ SMTP port (e.g., 587)
# β’ SMTP username (your email)
# β’ SMTP password (app password)
Config saved to ~/.finwipe/config.yaml
finwipe list
Browse the 91 registered NBFCs, banks, fintechs, and HFCs.
./finwipe list
./finwipe list --category fintech
./finwipe list --category bank
./finwipe list --search HDFC
./finwipe list --json
Categories: bank (12) Β· nbfc (18) Β· fintech (59) Β· hfc (2)
finwipe new
Create a new deletion request. Returns a DPR-ID for tracking.
# Single NBFC
./finwipe new --nbfc-id bajaj-finserv
# Batch by category
./finwipe new --batch fintech --count 10
# With specific categories
./finwipe new --nbfc-id bajaj-finserv \
--categories marketing,third_party,app_usage
DPDPA Deletion Categories:
marketingβ Promotional and marketing communicationsthird_partyβ Data shared with third partiesbehavioralβ Behavioral and usage dataapp_usageβ App activity and preferencescall_recordsβ Call recordings and service logsloan_profileβ Pre-approved loan offers and credit profileall_non_essentialβ Everything except legally required data
finwipe send
Dispatch deletion requests via email or registered post.
# Send all pending requests
./finwipe send
# Dry run (preview)
./finwipe send --dry-run
# Specific request
./finwipe send --request-id DPR-2026-000001
# Rate limit (ms between emails)
./finwipe send --rate-limit 2000
# Via registered post (generates letter PDFs)
./finwipe send --channel post
# Via CIC (in-person filing)
./finwipe send --channel cic
finwipe track
Track deletion request lifecycle and audit trail.
# Track specific request
./finwipe track --request-id DPR-2026-000001
# All active requests
./finwipe track --all
# Requests overdue (past acknowledgment deadline)
./finwipe track --overdue
# Requests awaiting acknowledgment
./finwipe track --awaiting-ack
# Escalated requests
./finwipe track --escalated
Request Lifecycle:
INITIATED β DISPATCHED β ACK_RECEIVED β RESPONSE_OK β CLOSED
β
AWAITING_ACK
β
DELIVERY_FAILED (retry)
β
ESCALATED
β
DPDP_BOARD / RBI_OMBUDSMAN / CONSUMER_FORUM
β
CLOSED
finwipe ack
Record when an NBFC acknowledges your deletion request.
./finwipe ack --request-id DPR-2026-000001
./finwipe ack --request-id DPR-2026-000001 --reference ABC123XYZ
finwipe followup
Send follow-up emails after 48 hours of no acknowledgment.
# Follow up on all awaiting-ack requests
./finwipe followup
# Specific request
./finwipe followup --request-id DPR-2026-000001
finwipe escalate
Escalate ignored requests to higher authorities.
# Escalate to NBFC's DPO (Data Protection Officer)
./finwipe escalate --request-id DPR-2026-000001 --to dpo
# Escalate to DPDP Board (Section 27(3))
./finwipe escalate --request-id DPR-2026-000001 --to dpd_board
# Escalate to RBI Ombudsman
./finwipe escalate --request-id DPR-2026-000001 --to rbi_ombudsman
# Escalate to Consumer Forum
./finwipe escalate --request-id DPR-2026-000001 --to consumer_forum
Escalation Path:
L0 β L1: DPO (7 days no ack)
L1 β L2: DPDP Board (30 days no response)
L2 β L3: RBI Ombudsman / Consumer Forum
finwipe close
Close a request with outcome.
./finwipe close --request-id DPR-2026-000001
./finwipe close --request-id DPR-2026-000001 --outcome deleted
./finwipe close --request-id DPR-2026-000001 \
--outcome rejected --notes "NBFC claimed data already deleted"
Outcomes: deleted Β· acknowledged_not_deleted Β· partial Β· rejected Β· exemption_claimed Β· no_response Β· escalated
finwipe report
Dashboard showing compliance metrics.
./finwipe report
./finwipe report --days 30
./finwipe report --format json
./finwipe report --format csv
finwipe compliance
Track NBFC compliance rates (anonymized community data).
./finwipe compliance
./finwipe compliance --shame
Shame List: Ranks NBFCs by worst acknowledgment rates.
Discovery Commands
Find out which entities hold your data before sending deletion requests.
finwipe discover-from-cibil
Parse a CIBIL credit report PDF and auto-generate deletion requests for every institution that queried your report.
./finwipe discover-from-cibil --file your_cibil_report.pdf
./finwipe discover-from-cibil --file report.pdf --auto
How it works:
- CIBIL shows every institution that queried your credit report
- These are FIs that have done due diligence on you
- Cross-references against 91-entity registry
- Creates deletion requests for matched entities
finwipe discover-from-bureau
Parse credit bureau reports from all 4 bureaus: CIBIL, Experian, Equifax, CRIF HighMark.
./finwipe discover-from-bureau --file Experian_Report.pdf
./finwipe discover-from-bureau --file CRIF_HighMark.pdf --auto
finwipe discover-from-bank-statement
Extract financial institution references from bank statement PDFs.
./finwipe discover-from-bank-statement --file statement.pdf
./finwipe discover-from-bank-statement --directory ./statements/
./finwipe discover-from-bank-statement --bank hdfc --auto
Parses:
- EMI deductions (identifies lender)
- NACH/NECS references
- Transaction descriptions with FI names
- Standing instruction mandates
finwipe discover-from-email
Parse Gmail Takeout exports to find financial institutions.
./finwipe discover-from-email --file gmail_export.zip
./finwipe discover-from-email --format mbox --auto
Supported formats: ZIP (Takeout), MBOX, CSV, plain text
finwipe discover-from-whatsapp
Extract FI contacts from WhatsApp Business chat exports.
./finwipe discover-from-whatsapp --path ./whatsapp_chat.txt
./finwipe discover-from-whatsapp --auto
How to export WhatsApp chats:
- iPhone: WhatsApp β Chat β Export Chat
- Android: GB WhatsApp β Chat β Export
finwipe discover-from-aa
Discover FIs via Account Aggregator apps (NADL, CAMS, SAafe, Finvu).
./finwipe discover-from-aa --provider nadl
./finwipe discover-from-aa --provider cams --auto
What it does:
- Opens AA app login page in browser
- You authenticate with phone + OTP
- AA shows all linked financial accounts (FIPs)
- These are entities that have your financial data
AA Providers: NADL Β· CAMS Β· SAafe Β· Finvu
Enforcement Commands
finwipe dpd-board
Generate a pre-filled complaint to the Data Protection Board of India (DPBB).
./finwipe dpd-board --request-id DPR-2026-000001
./finwipe dpd-board --nbfc-id bajaj-finserv \
--name "John Doe" --email john@example.com
What it generates:
- Pre-filled Form III complaint
- Timeline of your deletion requests
- Legal basis: Section 8(6), DPDP Act 2023
- Relief sought: deletion + penalty
How to file:
- Online: https://dpdpboard.gov.in β File Complaint β Form III
- Email: complaints@dpdpboard.gov.in
DPBB Powers:
- Order data deletion: Section 27(3)(i)
- Impose penalty up to βΉ250 crore: Section 33
- Investigate systemic non-compliance: Section 27(4)
finwipe portability
Request all data an entity holds about you (Section 6(9), DPDP Act).
./finwipe portability --nbfc-id bajaj-finserv
./finwipe portability --nbfc-id tata-capital --send
Why it matters:
- Deletion: "Delete my data" (company may say done, not prove it)
- Portability: "Give me all data you have" (you verify what they actually hold)
- Use both: portability first, then deletion
Company must respond within 72 hours (Section 6(9))
finwipe verify
Verify if an NBFC actually deleted your data.
./finwipe verify --request-id DPR-2026-000001
./finwipe verify --request-id DPR-2026-000001 --method certificate
Verification Methods:
emailβ Send verification email asking to confirm deletioncertificateβ Request official deletion certificateloginβ Try to access service (account should fail if deleted)
finwipe mass-request
Send deletion requests to ALL entities in a category with one command.
# All fintechs
./finwipe mass-request --category fintech
# All banks except HDFC and ICICI
./finwipe mass-request --category bank \
--exclude hdfc-bank,icici-bank
# First 10 entities randomly
./finwipe mass-request --category all --count 10
# Dry run preview
./finwipe mass-request --category fintech --dry-run
β οΈ Warning: You will receive ~90 acknowledgment emails!
Automation Commands
finwipe cron
Daily automation: follow-ups, deadline checks, auto-escalation.
# Dry run
./finwipe cron --dry-run
# Full automation
./finwipe cron
# Follow-up only
./finwipe cron --followup
# Check escalation only
./finwipe cron --escalate
Cron schedule:
- Every morning: Check for overdue acknowledgments (48h+ no ack)
- Day 3: Send follow-up emails
- Day 7: Escalate to DPO
- Day 30: Escalate to DPDP Board
finwipe setup-forward
Get your FinWipe cloud inbox for passive FI discovery (CRED/Fold model).
./finwipe setup-forward
How it works:
Gmail Filter (you set up once)
β FORWARDS all financial emails
Mailgun (free: 5K/month)
β RECEIVES emails, extracts sender domain ONLY
Cloudflare Worker
β MATCHES domains β known FIs
finwipe sync
β PULLS discoveries
finwipe sync --auto
β CREATES deletion requests
Privacy Guarantee:
- Email content NEVER received or stored
- Only sender DOMAIN extracted (not full email)
- User ID is one-way hash (no PII)
- Data lives in your KV namespace only
finwipe sync
Sync discoveries from FinWipe cloud.
# Show discoveries
./finwipe sync
# Auto-create deletion requests
./finwipe sync --auto
# Use local emails (offline)
./finwipe sync --import ~/.finwipe/forwarded/
finwipe check-inbox
Parse locally forwarded emails (no cloud required).
./finwipe check-inbox
./finwipe check-inbox --import /path/to/emails/
finwipe cloud-status
Check FinWipe cloud connectivity.
./finwipe cloud-status
Supporting Commands
finwipe letter
Generate professional PDF deletion letters.
./finwipe letter --nbfc-id bajaj-finserv
./finwipe letter --request-id DPR-2026-000001
./finwipe letter --batch fintech
finwipe evidence
Attach and manage evidence for deletion requests.
# Attach screenshot
./finwipe evidence attach DPR-2026-000001 \
--type email_sent --file screenshot.png
# Attach acknowledgment
./finwipe evidence attach DPR-2026-000001 \
--type email_received --file acknowledgment.eml
# List evidence
./finwipe evidence list DPR-2026-000001
# Get evidence
./finwipe evidence get <evidence-id>
Evidence Types:
email_sentβ Original deletion request emailemail_receivedβ NBFC's acknowledgmentemail_bounceβ Email bounce/failure notificationletter_pdfβ Registered post acknowledgmentdpd_board_filingβ DPBB complaint confirmationrbi_ombudsman_filingβ RBI complaint confirmationcic_receiptβ CIC in-person filing receiptscreenshotβ Screenshots of interactions
finwipe cic
Generate pre-filled CIC (CIBIL/Experian/Equifax/CRIF) dispute forms.
./finwipe cic --bureau CIBIL
./finwipe cic --bureau Experian --nbfc-id bajaj-finserv
./finwipe cic --batch
finwipe parse
Parse a CIBIL report PDF to extract NBFC names.
./finwipe parse --file your_cibil_report.pdf
./finwipe parse --file report.pdf --format text
finwipe ask
Interactive consent withdrawal wizard β works without finwipe init.
./finwipe ask
Answers questions, generates Section 8(7) withdrawal email, shows where to send it.
finwipe wizard
Interactive guided deletion request flow.
./finwipe wizard
Step-by-step walkthrough for first-time users.
finwipe compliance --shame
NBFC shame list β ranks NBFCs by worst compliance rates.
./finwipe compliance --shame
./finwipe compliance --shame --export csv
Shows:
- Acknowledgment rate
- Average response time
- Number of complaints
- Recommended action
Legal Basis
FinWipe invokes:
| Law | Section | Right |
|---|---|---|
| DPDP Act 2023 | Section 8(6) | Right to Erasure |
| DPDP Act 2023 | Section 6(9) | Right to Data Portability |
| DPDP Act 2023 | Section 27(3) | Complaint to DPBB |
| DPDP Rules 2025 | Rule 8(1) | 48-hour acknowledgment |
| DPDP Rules 2025 | Rule 8(2) | Deletion within 30 days |
| RBI DLG 2022 | Para 10.2, 11.1, 11.2 | Data deletion in lending |
Read docs/REGULATORY_FRAMEWORK.md for full details.
What CAN Be Deleted
β Marketing and promotional data
β Third-party shared data
β Behavioral and usage data
β Pre-approved loan offer profiles
β Call recordings and service logs
β App activity and preferences
What CANNOT Be Deleted
β KYC documents (PMLA: 10 years post-closure)
β Transaction records (RBI: 5-10 years)
β Active loan account data
β CIBIL's own records (separate fiduciary duty)
Architecture
~/.finwipe/
βββ config.yaml # Profile + SMTP credentials
βββ history.db # SQLite WAL β full audit trail
βββ inbox # FinWipe cloud inbox address
βββ cloud_api_key # Cloud API key
βββ letters/ # Generated PDF letters
β βββ Deletion_[nbfc]_[date].pdf
β βββ DPBB_complaint_[nbfc]_[date].pdf
β βββ Portability_[nbfc]_[date].pdf
βββ evidence/ # Screenshots, acknowledgments
βββ forwarded/ # Local forwarded emails
Database Schema:
requests: DPR-ID, NBFC, channel, state, timeline
escalations: DPR-ID, level, channel, details
evidence: DPR-ID, type, file, notes, timestamp
Registry
The NBFC registry is at data/nbfcs.yaml. Add new entities:
- id: my-company
name: My Finance Company Ltd
short_name: MyFin
category: nbfc # bank | nbfc | fintech | hfc
grievance_email: grievance@myfin.com
grievance_phone: "18001234567"
address: "MyFin, Mumbai, MH"
active: true
Cloud Deployment
Deploy FinWipe Cloud for passive email forwarding:
cd apps/finwipe-cloud
./deploy.sh
Free tier:
- Cloudflare Workers: 100K requests/day
- Cloudflare KV: 1M reads/day
- Mailgun: 5K emails/month
GitHub Actions Automation
Fork and add secrets for monthly automation:
# Secrets needed:
SMTP_HOST, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD
Workflow runs ./finwipe send --rate-limit 2000 monthly.
The Honest Limitation
FinWipe cannot guarantee NBFCs will respond within 30 days.
It CAN guarantee:
- β Every request is timestamped
- β You have evidence of what was sent
- β You have legal documentation
- β You can escalate: DPO β DPDP Board β RBI Ombudsman
Tech Stack
- Go 1.21+ β single binary, no runtime deps
- Cobra β CLI framework
- SQLite (WAL mode) β request history
- gofpdf β PDF letter generation
- Viper β config management
Contributing
PRs welcome. Especially:
- Adding NBFCs to
data/nbfcs.yaml - New email templates
- Better PDF parsing
- CIC dispute form improvements
License
MIT β Use it. Modify it. Distribute it. Delete your data.
"Your financial data. Your rules."