The security of your data is our priority
We transfer data encrypted and store it primarily in the EU; backups are encrypted too. We show openly how we protect it.
Where your data lives
The app and the database run on a Hetzner Cloud virtual server in Nuremberg (Germany) that we run only for our own services — it isn't shared hosting. We store backups and uploaded files with Backblaze in the EU (Amsterdam). Organizations share one database and are separated at the level of every record. Services from US providers (Anthropic, OpenAI, Backblaze, Resend, Sentry) rely on the EU–US Data Privacy Framework or standard contractual clauses (SCC) — see Sub-processors.
Primary hosting in the EU
Database and server in Germany, US integrations via DPF/SCC
Encryption
Your data is protected at every level: at rest, in transit and in backups.
At rest (stored data)
AES-256-GCM encryption of sensitive secrets — OAuth tokens (Fakturoid, iDoklad, Google Calendar, Freelo) and webhook signing secrets. Each record is encrypted individually with a unique IV. Passwords are hashed with scrypt. API keys are hashed with HMAC-SHA256 and a pepper.
In transit (data transfer)
All communication goes over TLS 1.3. HSTS with a one-year max-age and the preload directive. No data is sent over an unencrypted channel.
Backups
Encrypted daily database backups using GPG (RSA-4096). Only the holder of the private key can decrypt them. Backups are encrypted before they're sent to offsite storage.
Role hierarchy
Access control
Every user has access only to what they actually need. 6 role levels with granular permissions.
Backups
A multi-layer backup strategy keeps your data safe even in the worst case.
Audit and monitoring
Every change is recorded. Every error is reported immediately. We regularly review the security of the whole application.
Audit log
A complete record of who changed what and when, including the IP address. Filterable and exportable. Available in Settings (admin/owner), and included in the GDPR export under Art. 20 (the user's actions over the last 365 days).
Sentry error tracking
Immediate error reports. Default personal data (IP, cookies, request body) isn't sent — a record carries only the user and organization identifiers and technical context. Data in the EU.
Internal security audit
A regular internal audit based on the OWASP Top 10 methodology. We check all 10 risk categories and fix the findings in the code.
Plausible Analytics
Self-hosted analytics without cookies. GDPR-friendly, no user tracking.
Protection against attacks
GDPR compliance
Compliance with EU Regulation 2016/679 (GDPR) isn't just a checkbox — it's the basis of how we build and run the service.
Sub-processors
Who processes the data you enter into the app. The binding list is in the data processing agreement (in Czech); this table is its translation.
| Sub-processor | Location | Purpose | Data processed |
|---|---|---|---|
| Hetzner Online GmbH | EUNuremberg, Germany | Server and database | All data (server in the EU) |
| Backblaze, Inc. | DPF/SCCUSA (data in the EU, Amsterdam) | Backup copies; uploaded files (attachments, expense receipts) | Backups encrypted with our key; files encrypted on the storage side |
| Anthropic Ireland, Limited | DPF/SCCIreland (processing in the USA) | AI reports, support chat, reading receipts | The text of questions and queries (AI reports don't receive database results); receipt files together with the names of cost centers, clients and categories, to suggest how to file them. The data isn't used to train models |
| OpenAI Ireland Ltd. | DPF/SCCIreland (processing also in the USA) | Fallback AI — only when Anthropic's AI is down (AI reports; once the fallback is deployed, also support chat and reading receipts) | The same data as Anthropic for the same features; usually kept for no more than 30 days, not used to train models |
| Resend, Inc. | DPF/SCCUSA | Sending emails | Email addresses, names, email content |
| Sentry (Functional Software, Inc.) | DPF/SCCUSA (data in the EU, Germany) | Application error tracking | Diagnostic error records — may include the user ID and request context |
Transfers to the USA rely on the EU–US Data Privacy Framework (for certified companies) and standard contractual clauses (SCC); for Anthropic and OpenAI, on SCC. We inform organization owners by email at least 14 days before any intended change of sub-processors (DPA clause 6.2). Stripe processes the payments for our subscription — we process that data as a controller (see the Privacy Policy); it isn't data entered into the app. Users turn on Google sign-in and Google Calendar themselves; Google processes that data under its own terms.
Frequently asked questions
Where is my data?
Do you have a DPA (data processing agreement)?
Is Můj Výkaz GDPR compliant?
Do you need a DPO (data protection officer)?
Have a security question?
Write to us at info@mujvykaz.cz — we handle every report personally and reply within 48 hours, in Czech or English.