Data Protection

Privacy Policy

This privacy policy provides a detailed overview of how Money Koi processes personal data within our Flutter mobile application and our Nuxt-based web presence.

1. Controller and Contact Information

The responsible party (Controller) within the meaning of the General Data Protection Regulation (GDPR) and the Austrian Data Protection Act (DSG) is: Direct contact for data protection inquiries: moneykoi.app@gmail.com

This policy applies to the mobile application 'Money Koi' (available on iOS and Android) and the associated web domains used for promotion and service delivery.

2. Categories of Processed Data

2.1 Authentication & Identity Data

  • Email Address: Required for Magic Link (OTP) login and account management.
  • Google OAuth Data: If you use Google Sign-In, we process your unique Google Identifier (sub) and email address. We do not access your Google Drive, contacts, or other private files. This data is used solely for identity verification.
  • Password Metadata: Salted and hashed password strings (for email/password login only); the plain-text password is never stored.
  • Internal Identifiers: tenant_id, profile_id, and assigned user roles for system logic.

2.2 User-Generated Content (Financial Data)

  • Profile Information: Display name, avatar URL, and localized settings (e.g., preferred currency, language).
  • Household Data (Tenants): Names and structural grouping of shared or private households.
  • Account & Category Data: Custom names, icons, and color hex-codes assigned by the user.
  • Transaction Records: Date, description, amount, and relational links to accounts or categories. All financial data is entered manually by the user; no automated bank synchronization (PSD2) is performed.

2.3 Technical, Metadata & Sync Logs

  • Synchronization Logs: profile_id, affected table names, and timestamps of changes to ensure offline-to-online consistency.
  • System Metadata: created_at, updated_at, and deleted_at timestamps for all records.
  • Device Information: App version, operating system version, and device type for troubleshooting and stability analysis.

3. Legal Bases for Processing

  • Contractual Performance (Art. 6(1)(b) GDPR): Processing is necessary to provide the core app functions, such as data synchronization, account management, and multi-device support.
  • Legitimate Interest (Art. 6(1)(f) GDPR): To ensure network and information security, perform error analysis (Sentry), and prevent fraudulent use of our services.
  • Consent (Art. 6(1)(a) GDPR): For optional website analytics (Vercel) or other features where you have given explicit permission. You may revoke this consent at any time.

4. Recipients and Data Processors

  • Supabase (Database, Auth, Storage): Our primary infrastructure provider. Data is stored in the EU region (Frankfurt, Germany).
  • Sentry (Functional Error Tracking): Used to identify crashes and bugs in the Flutter app. IP addresses are masked or anonymized where technically possible.
  • Vercel (Web Hosting & Analytics): For our marketing website. Analytics are strictly opt-in and GDPR-compliant.
  • Amazon SES / Supabase SMTP: For the delivery of essential transactional emails (e.g., login codes).
  • International Transfers: Where data is processed outside the EEA (e.g., USA), we ensure a high level of protection via Data Processing Agreements (DPA) and the application of Standard Contractual Clauses (SCCs) or the EU-U.S. Data Privacy Framework.

5. Storage Duration and Deletion

  • Active Data: Your financial records and profile data are stored for as long as your account is active.
  • Account Deletion: You can trigger full account deletion within the app settings. All associated personal data on the production server will be deleted immediately.
  • Backup Retention: For disaster recovery purposes, encrypted backups may persist for up to 30 days before being overwritten.
  • Technical Logs: Server logs and telemetry data are generally deleted or anonymized after 90 days.

6. Cookies and Local Storage

  • Mobile App: We use Secure Storage (KeyStore/Keychain) for authentication tokens and SQLite for local data persistence (offline-first capability). No third-party tracking cookies are used in the app.
  • Website: We use only strictly necessary technical cookies by default. Analytical tracking via Vercel only occurs if you interact with our consent banner and grant explicit approval.

7. Data Security Measures

  • End-to-End Encryption: Data transfer between the app and server is secured via TLS/SSL encryption.
  • Row Level Security (RLS): Our database uses strict RLS policies to ensure that users can only access data belonging to their specific tenant_id.
  • Access Control: Administrative access to backend infrastructure is strictly limited and secured via Multi-Factor Authentication (MFA).

8. Protection of Minors

Money Koi is not intended for users under the age of 16. If we become aware that we have collected personal data from a child under 16 without parental consent, we will take immediate steps to delete such information.

9. Your Rights as a Data Subject

  • Right of Access: Request a copy of the data we hold about you.
  • Right to Rectification: Correct inaccurate or incomplete data.
  • Right to Erasure ('Right to be Forgotten'): Request the deletion of your data.
  • Right to Data Portability: Receive your data in a structured, commonly used, and machine-readable format.
  • Right to Object: Object to processing based on legitimate interests.
  • Right to Lodge a Complaint: You have the right to complain to the Austrian Data Protection Authority (Barichgasse 40–42, 1030 Vienna, dsb@dsb.gv.at).

10. Updates to this Policy

We may update this Privacy Policy from time to time to reflect changes in our practices or for legal, technical, or regulatory reasons. The 'Last Updated' date at the bottom will reflect the latest version. Status: 01.04.2026.