Personal Data Processing Agreement

This is a translation. The Czech version is binding. · Čeština

A template to print: fill in your details, sign it and file it with your contracts — more on this on the GDPR page.

concluded under Article 28(3) of Regulation (EU) 2016/679 (GDPR). Its structure and wording are based on the standard contractual clauses between controllers and processors under Commission Implementing Decision (EU) 2021/915.

The parties

Controller: ……………………………………………… (name / business name), company ID (IČO) ………………, seat ………………………………………………, e-mail ……………………………………………… (the “controller” — a trichologist or hairdresser using the Tricho.app application)

Processor: Ing. Jan Beránek, company ID (IČO) 88869709, seat Brozany 194, 533 52 Staré Hradiště, e-mail [email protected] (the “processor” — the operator of the Tricho.app application)

1. Purpose and scope

This agreement governs the processing of personal data that the processor carries out for the controller in providing the Tricho.app application. It applies alongside the terms and conditions; in case of conflict this agreement prevails. The annexes are an integral part of it.

2. Subject matter, duration, nature and purpose of the processing

3. Categories of data subjects and of personal data

4. The controller's instructions

The processor processes personal data only on the controller's documented instructions. The controller gives instructions by using the app (storing, editing, syncing, erasing) and further in writing to the processor's e-mail. The processor informs the controller without delay if it considers an instruction to infringe the GDPR or another data protection rule, and need not carry out such an instruction.

The processor does not process the data for its own purposes, does not pass it to third parties other than those in Annex C, and does not use it to train any models, for advertising or for analytics.

4a. Services you connect yourself

The controller may connect her own Google account (calendar and tasks) to her account. The controller's device then reads and writes events and tasks directly at Google; the processor writes no content to Google and does not see the content of those writes. If the controller turns on the mirroring of appointments in the “With the client” mode, she passes the client's name into her own Google account as the controller, from her device and on her own decision. Google is thereby not a sub-processor of the processor and the processor does not receive these data. Services, notes, allergens and anamnesis do not go to Google. For the connection the processor holds only the data described in the privacy policy (an encrypted access key, the e-mail of the connected account, identifiers of the blocking calendars and merged “busy” spans with only a start and an end); these are the controller's own data, not data of her clients.

4b. A Stripe account you connect yourself

A controller on the Max plan may connect her own Stripe account to her account (an existing account by signing in at Stripe, a new one through Stripe's guide) to accept card payments for events and deposits. The contract with Stripe is concluded by the controller; the money goes to her Stripe account and Tricho.app collects nothing from it (a 0 % application fee). For the payments of her participants and clients Stripe is the controller's processor under her contract with Stripe and, within the scope of its own obligations (fraud and money-laundering prevention, payment regulation), an independent controller. Stripe is not a sub-processor of the processor; it is listed in Annex C only for completeness.

The processor acts on the controller's Stripe account with a restricted key of the platform and only to this extent: it creates a payment (Checkout Session) with minimal data (the identifier of the registration or request and the public line item), reads the state of the account and of payments, and makes a card refund only on an instruction from the controller's device. It never refunds money by itself. A Stripe notification with the payer's data (e-mail, name, possibly address and telephone) passes through the server only in transit, is narrowed to the necessary fields at once and is neither stored nor logged, not even on error; notifications of payments unrelated to Tricho.app are dropped after the signature check. The processor keeps only the identifier of the connected account, its state and the identifiers of payments (Annex A); it does not store the amount, but can read it from Stripe at any time.

To be honest: the restricted platform key can technically read and write other objects on a connected account too. The processor does not use it for that and keeps it only in the server's encrypted secret store; its leak is a scenario of Article 10. A card payment reaches the controller's app through the server and so relies on its integrity. The controller can disconnect at any time in the app or at Stripe.

5. Confidentiality

The processor binds to confidentiality every person who takes part in operating the service and who could come into contact with the data or with technical data about it. The obligation continues after the cooperation ends.

6. Security of processing (Article 32)

The processor has put in place and maintains in particular these measures:

The processor is not responsible for the security of the controller's device or for how she handles her recovery key — those are measures on the controller's side.

7. Sub-processors

The controller gives the processor general authorisation to engage the sub-processors listed in Annex C. The processor:

A sub-processor for an optional function only. The processor announces Cloudflare Email Routing and Workers (receiving bank notifications, Annex C) by the procedure of this article and engages them no earlier than 30 days after the announcement, and only for a controller who switches the function on herself. An objection of the controller to a sub-processor needed only by an optional function results in the function not being switched on for her, or being switched off; it does not block the change for other controllers. Matching payments from a bank statement on her device remains available to her. The right to terminate the agreement free of charge under the previous paragraph is not affected.

8. Transfers outside the EU/EEA

Encrypted content is stored on a server in the data centre Frankfurt nad Mohanem, Německo (Oracle Cloud, region eu-frankfurt-1), that is inside the EU/EEA; the contents of vaults are not transferred outside the EU/EEA. Some sub-processors under Annex C may also process data outside the EU/EEA; in that case the transfer relies on an adequacy decision or on the European Commission's standard contractual clauses. On request the processor will document which instrument applies to which recipient.

Bank notifications. With Cloudflare Email Routing and Workers (Annex C) the bank's message is readable, while it is processed, in the memory of the Worker, which may run anywhere in Cloudflare's network, including the USA; Cloudflare also keeps the sender, the recipient address and the subject of every message for 31 days. Here the transfer relies primarily on the Commission's adequacy decision (EU–US Data Privacy Framework), under which Cloudflare, Inc. is certified, and in support on the standard contractual clauses 2021/914, module 3 (processor to processor). Supplementary measures: the function is optional and importing a statement on the device stays the default path; the Worker logs nothing and stores no content, and seals the whole message to the controller's key at once; the secret address can be replaced at any time. If the Court of Justice of the EU annulled the DPF decision, the processor stops creating new addresses within 7 days and within 30 days moves the reception to its own server in the EU or switches the function off; the controller is told by e-mail and in the app.

9. Assistance to the controller

Taking into account the nature of the processing, the processor assists the controller:

10. Notification of a personal data breach

The processor notifies the controller of every personal data breach concerning data processed under this agreement without undue delay after becoming aware of it, and at the latest within 48 hours, by e-mail to the address given for the account. The period is agreed this way so that the controller has time left for her own notification to the supervisory authority within 72 hours under Article 33(1). The notification contains a description of the nature of the breach, the categories and approximate number of records concerned, the likely consequences, the measures taken and proposed, and a contact for further information. If not all the information is available immediately, the processor provides it in phases, without further delay.

Two scenarios for events and payments belong here expressly: a leak of the Worker secret with which the Cloudflare Email Worker passes sealed bank notifications to the server (the secret is valid only for receiving these messages), and a leak of the restricted Stripe platform key, which affects every connected Stripe account. For both the processor notifies the breach to every affected controller without undue delay, replaces the key and describes what an attacker could have done with it.

The notification to the Office for Personal Data Protection within 72 hours and any communication to clients is made by the controller; the processor provides her with all available assistance for this. The processor documents every breach and presents the documentation on request.

11. Demonstrating compliance and audit

The processor provides the controller with all information necessary to demonstrate compliance with Article 28 GDPR and with this agreement.

The processor further allows for and contributes to audits, including inspections, conducted by the controller or an auditor mandated by the controller. Practical rules that do not narrow the right of audit: an audit is announced in writing at least 30 days in advance (for an audit following a security breach without this period), takes place during working hours, must not disproportionately disrupt operation, the auditor is bound by confidentiality and does not get access to the data of other customers. The costs of the audit are borne by the controller; if the audit finds a material breach of this agreement, they are borne by the processor.

Providing a description of the architecture and security documentation is a supplement to the right of audit, not a replacement for it.

12. Erasure or return of data after the end

After the end of the provision of the service, the processor, at the controller's choice, erases the data or returns it to her, and deletes existing copies, subject to the limitations stated below, which the controller expressly accepts as the agreed way of carrying out the instruction to erase. The controller communicates her choice within 30 days of the end; if she does not, the processor erases the data.

Return takes place by the controller exporting the data from the app in an open format, or downloading an encrypted backup; the processor cannot decrypt the content and therefore cannot hand it over in readable form.

Erasing the account removes the database with the encrypted data, the cloud backups, the records of devices and the sign-in tokens. The processor warns the controller in advance, and she agrees, that data may persist:

The data on events, deposits and payments held by the server are erased continuously under the periods in Annex A, independently of the end of the service. The database of payment fingerprints is not backed up, so it does not persist in the server backups.

After these periods have passed the data are removed; until then the processor does not use them except for a necessary restore, and they remain encrypted. The processor further retains documents that Union or Member State law requires it to retain — in its case, invoices (10 years). These contain no data of clients.

13. Breach and termination

If the processor breaches this agreement in a material way, the controller may terminate the agreement and the account; in that case the processor refunds a proportionate part of the subscription. If the processor is unable to perform its obligations under this agreement, it notifies the controller without undue delay.

14. Liability

The parties' liability for harm caused by the processing is governed by Article 82 GDPR. The limitation of compensation for harm agreed in the terms and conditions does not apply to claims of data subjects under Article 82 GDPR or to penalties imposed by a supervisory authority — not even where the controller is a business customer. To put it plainly: the ceiling that is in the terms does not cover what a client or an authority might claim from either party.

If one party compensates the harm in full, it may claim from the other the part corresponding to that party's share of responsibility (Article 82(5) GDPR).

15. Final provisions

The agreement is governed by the law of the Czech Republic and lasts for as long as the controller's account exists. If the conditions of processing change, the same procedure applies as for a change to the terms and conditions; the processor announces a material change at least 30 days in advance. The extension of the processing to Booking, events, deposits and payments is part of this template, including Annexes A to C; the extension to events, deposits and payments is a material change and the processor announced it at least 30 days in advance. A new version of the template or a change of the annexes is announced to the controller by the procedure under Article 7 (for sub-processors) and under this article (for other changes).

If this agreement is concluded electronically (by confirmation when the account is created), the requirement of written form is considered met under Article 28(9) GDPR, which expressly permits electronic form. The signature lines below serve the paper variant.

Annex A — Description of the processing

Subject matterStoring, transferring and backing up the encrypted data of the Tricho.app application
Role of the processorThe processor acts as a processor for the content of the vault, the content of bookings and the delivery of e-mails to clients; as an independent controller it processes the controller's account and payment data and keyed fingerprints of e-mail and IP address for protecting the public Booking page and event pages from abuse (legitimate interest – security) and the connection of the controller's Stripe account (performance of the contract with her). For the content of registrations, messages to participants, payment fingerprints, bank notifications and card payments it acts as a processor
DurationFor as long as the controller's account exists
Nature and purposeSynchronisation between the controller's devices and encrypted backups; for events, deposits and payments their operation under Article 2
Data subjectsThe controller's clients and the persons who send a withdrawal statement; for events, deposits and payments participants and co-attendees, people on a waiting list, clients with a deposit, payers in bank notifications (including unrelated ones) and contact persons of invoice buyers
Categories of dataIdentification and contact data, records of visits, notes; for events, deposits and payments billing data, data on the registration, payment and attendance, and payment data (Article 3)
Special categoriesAnamnesis, allergens, data on the condition of the scalp, photographs (Article 9)
Booking (all plans)The list of permitted clients only as fingerprints (salted in the app, keyed on the server), the number of items and the access mode; addresses from her device do not leave it for this purpose. The booking envelope is encrypted to the controller's key; readable are the time and status, the client's e-mail encrypted with the processor's key, and keyed fingerprints of e-mail and IP. Readable also the order number, the version of the terms and their hash, the time the contract was concluded, the end of the withdrawal period and the time of the request for performance within it. Erasure: a finished booking after 7 days without the e-mail and content, the whole one 30 days after the appointment
Withdrawal from the contract (Booking)The statement sealed in the browser to the controller's key, in the message inbox for her app (30 days after it is handled on a device, otherwise at most 90 days). The name, order number and e-mail for the acknowledgement only transiently, to send the acknowledgement of receipt; until delivery the message waits in the queue encrypted with the processor's key, at most 24 hours. A marker against double receipt without content for 30 days; keyed fingerprints of e-mail and IP for limits for 24 hours
Events (Max plan)The published event and its dates readable. For a registration the date, number of seats, status and deadlines readable. The e-mail of the registrant and of every co-attendee encrypted with the processor's key, and a keyed e-mail fingerprint limited to one controller. The other registration data in an envelope sealed to the controller's key. Payment fingerprints without the amount and variable symbol, in a database that is not backed up. Erasure: contacts and tokens at the end of the event's last day; 30 days later only a status record without contact remains of a registration
Deposits in Booking (Pro and Max plans)For a request with a deposit the deposit state and deadlines readable, not the variable symbol or the amount; payment instructions encrypted with the processor's key. Erasure as for a booking
Bank notifications (optional, Max plan)The bank's message passes Cloudflare Email Routing; the Worker verifies it in memory, computes the fingerprints and seals the whole message to the controller's key. The processor stores only the sealed envelope and technical data: 30 days after it is resolved on the device, otherwise at most 90 days. Cloudflare keeps the sender, recipient address and subject for 31 days. The function is not switched on before the impact assessment is signed and 30 days have passed since the new sub-processor was announced
Card payment (optional, Max plan)On the controller's Stripe account (Article 4b). The processor keeps the identifier of the connected account while it is connected and payment identifiers for 180 days; it processes the payer's data from Stripe notifications only in transit and does not store them
Documents by e-mail (optional)A receipt, invoice, credit note or payment reminder passes the server only to be sent and is not stored. For an open invoice the buyer's e-mail encrypted with the processor's key, so that a short e-mail about the received payment can go out; erased on matching, cancellation or expiry
FrequencyContinuously, with every change of data and with the daily backup

Annex B — What the processor holds in readable form

The content is always encrypted. So that the server can replicate and back up, it sees these technical data for each record:

From these data one can infer the number of clients and the time schedule of the controller's work; one cannot find out the identity of the clients or the content of the records.

With Booking switched on, the following is additionally readable: the free windows that the controller publishes (her workload can be inferred from them), the start and end of each booking's appointment and its status. The client's e-mail is held by the processor only encrypted with its own key that is not in the database, and only so that it can send messages to the client; the name, telephone, note and chosen services are in the envelope encrypted to the controller's key. The list of clients for whom Booking is permitted is held by the processor only as fingerprints from which the addresses cannot be read back; addresses from the controller's device do not leave it for this purpose.

Because a booking is a distance contract, it additionally carries the order number (derived from its identifier), the version of the terms and their hash, the time the contract was concluded, the end of the withdrawal period, the time of the request for performance within that period and a flag that it was cancelled because of a withdrawal. None of this says who made the booking. The controller's identification as the seller (name, registered office, company ID, register entry, telephone, e-mail, the VAT sentence) is part of her public profile, like her name.

The “Withdraw from the contract” form. The name, the order number (or the service and date) and the e-mail that a person types into it are readable to the processor only transiently, to compose the acknowledgement of receipt; it compares the order number with the controller's bookings in memory only. What stays stored is only the statement sealed in the browser to the controller's key, until the acknowledgement is delivered the message in the queue encrypted with the processor's key (at most 24 hours), and a marker against double receipt without content (30 days). The operational logs carry only the account identifier, the withdrawal identifier and the outcome. Seznam.cz reads the acknowledgement when it sends it, as every message to a client.

For events and deposits the following is additionally readable:

From these data one can infer how many registrations and unpaid receivables the controller has; one cannot find out who registered, how much she paid or who paid.

Under the processor's key (like a client's e-mail in Booking) are the e-mails of the registrant and of every co-attendee, the links for cancelling and viewing, the payment instructions of a registration or deposit (variable symbol, amount, account), the charged amount, price tier and code of a registration (until the end of the event's last day), the buyer's e-mail of an open invoice and the outgoing mail queue (at most 24 hours). Whoever obtained the database and the server's environment would read these data; they would not read the envelopes of registrations and bank notifications even then. The name, telephone, billing data, co-attendees' names and the note are in an envelope sealed to the controller's key and the processor never reads them.

Outgoing mail. Messages to participants and clients, including payment requests with the variable symbol, amount, account and QR code, are sent by Seznam.cz (Annex C), which reads them when sending. Where the service allows it, storing copies of sent messages is switched off; where it does not, a copy stays in the sender's mailbox at Seznam.cz in the Czech Republic and the processor uses it only to trace an undelivered message. The server's operational logs carry only counts and outcomes, never a fingerprint, variable symbol, amount or e-mail address.

Annex C — Sub-processors

WhoFor whatDoes it touch clients' data?
Oracle CloudThe server for synchronisation and encrypted backups in Oracle Object Storage (a separate service of the same provider, outside the server's disk; Frankfurt nad Mohanem, Německo (Oracle Cloud, region eu-frankfurt-1))Yes — exclusively encrypted, plus the technical data under Annex B; for events and deposits also e-mails encrypted with the processor's key, payment fingerprints, envelopes, status and deadlines of registrations
Cloudflare (Pages)Delivering the website, the app and the public Booking and event pages to the browserNo — encrypted content does not pass through Cloudflare; it sees the visitor's IP address and browser details
Cloudflare (Turnstile)Verifying that a human is sending the request for a code on a public Booking or event page and the withdrawal formPartly — the IP address and browser details of the client or participant; not the e-mail or the content of the booking, registration or withdrawal
Cloudflare, Inc. (Email Routing and Workers, USA and global network) — new, announced 30 days in advance, only with the reception of bank notifications switched onReceiving bank notifications at the controller's secret address, verifying the bank's signature, computing payment fingerprints and sealing the message to the controller's keyYes — the whole bank notification readable in memory while it is processed (seconds), including payments unrelated to Tricho.app and, with some banks, the balance; the sender, recipient address and subject for 31 days in Cloudflare's analytics. Transfer: Article 8
Stripe (Stripe Payments Europe, Ltd.)Payments and invoices for the Tricho.app subscriptionNo — only data about the controller
Seznam.cz, a.s. (Email Profi, Czech Republic)Mailboxes, transactional e-mails, messages to clients for Booking including the acknowledgement of a withdrawal, messages to event participants and clients with a deposit, documents by e-mailYes — the recipient's e-mail, the name of the event or service, the date, a link; for a withdrawal acknowledgement the name and the order number or the description of the service and date; for a payment request the variable symbol, amount and account; for a document its PDF (name, possibly company ID). Not the telephone or the note
Brevo (Sendinblue SAS, France — servers in the EU)Newsletters and the form on the websiteNo — only the controller's e-mail, with consent. Messages to clients or participants do not go through Brevo
Stripe (Stripe Payments Europe, Ltd.) — for card payments on the controller's account listed only for completeness, not a sub-processor (Article 4b)A card payment on the controller's Stripe accountYes, but under the controller's own contract with Stripe

Who is not a sub-processor. Google (also as the provider of the calendar and tasks that the controller connects herself — see Article 4a) and Apple in the role of sign-in providers, and Fio banka in the role of payment service provider, do not act under this agreement as sub-processors — in relation to the controller's data they act as independent controllers and have no access to the data of her clients. The same applies to Stripe within the scope of its own obligations in fraud prevention and anti-money-laundering; for card payments on the controller's Stripe account Stripe is her processor under her own contract (Article 4b). The controller's bank, which sends her the payment notifications, is an independent controller. The processor serves fonts from its own addresses, so not even a visitor's IP address reaches any third party.

The current list and scope is always also in the privacy policy.

In ……………… on ………………


………………………………………
controller
In ……………… on ………………


………………………………………
processor

Version 2026-10-31. Effective: 31 October 2026.