GDPR and CCPA Compliance Implementation
Whistl is fully compliant with GDPR (EU) and CCPA (California) privacy regulations. This comprehensive guide explains data subject rights implementation, consent management, data processing agreements, and how Whistl protects user privacy by design.
Why Compliance Matters
Financial apps handle sensitive data requiring strict protection:
- GDPR: EU regulation with global reach (€20M or 4% revenue fines)
- CCPA: California law with consumer rights (statutory damages)
- User trust: Privacy is essential for financial apps
- Global users: Whistl serves users worldwide
Compliance isn't optional—it's built into Whistl from the ground up.
GDPR Overview
General Data Protection Regulation applies to EU residents:
Key Principles
| Principle | Requirement | Whistl Implementation |
|---|---|---|
| Lawfulness | Legal basis for processing | Consent + Contract necessity |
| Purpose Limitation | Specific, explicit purposes | Privacy policy defines purposes |
| Data Minimisation | Adequate, relevant, limited | Only necessary data collected |
| Accuracy | Accurate and up-to-date | User can edit all data |
| Storage Limitation | Kept no longer than necessary | Auto-deletion after account closure |
| Integrity | Secure processing | Encryption, access controls |
| Accountability | Demonstrate compliance | Documentation, audits |
Data Subject Rights (GDPR)
EU users have extensive rights over their data:
Right to Access (Article 15)
Users can request a copy of all their data:
// Data Export Implementation
class DataExportService {
func generateExport(for user: User) async throws -> DataExport {
return DataExport(
personalInfo: await getPersonalInfo(user),
transactions: await getTransactions(user),
settings: await getSettings(user),
goals: await getGoals(user),
interventionHistory: await getInterventionHistory(user),
analyticsData: await getAnalyticsData(user),
generatedAt: Date(),
format: .json // Also available: PDF, CSV
)
}
// Export delivered via secure download link
// Link expires after 7 days
}
Right to Rectification (Article 16)
Users can correct inaccurate data:
- In-app editing: All personal data editable
- Support requests: Email privacy@whistl.app
- Response time: Within 30 days
Right to Erasure (Article 17)
"Right to be forgotten" - users can delete their data:
class DataDeletionService {
func deleteAllData(for user: User) async throws {
// Delete from primary database
try await db.deleteUser(user.id)
// Delete from backups (scheduled)
try await scheduleBackupDeletion(user.id)
// Delete from analytics
try await analytics.deleteUser(user.id)
// Delete from third parties
try await notifyProcessors(.deletion, user: user)
// Log deletion for compliance
try await auditLog.log(.dataDeletion, user: user)
// Confirm to user
try await sendDeletionConfirmation(user)
}
// Deletion completed within 30 days
// Some data retained for legal obligations (fraud prevention)
}
Right to Portability (Article 20)
Users can export data in machine-readable format:
- Formats: JSON, CSV, XML
- Structure: Standardized schema
- Delivery: Secure download link
- Direct transfer: API for automated transfer
Right to Object (Article 21)
Users can object to certain processing:
- Analytics: Opt-out in settings
- Marketing: Unsubscribe from emails
- Profiling: Disable ML-based features
CCPA Overview
California Consumer Privacy Act applies to California residents:
CCPA Rights
| Right | Description | Whistl Implementation |
|---|---|---|
| Right to Know | What data is collected | Privacy policy + data export |
| Right to Delete | Delete personal information | In-app deletion + support |
| Right to Opt-Out | "Do Not Sell My Data" | No selling + opt-out toggle |
| Right to Non-Discrimination | Same service regardless | Full features for all users |
| Right to Correct | Fix inaccurate data | In-app editing |
Consent Management
Whistl uses explicit, informed consent:
Consent Categories
enum ConsentCategory: String, CaseIterable {
case essential = "Essential Services"
case analytics = "Analytics & Improvement"
case personalization = "Personalization"
case marketing = "Marketing Communications"
var description: String {
switch self {
case .essential:
return "Required for app functionality (cannot be disabled)"
case .analytics:
return "Help us improve Whistl with anonymous usage data"
case .personalization:
return "Personalize your experience with ML recommendations"
case .marketing:
return "Receive tips, updates, and product news"
}
}
var defaultState: Bool {
switch self {
case .essential: return true // Required
case .analytics: return false // Opt-in
case .personalization: return false // Opt-in
case .marketing: return false // Opt-in
}
}
}
Consent Dialog
struct ConsentManagerView: View {
@State private var consents: [ConsentCategory: Bool] = [
.essential: true,
.analytics: false,
.personalization: false,
.marketing: false
]
var body: some View {
VStack(spacing: 20) {
Text("Your Privacy Choices")
.font(.title)
.fontWeight(.bold)
ForEach(ConsentCategory.allCases, id: \.self) { category in
ConsentRow(
category: category,
isOn: $consents[category] ?? false,
disabled: category == .essential
)
}
Button("Save Preferences") {
saveConsents(consents)
}
.buttonStyle(.borderedProminent)
Text("You can change these settings anytime in Privacy Settings.")
.font(.caption)
.foregroundColor(.secondary)
}
.padding()
}
}
Data Processing Agreements
Third-party processors are bound by DPAs:
Processor Categories
| Processor | Purpose | Data Shared | Location |
|---|---|---|---|
| Plaid | Bank connectivity | Account info, transactions | US (SCCs) |
| AWS | Cloud hosting | Encrypted user data | US/EU (SCCs) |
| Sentry | Crash reporting | Anonymized crash data | US (SCCs) |
| Google Analytics | Analytics | Anonymous usage data | US (SCCs) |
| SendGrid | Email delivery | Email addresses | US (SCCs) |
Standard Contractual Clauses
All US-based processors sign EU SCCs for data transfers.
Data Breach Procedures
Whistl has procedures for data breaches:
Breach Response
- Detection: Automated monitoring + user reports
- Assessment: Determine scope and impact
- Containment: Stop the breach
- Notification: Inform authorities within 72 hours (GDPR)
- User notification: Inform affected users
- Remediation: Fix vulnerabilities
- Documentation: Record for compliance
Privacy by Design
Privacy is built into Whistl from the start:
Design Principles
- Data minimization: Collect only what's necessary
- Purpose limitation: Use data only for stated purposes
- Storage limitation: Delete when no longer needed
- Security: Encrypt data at rest and in transit
- Transparency: Clear privacy notices
- User control: Easy-to-use privacy settings
Children's Privacy
Whistl is not intended for children under 18:
- Age verification: Users must confirm age 18+
- No collection: Don't knowingly collect from under-18s
- Parental rights: Parents can request deletion
International Data Transfers
Data transfers comply with regulations:
Transfer Mechanisms
- EU-US: Standard Contractual Clauses (SCCs)
- UK: UK Addendum to SCCs
- Australia: Adequacy decision (no additional measures needed)
- Other: SCCs or adequacy decisions
Compliance Documentation
Whistl maintains comprehensive documentation:
Required Documents
- Record of Processing Activities (ROPA)
- Data Protection Impact Assessments (DPIA)
- Data Processing Agreements (DPA)
- Privacy Policy
- Cookie Policy
- Breach Response Procedures
- Data Subject Request Procedures
Contact Information
Users can contact Whistl for privacy matters:
- Privacy Email: privacy@whistl.app
- Data Protection Officer: dpo@whistl.app
- Response Time: Within 30 days
- Supervisory Authority: Office of the Australian Information Commissioner (OAIC)
Conclusion
Whistl is fully compliant with GDPR and CCPA through comprehensive privacy controls, user rights implementation, and privacy-by-design architecture. Users have full control over their data with easy-to-use tools for access, deletion, and consent management.
Privacy isn't just compliance—it's a core value at Whistl.
Your Privacy Protected
Whistl is GDPR and CCPA compliant with comprehensive privacy controls. Download free and control your data.
Download Whistl FreeRelated: Privacy-Compliant Analytics | Local Storage Encryption | Cloud Sync with E2E Encryption