In short
- A loyalty card is anonymous by default. A customer can collect stamps without giving a name, an email address, or a phone number.
- We are the controller for your business account, and only a processor for the customer data inside it — that data belongs to the business, not to us.
- We use no analytics, advertising, or cross-site tracking. We set exactly one cookie of our own, and it exists to stop you getting two copies of the same card.
- Your customers' names and email addresses are never sent to Google or Apple. The wallet pass carries the shop, the reward, and a stamp count.
- We do not sell personal data, and we never will.
1Introduction
Kliyan is a digital loyalty-card platform. A business creates a branded stamp card, prints or displays a QR code, and its customers add that card to Google Wallet or Apple Wallet. Staff scan the card to add a stamp. Customers never install an app and never create an account.
This policy explains what personal data the platform handles, why, on what legal basis, who else is involved, and what rights you have. It is written for three different readers, and it says clearly which parts apply to which:
- Business Users — the owner who signs up, pays, and runs one or more loyalty programmes.
- Employees — the staff a Business User gives a scanner link to.
- End Customers — the people who add a loyalty card to their phone wallet.
The platform is operated by Ilyass Ennhila, an individual entrepreneur (empresario individual) established in Spain, and is subject to Regulation (EU) 2016/679 (GDPR), Spanish Organic Law 3/2018 (LOPDGDD), and Law 34/2002 on information society services (LSSI-CE). Full identification details are in section 14.
Language of this document
The Kliyan website is available in English, French and Arabic. This policy is published in English only, so that there is a single authoritative text and no risk of two translations saying different things. If we publish translations later, the English version will remain the one that governs.
2Data Controller and Data Processor
Kliyan holds two different roles at the same time, and which one applies decides who you go to with a request. The short version: we control the account, the business controls its customers.
| Data | Controller | Kliyan's role |
|---|---|---|
| Business User account & billing | Kliyan | Controller — we decide why and how this is processed. |
| Employee records created by a Business User | The Business User | Processor — we store and serve them on the owner's instructions. |
| End Customer passes, stamps and optional contact details | The Business User | Processor — we provide the technical means; the shop decides. |
| Website visitors (public pages) | Kliyan | Controller — strictly necessary cookies only. |
2.1Business Users (owners and employees)
When you sign up as a business owner, Kliyan is the data controller for your account: your name, your email address, your login credentials, your business details and your subscription record. We decide what we need in order to give you an account, bill you, keep the service secure and meet our own legal obligations.
The records you create *about your staff* are a different matter. When you add an employee — a name, sometimes an email address, a role and a working schedule — you are the controller of that record and Kliyan is your processor. We hold it because you told us to. You are responsible for telling your staff that their name and scan activity are recorded, and for having a lawful basis (normally the employment relationship, or your legitimate interest in preventing loyalty fraud) for doing so.
Every stamp is attributed to a person
The audit trail records which employee added each stamp, and when. That is a deliberate anti-fraud feature, and it is also personal data about your staff. Tell them it exists.
2.2End Customers (loyalty card holders)
For everything relating to loyalty cards — the pass itself, the stamp history, and any name, email address or marketing consent a customer chose to provide — the Business User is the data controller and Kliyan is the processor. The shop decides to run a loyalty scheme, decides what it offers, and decides what to do with any contact details customers hand over. We supply the software.
This matters practically: if you are a customer and you want your data corrected or erased, the business that issued your card is the first place to ask. We will act on their instruction, and section 10 explains what we do if you come to us directly instead.
The processing terms that govern this relationship — the Article 28 clauses, the sub-processor list, the security measures and what happens at the end of the contract — are set out in section 8 of the Terms of Service, which forms our data processing agreement with each Business User.
2.3Support access by Kliyan personnel
We would rather tell you this plainly than bury it. The platform isolates every business's data at the database level, so no Business User can ever read another's records. That isolation does not, and technically cannot, apply to us.
A small number of named Kliyan personnel hold administrative credentials for the production database. Those credentials bypass the row-level isolation rules and can read and modify any record on the platform, including passes, stamp history and any customer contact details a business has collected. They exist because parts of the service genuinely require them — the public join page has to read a business by its QR slug before anyone is logged in, the stamping endpoint has to write to a pass on behalf of a scanner with no account, and the billing webhook has to update a subscription when nobody is signed in at all.
Human access to that data by Kliyan staff is restricted to what is necessary and happens only in these circumstances:
- You ask us for help. Investigating a support request you raised — a card that will not update, a stamp that did not register, a subscription in the wrong state.
- Security or integrity. Investigating suspected fraud, abuse of the notification system, or a security incident.
- Fixing a defect. Diagnosing a bug that is corrupting or losing data, where reproducing it on test data is not possible.
- Legal obligation. Responding to a binding, lawful order from a competent authority.
We do not browse customer lists out of curiosity, we do not use one business's customer data to benefit another, and we do not use it to build any product of our own. Personnel with these credentials are bound by confidentiality obligations that survive the end of their engagement.
You can object to this
Section 10.1 sets out how a Business User can object to support access, and what that means in practice for the support we can then provide.
3Data Collected
The lists below are drawn from the actual database schema rather than written in the abstract. Where a field is optional, it is genuinely optional: the product works end to end without it.
3.1Business Users
| What | Details | Required |
|---|---|---|
| Identity | Full name and email address, given at sign-up. | Yes |
| Credentials | A password, stored only as a salted hash by our authentication provider. We never see or store the password itself. | Yes |
| Business profile | Business name, the URL slug used in your QR code, logo image, brand colour, number of stamps per card, reward description, and time zone. | Yes |
| Card appearance | Your chosen stamp icon (from our set or uploaded by you), logo scale, position and placement, and whether the business name is printed on the card. | Optional |
| Average ticket band | A coarse range (not an exact figure) you may set to unlock the revenue-impact estimate in analytics. Purely a business figure — no personal data. | Optional |
| Subscription record | Plan, subscription status, current period end, the payment provider's subscription identifier, and an append-only log of subscription events received from the provider. | Yes |
| Support correspondence | Emails you send us and our replies. | Optional |
We never see your card details
Payment is handled entirely on the payment provider's own hosted checkout and billing portal. Card numbers, expiry dates and security codes never reach Kliyan's servers and are never stored by us. We receive only a subscription identifier, a status, and a period end date.
Note that your logo file is publicly readable by URL. It has to be: it is rendered onto the wallet pass by Google and Apple, and onto the public join page anyone with your QR code can open. Do not upload anything to that field that you would not put on a poster in your window.
3.2Employees (Scanners)
Employees do not have Kliyan accounts. They do not register, do not set a password, and cannot log in. A Business User creates a record for each member of staff, and the platform issues that record a long, unguessable scanner link. Possession of the link is the credential.
- Name — required, and shown on the scanner screen and in the activity log.
- Email address — optional; the platform does not send employees any email.
- Role label — set by the owner.
- Scanner token — a random secret embedded in the employee's scan URL.
- Availability controls — whether the link is active, whether it works around the clock, and if not, the start and end times during which it does.
- Scan activity — every stamp and redemption is recorded against the employee who performed it, with a timestamp.
Removed employees are not erased immediately
When an owner removes an employee, the record is marked as deleted and hidden from the dashboard, but retained. If it were erased outright, every historical stamp that employee added would lose its attribution and the audit trail would become useless — which would defeat the anti-fraud purpose the record exists for. Full erasure on request is covered in sections 8 and 10.
3.3End Customers
Nothing about you is required
You can add a loyalty card, collect every stamp, and claim your reward without ever telling us or the shop your name, your email address or your phone number. The join page asks; it does not insist.
Created automatically when you add a card:
- A random identifier for the card itself, and the business it belongs to.
- Your current stamp count.
- The date you added the card, and the date it was last updated.
- A device identifier — see section 3.4 — used solely to stop you ending up with two cards for the same shop.
- A wallet reference: the Google Wallet object identifier and/or Apple Wallet serial number for your pass, plus a secret token Apple uses to authenticate its own update requests.
Created every time you are served:
- A stamp record: which card, which shop, which member of staff, which stamp number it was, whether it completed the card, and the exact time. Taken together this is a timestamped history of your visits to that shop, and you should read it as such.
- If your card is registered for updates: your device's push token and platform, so the shop's stamps can reach your phone.
Only if you choose to provide it:
- Your name (up to 80 characters).
- Your email address.
- A marketing consent flag. It can only be set to yes if you also gave an email address, it defaults to no, and leaving it untouched is never treated as agreement.
What that consent does today
Kliyan does not currently send End Customers any email at all — there is no email-sending capability pointed at customers anywhere in the platform. If you tick the box, the shop that issued your card records your permission to contact you and may use it through its own tools. If that changes and Kliyan itself begins sending on a business's behalf, we will update this policy and tell Business Users before it happens.
If a business sends a wallet campaign, a short delivery record is kept for that card: whether the message was sent, skipped or failed, the reason, and when. Section 7 explains campaigns in full.
3.4Technical Data
We deliberately keep this layer thin. There is no analytics package, no tag manager, no advertising pixel and no session-recording tool anywhere in the product.
- Device identifier. A random value, stored in a cookie we set (section 5) and, for cards created before we moved to cookies, sometimes in your browser's local storage. It is meaningless outside Kliyan, is not linked to any advertising profile, and does nothing except recognise that this device already holds a card for a given shop.
- Session data. When a Business User is signed in, authentication cookies maintain the session.
- Locale preference. Your chosen interface language, remembered so the site does not reset to English on every visit.
- Browser type, at request time only. The public join page reads your user agent to decide whether to offer the Apple Wallet or Google Wallet button. It is used to render that one page and is not written to our database.
- Server logs. Our hosting and database providers record standard technical logs — IP address, timestamp, request path, response status — for security, abuse prevention and debugging. These are held by those providers under our instructions for a short period.
- Wallet device logs. Apple Wallet posts device-side error reports to an endpoint we expose for that purpose. They are written to our server logs and used only to diagnose pass failures.
Our contact form does not transmit anything to us on its own: it opens your own email application with a message pre-filled, and whatever you then send reaches us as an ordinary email.
No profiling, no automated decisions
We do not carry out profiling or automated decision-making that produces legal effects or similarly significantly affects anyone, within the meaning of Article 22 GDPR. The customer segments a business can see — new, close to a reward, reward ready, lapsed — are simple arithmetic on stamp counts and dates, visible only to that business, and they decide nothing about a person beyond which loyalty message they might receive.
4Third-Party Services
Kliyan runs on a small number of specialist providers. Each is bound by a data processing agreement, processes data only on our instructions, and is listed here as a sub-processor for the purposes of section 8 of the Terms of Service.
| Provider | What it does | What it receives | Where data sits |
|---|---|---|---|
| Supabase | Database, authentication and file storage — the primary store for everything described in section 3. | All platform data: accounts, businesses, employees, passes, stamp history, campaign logs, uploaded logos and card images. Also sends account emails (confirm your address, reset your password). | European Union — Ireland. Supabase Inc. is US-based; transfers are covered by Standard Contractual Clauses. |
| Vercel | Application hosting and content delivery. | HTTP request data in transit and standard server logs. Application data is not stored here. | Served from the EU region Paris, France (cdg1). Vercel Inc. is US-based; transfers covered by Standard Contractual Clauses and, where applicable, the EU-U.S. Data Privacy Framework. |
| Sentry | Error monitoring — records diagnostic reports when something in the platform fails, so faults are found and fixed rather than going unnoticed. | Technical diagnostics only: the error and its stack trace, the URL where it happened, and browser/server environment details. Configured with personal-data collection switched OFF, so IP addresses and request bodies are not sent, and session recording is not enabled at all. | Sentry EU data region — Germany. Functional Software, Inc. is US-based; transfers are covered by Standard Contractual Clauses. |
| Stripe | Subscription payments, hosted checkout, billing portal and invoices. | The Business User's email address and payment details, entered directly on Stripe's own pages. Kliyan receives back only a subscription identifier, status and period end. | Stripe Payments Europe, Ltd. — Ireland, with onward transfer to Stripe, Inc. (US) under Standard Contractual Clauses. |
| Google Wallet | Issues and updates the Android side of the loyalty pass, and delivers pass notifications. | Business name, logo image URL, brand colour, reward text, stamp progress, the generated card image, and the pass identifier encoded in the pass QR code. No customer name or email address is ever sent. | Google Ireland Limited / Google LLC (US). Google is certified under the EU-U.S. Data Privacy Framework. |
| Apple Wallet & APNs | Distributes the iOS pass file and wakes the device when a pass changes. | The pass file itself is built on Kliyan's servers and contains the same business-level content as above. Apple's push service receives only your device push token and an empty notification payload — the device then fetches the updated pass from us. | Apple Distribution International Ltd. — Ireland / Apple Inc. (US). |
What the wallet companies never learn
A customer's name, email address and marketing preference stay in our database. They are not written into the wallet pass and are not transmitted to Google or Apple in any form. The pass shows the shop, the reward, and how many stamps are on the card.
We will keep this list current. Section 8 of the Terms of Service sets out the advance notice Business Users receive before a new sub-processor is added, and their right to object.
6Use of Data
We process personal data for the purposes below and no others. Each is tied to the legal basis we rely on under Article 6(1) GDPR.
| Purpose | Whose data | Legal basis |
|---|---|---|
| Creating and running accounts, businesses and loyalty cards; issuing and updating wallet passes; recording stamps and rewards | Business Users; End Customers (on the business's instruction) | Performance of a contract — Art. 6(1)(b) |
| Taking payment, applying plan limits, issuing invoices and managing renewals | Business Users | Performance of a contract — Art. 6(1)(b) |
| Preventing loyalty fraud and abuse: attributing stamps to a scanner, enforcing the cooldown between stamps on the same card, honouring employee schedules and revocations, and rate-limiting notifications | Employees; End Customers | Legitimate interests — Art. 6(1)(f), namely protecting businesses from fraudulent stamping and protecting the shared wallet issuer accounts from abuse |
| Keeping the platform secure, debugging faults and maintaining service quality | All users | Legitimate interests — Art. 6(1)(f) |
| Answering support requests | Business Users; anyone who contacts us | Performance of a contract — Art. 6(1)(b), or legitimate interests — Art. 6(1)(f) |
| Keeping accounting and tax records | Business Users | Legal obligation — Art. 6(1)(c) |
| Establishing, exercising or defending legal claims | As relevant | Legitimate interests — Art. 6(1)(f) |
| Sending commercial email to Business Users about Kliyan | Business Users | Consent — Art. 6(1)(a), or Art. 21 LSSI-CE for existing customers (see 6.1) |
What we never do with it
We do not sell personal data, do not rent or share it for anyone else's marketing, do not use one business's customer data to benefit another, and do not use customer data to train machine-learning models.
6.1Marketing and lifecycle emails to Business Users
Today the platform sends Business Users only service email: confirm your email address, reset your password, and messages we send by hand in reply to support requests. Service email is part of running your account and cannot be switched off while the account is open — though you can of course close the account.
If we introduce product announcements, onboarding tips or offers, they will operate on these rules:
- If you are already a Kliyan customer, we may write to you about our own similar products and services on the basis of Article 21.2 LSSI-CE, because you gave us your address in the course of buying from us.
- If you are not a customer, we will only write to you if you have given us consent.
- Every commercial message will carry a working one-click unsubscribe, and a message identifying itself as advertising where the law requires it.
- Unsubscribing from marketing never affects service email or your subscription.
- We will not pass your address to anyone else for their own marketing.
End Customers are out of scope here
None of this concerns the customers of a business using Kliyan. We do not email them, and we do not build a marketing list out of them. Where a customer has given a business their email address and consent, that address belongs to the business and is used through the business's own tools.
7Notifications
The only messages Kliyan delivers to End Customers are wallet notifications — the short banners a phone shows when a pass changes. They are delivered by Google and Apple to the wallet app, not by email or SMS, and they exist because a stamp card that never tells you anything is a worse stamp card.
7.1Transactional Notifications
When a member of staff scans your card, the pass in your wallet is updated and your phone may show that the stamp count changed or that your reward is now ready. This is the core function of the product and is triggered by something you did in the shop moments earlier.
On iOS this works in two hops that are worth understanding: Apple's push service is sent an empty notification, with no message and no content. Its only job is to wake your device, which then contacts Kliyan directly to fetch the updated pass. Apple therefore never sees the contents of the update.
7.2Campaign Notifications
A Business User can also send a wallet notification to a group of its own cardholders — for example, everyone who is one stamp away from a reward, or everyone who has not visited in a while. Cards are grouped by simple arithmetic on the stamp count and the date of the last visit; a customer counts as lapsed after 30 days without a visit.
Several limits are enforced by the platform rather than left to the sender's judgement:
- Content must be loyalty-relevant. Most plans can only send pre-written messages about stamp progress, a ready reward, a welcome, or a come-back nudge. Free-text messages are available on the highest plan only, and are validated before they go out.
- No more than 3 notifications reach any single card in any 24-hour period, whatever the sender does.
- A monthly campaign allowance applies per plan, so no business can send continuously.
- Unrelated advertising is not permitted. Using a wallet pass to push offers that have nothing to do with the loyalty card breaches Google's and Apple's policies and can get passes disabled — for the offending business and, because the issuer accounts are shared, potentially for others.
- A delivery record is kept for each card (sent, skipped or failed, and why), both for the sender's audit trail and to enforce the caps above.
7.3Opting Out
Wallet notifications are controlled on your device, not by an account setting on our side — you never made an account with us, so there is nothing for us to switch off. You have complete control by these routes:
- Turn off notifications for that pass. Both Google Wallet and Apple Wallet let you disable notifications for a single pass while keeping the card.
- Remove the card from your wallet. This stops everything immediately. Section 9 explains exactly what happens next on each platform.
- Ask the business that issued the card to stop sending you campaigns, or to delete your card.
Why we cannot keep an opt-out list for you
A card that carries no name and no email address gives us nothing to key a suppression list to, and we are not going to start collecting identifying data purely in order to build one. Turning notifications off at the wallet, or removing the pass, is both the more reliable route and the more private one. If you did give the business your email address, you can ask them directly and they can delete the card.
7.4Business Obligations
A Business User sending campaigns is the controller of that communication and is responsible for it. By sending, the business confirms that it will:
- Send only messages relevant to the loyalty programme the customer joined, and never use passes as a channel for unrelated advertising.
- Comply with Google Wallet and Apple Wallet policies, and with applicable rules on commercial communications.
- Honour any request from its own customers to stop, and not attempt to defeat the platform's frequency caps.
- Not send anything misleading, offensive, or contrary to the reward it actually offers.
- Provide its own customers with a privacy notice covering its loyalty programme, and deal with their data-protection requests as controller.
We may suspend campaign sending, and in serious cases the account, where these obligations are breached. The reason is not merely contractual: the wallet issuer accounts are shared across the platform, so abuse by one business can degrade the service for every other business and every cardholder.
8Data Retention
We keep personal data only as long as it serves the purpose it was collected for, or as long as the law requires. Because Kliyan is the processor for customer data, a business's own retention decisions govern much of what follows.
| Data | Retained | Then |
|---|---|---|
| Business User account and business profile | For as long as the account exists. | Deleted on request, or when the account is closed. Deleting a business cascades to its passes, stamp history, employees and campaign records. |
| Passes and stamp history | For as long as the card exists in the issuing business's account. | Deleted when the business deletes the customer, deletes the business, or closes the account — or on a valid erasure request. |
| Optional customer name, email and consent flag | For as long as the pass exists, unless erased sooner. | Erased on request to the business or to us. |
| Employee records | Retained after removal, in a deleted state, so historic stamps keep their attribution. | Erased on request, subject to the business's need to retain a fraud audit trail. |
| Device registrations and push tokens | While the pass is registered for updates. | The Apple registration is deleted as soon as the pass is removed from the device. |
| Campaign and delivery records | Kept as the sender's audit trail and to enforce the 24-hour frequency cap. | Deleted with the campaign, the pass, or the business. |
| Subscription events | Kept as an audit trail of billing state changes. | Deleted with the business. |
| Invoices and accounting records | As required by Spanish law — generally 6 years under commercial law and 4 years for tax purposes. | Deleted at the end of the statutory period. |
| Server and security logs | A short period at our hosting and database providers. | Rotated and deleted automatically by those providers. |
How deletion happens today
Kliyan does not currently run an automatic purge on a fixed schedule. Data is removed when a business deletes a record, when a business or account is deleted (which cascades to everything beneath it), or when we act on an erasure request. Requests are handled by our team; write to hello@kliyan.app and we will confirm when it is done. We would rather describe this accurately than claim an automated retention schedule we do not yet operate.
9Pass Deletion by End Customers
You can remove a Kliyan loyalty card from your phone at any time, from the wallet app, without asking anyone. What that does — and, just as importantly, what it does not do — differs by platform, and the difference is worth stating plainly.
| Platform | When you delete the pass |
|---|---|
| Apple Wallet | Your device tells our servers immediately, and we delete the device registration. Push updates stop at once and no further notification can reach you. |
| Google Wallet | Google does not notify us. Removing the pass from your wallet hides it from you, but we receive no signal, so the pass record and its stamp history stay in the issuing business's account until someone deletes them. |
Deleting the pass is not the same as erasing your data
On either platform, the card record and its stamp history remain in the issuing business's account after you remove the pass from your phone. To have that record erased, ask the business that issued the card, or write to us at hello@kliyan.app and we will pass the request to them and act on their instruction as processor.
If your card was anonymous. Where you gave no name and no email address, we hold nothing that lets us tell your card apart from anyone else's, and we will not ask you for identifying information purely in order to find it — Article 11 GDPR does not require us to acquire data just to enable identification. To have a specific anonymous card deleted, give us something that points to it: the QR code on the pass, the pass identifier it encodes, or the shop and the approximate date you joined. Without that we can confirm the position but cannot single out a record.
Deleting a pass does not cancel any reward you had already earned; that is between you and the shop.
10User Rights
Under GDPR you have the following rights over your personal data. They are free to exercise, and we will respond within one month, extendable by two further months for complex requests — in which case we will tell you within the first month.
- Access
- Confirmation of whether we hold data about you, a copy of it, and an explanation of how it is used (Art. 15).
- Rectification
- Correction of inaccurate data and completion of incomplete data (Art. 16).
- Erasure
- Deletion of your data where there is no overriding reason to keep it — for example a legal retention duty (Art. 17).
- Restriction
- A freeze on processing while a dispute about accuracy or legal basis is resolved (Art. 18).
- Portability
- The data you provided to us, in a structured, commonly used, machine-readable format (Art. 20).
- Objection
- An objection to processing based on legitimate interests, including the support access described in 2.3 (Art. 21).
- Withdraw consent
- Withdrawal at any time of any consent you gave, without affecting the lawfulness of what happened before (Art. 7(3)).
Where to send a request. If you are a Business User, write to us at hello@kliyan.app. If you are an End Customer or an employee of a business using Kliyan, the controller is that business, so ask them first — they have the context and the authority to act. If you come to us instead, we will forward the request to the controller without undue delay and act on their instruction; where we can act ourselves without breaching our duties to them, we will.
We may ask for enough information to be reasonably satisfied who you are, so that we do not disclose or delete someone else's data on the strength of an unverified request. We ask for the minimum needed, and we do not keep verification material longer than the request takes.
Complaining to a supervisory authority
If you are not satisfied with how we have handled your data or your request, you may complain to the Spanish Data Protection Agency (Agencia Española de Protección de Datos, C/ Jorge Juan 6, 28001 Madrid — www.aepd.es), or to the supervisory authority of the EU or EEA country where you live or work. You can also bring a claim before the courts. We would rather you raised it with us first, but nothing here requires you to.
10.1Right to object to support access
Section 2.3 explains that a small number of Kliyan personnel can access production data, including the customer records inside a Business User's account, and that we rely on legitimate interests to do so. Article 21 GDPR gives you the right to object to processing on that basis, and we treat that right as real rather than decorative.
A Business User may object by writing to hello@kliyan.app with the subject line Object to support access. On receipt we will:
- Record the objection against your account.
- Stop accessing your account's data for support, product-quality and non-urgent debugging purposes.
- Contact you for explicit, case-by-case permission whenever a support request you raise cannot be resolved without looking at your data — and take no look until you give it.
What the objection cannot cover. Some access is not carried out on the legitimate-interests basis and therefore falls outside Article 21: access strictly necessary to operate the service under our contract with you (the automated processes that create passes, record stamps and update subscriptions), access needed to investigate a live security incident or suspected fraud, and access we are legally compelled to give. We will still tell you, where we lawfully can, if any of these applies to your account.
The honest trade-off
If we cannot look at your data, some problems become slow to fix and a few become impossible to fix at all — a corrupted pass or a subscription stuck in the wrong state often cannot be diagnosed from the outside. You can withdraw the objection at any time, and you can also grant one-off permission for a single investigation without lifting it.
11Security
We apply technical and organisational measures appropriate to the risk, as required by Article 32 GDPR. In concrete terms:
- Tenant isolation at the database level. Every table carries the identifier of the business it belongs to, and row-level security policies are enforced by the database itself rather than by application code. A query from one business's session cannot return another's rows even if the application has a bug.
- Credentials that bypass those rules are server-side only. They are never exposed to the browser and never shipped in client code.
- Passwords are never stored in readable form. Authentication is delegated to our provider, which stores only a salted hash. Changing a password requires the current one.
- Encryption in transit and at rest. All traffic runs over TLS; stored data is encrypted at rest by our database and storage providers.
- Session cookies are HTTP-only, so a script injected into a page cannot read them, and are marked secure over HTTPS.
- Scanner links are long random secrets, can be switched off instantly by the owner, and can be limited to a working schedule so a leaked link is useless outside opening hours.
- Each Apple pass carries its own authentication token, so one pass's credentials cannot be used to read or update another.
- Stamping is authorised on the server, never in the browser. The scanner's identity, the business it belongs to, the schedule, and a short cooldown between stamps on the same card are all checked server-side, in the business's own time zone.
- Payment webhooks are cryptographically verified against the provider's signing secret before they are allowed to change a subscription — the webhook, not the browser redirect, is the source of truth.
- No card data on our systems. There is nothing to steal, because payment details never reach us.
If something goes wrong
No system is perfectly secure, and we will not pretend otherwise. If a personal data breach occurs, we will notify the competent supervisory authority within 72 hours of becoming aware of it where the breach is likely to result in a risk to people's rights, and we will inform affected users directly where the risk is high. Where we act as processor, we will notify the Business User without undue delay so that they can meet their own obligations.
If you believe you have found a security vulnerability in Kliyan, please report it to hello@kliyan.app before disclosing it publicly. We will acknowledge it, keep you informed, and will not pursue researchers who act in good faith and do not access, alter or retain other people's data.
12Minors
Kliyan is a business tool. Accounts are for people acting in a professional capacity, and a Business User must be at least 18 years old and legally capable of entering into a contract. We do not knowingly open accounts for minors, and we will close any we discover.
Loyalty cards are a different situation. A card requires no account, no app and no personal data, so a young person can be served in a café and collect a stamp without anything about them being recorded — which is exactly as it should be.
Where a customer chooses to enter a name or email address, Spanish law (Art. 7 LOPDGDD) sets the age of valid digital consent at 14. A Business User must not knowingly collect those optional details from a child under 14 without the consent of a parent or guardian. Given that the fields are optional, the simplest compliant approach — and the one we recommend — is not to ask children for them at all.
If you believe a child under 14 has provided personal data through a Kliyan card, contact us at hello@kliyan.app and we will work with the issuing business to remove it promptly.
13Changes
The product changes, so this policy will change with it. The effective date and last-updated date at the top of this page always tell you which version you are reading.
- Material changes — a new purpose, a new legal basis, a new category of data, a new sub-processor, or anything that meaningfully reduces your protections — will be notified to Business Users by email or an in-dashboard notice at least 30 days before they take effect.
- Minor changes — clarifications, corrections and rewording that do not alter substance — take effect on publication.
- Where a change requires your consent under GDPR, we will ask for it, and we will not treat continued use as agreement.
We keep the previous version of this policy and will provide it on request, so you can see what changed.
14Contact
For any question about this policy, or to exercise any right described in section 10, write to us. We read everything that arrives at this address.
- Controller
- Ilyass Ennhila
- Address
- Calle Colón 42, Zamora, Spain
- Tax ID (NIE)
- Y8395865M
- hello@kliyan.app
- Data protection
- We have assessed our processing and are not required to appoint a Data Protection Officer under Article 37 GDPR. Data protection matters are handled at hello@kliyan.app. If that assessment changes, this section will name the DPO.
- Supervisory authority
- Agencia Española de Protección de Datos — C/ Jorge Juan 6, 28001 Madrid, Spain — www.aepd.es
See also the Terms of Service, whose section 8 contains the data processing terms that apply between Kliyan and each Business User.