Suivaya (the “App”) is developed and published by Zaycode (zaycode.com). This Privacy Policy explains what information the App handles and how. By using Suivaya you agree to this policy.
1. Account (required)
Suivaya requires an account: you sign in with Google, Apple, or email and password. Depending on the method you choose, we receive your email address, display name, and profile photo from that provider (or the email address you enter, for email sign-in). Your Suivaya profile also stores your first name, last name, country selected from a standardized country list, city, date of birth, and email address so we can identify and manage your account and verify the minimum-age requirement. Your date of birth also determines whether the optional adult-only rewarded-ad button may be shown. No name, email address, date of birth, city, country, or profile photo is sent to AdMob or used to personalize ads. If you request the optional video, Suivaya sends AdMob an opaque Firebase account identifier only as the server-side-verification user ID, so the signed reward callback can credit the correct account. We do not ask for any financial information — card, bank, or otherwise — to create an account.
2. Data stored in the cloud
Your profile, acceptance version and timestamp for the Community Rules, the temporary status and expiry of advanced-report access, Apple subscription entitlement and scan-usage counters, projects, categories, expenses/income entries, project memberships, safety reports, and account-blocking preferences are stored in the Firestore (default) database of Firebase project suivaya-app. This database is hosted in Google Cloud multi-region nam5 (North America). The App also keeps an offline cache on your device. Cloud storage lets your data sync across devices and lets you share a project with other people.
A safety report contains the reporter's Firebase UID, project and target identifiers, target type, the reported account UID when applicable, a selected reason, optional details of up to 500 characters, the accepted rules version, status, and timestamp. Reports are not visible to collaborators or through the client App; they are available only through the protected administrative environment for safety review and enforcement. A block record contains both account UIDs, the blocked account's display label, and a timestamp. It is visible only to the person who created the block.
To operate and secure the service, Firebase automatically processes technical data. On Android this includes Firebase user-agent data (operating-system version, device name/model/brand and form factor, installer source, and SDK/app versions), a Firebase Installation ID (FID), the signed-in Firebase UID on Firestore and Function requests, and, for callable Functions, the function name, IP address, and a messaging token supplied by the Functions client even though Suivaya does not otherwise use Firebase Messaging. On iOS it includes Firebase user-agent data (device, operating system, bundle identifier, SDK version, and developer platform), the Firebase Authentication UID, the signed-in UID on Firestore and Function requests, and the Function name and IP address; the iOS build does not include Firebase Messaging. A Firebase App ID identifies an app configuration, not a device or FID. Firebase Authentication processes an email/password credential when used, but Zaycode never receives or stores the password in plain text.
At each App launch, Suivaya requests its public store listing directly from Google Play on Android or Apple's iTunes Lookup service on iOS to check whether a newer version is available. Google or Apple receives the request IP address, time, package or bundle identifier, and ordinary HTTP connection metadata, which can indicate that Suivaya was opened. No Firebase UID, profile, project, or financial entry is included in this request. The returned version is compared in memory and is not added to your Suivaya profile.
App Check validates Play Integrity data on Android (including request hash/nonce, package and app version, signing certificate, licensing, and device-integrity signals) or an App Attest/DeviceCheck assertion and token on iOS. App Check does not retain attestation material, and standard tokens are not retained after validation; their configured lifetime never exceeds seven days. Replay protection is not enabled. Google processes this data as our service provider for app functionality, authentication, abuse prevention, and backend security. It is encrypted in transit and is not used by Suivaya to personalize advertising.
Legal bases and purposes
Where data-protection law requires a legal basis, we rely on performance of our contract with you to create and operate your account, sync and share projects, provide exports, verify Apple subscriptions, and process receipt scans you request; our legitimate interests in securing, maintaining, and debugging the service, preventing fraud and abuse, reviewing safety reports, enforcing the Community Rules, and operating short-lived idempotency and deletion safeguards; your consent where required for optional rewarded advertising, notifications, camera or photo-library access; and compliance with legal obligations where applicable.
You may withdraw consent at any time without affecting earlier lawful processing. Refusing an optional permission or ad does not block regular tracking features. Identity, profile, and cloud data are required to create an account and provide the synchronized service; without them, Suivaya cannot provide an account.
Recipients and international transfers
Data is processed only as needed by Zaycode and its service providers: Google Firebase and Google Cloud for authentication, storage, synchronization, security, server functions, and iOS receipt extraction; Google Play and Apple for the launch-time version check described above; Google AdMob only when you request an optional rewarded video; Apple for Apple sign-in, purchases, and subscription verification; Google when you choose Google sign-in; project collaborators you deliberately invite; and competent authorities where disclosure is legally required. We do not sell personal data.
Firestore customer data is hosted in the nam5 multi-region in North America. Firebase Authentication is operated from the United States, and our deployed Cloud Functions run in us-central1; App Check and some service data may use Google’s global infrastructure. Our providers may therefore process data outside your country or the EEA. Restricted European transfers to Google are protected, as applicable, by an adequacy mechanism such as the EU-US Data Privacy Framework and/or the European Commission Standard Contractual Clauses included in Google’s data-processing terms. Contact us for information about applicable safeguards. Transfers are also subject to any authorization required by Moroccan law.
Suivaya does not make decisions based solely on automated processing that produce legal or similarly significant effects. Budget totals, alerts, and receipt-extraction suggestions are assistance features; you review the results and decide what to save.
If you share a project, its categories and entries are visible to every other member of that project, and each entry is tagged with the account that created it. Only share a project with people you trust with that information.
On iOS, subscribers may choose to photograph a receipt or select one from their photo library. The App compresses that image and sends it through an App Check-protected Firebase callable to Google Cloud Document AI only to extract the amount, date, merchant, and currency. Suivaya does not retain the receipt image. To prevent a lost network response from causing a second paid scan, the extracted fields and a one-way image fingerprint may be kept in a server-only idempotency cache that becomes inaccessible after 24 hours and is then queued for automatic deletion. They remain editable, and no expense or income entry is created until you explicitly confirm it. AI receipt reading is not included in the Android App.
3. Advertising (Google AdMob)
Suivaya is free to download. It does not display banners, interstitials, or automatic ads. Only if you explicitly choose “Unlock advanced reports for 24 hours” may Google AdMob serve a rewarded ad. Rewarded ad requests are always non-personalized on Android and iOS. Suivaya does not request App Tracking Transparency permission or access to IDFA. Google may still process device and app information, the opaque server-side-verification identifier described above, approximate (non-precise) location derived from IP, device identifiers permitted for non-personalized ad delivery, and ad interaction or diagnostic data for advertising, measurement, frequency capping, security, and fraud prevention. This processing is governed by Google’s Privacy Policy and How Google uses information from sites or apps that use our services.
Watching is entirely optional and is offered only as part of the free experience. A completed, server-verified ad unlocks advanced monthly reports inside Suivaya for 24 hours. During that period, you can generate multiple reports without watching another ad. Declining or closing the ad does not block any regular feature. While a verified Apple subscription is active, Suivaya does not offer or request rewarded ads; all ads are removed and advanced reports are included without watching a video.
The advertising SDK and Google’s consent form where required are opened only after you tap the reward button and confirm. The consent form may ask for choices needed to store or access information on your device; it does not make Suivaya request personalized ads. If those choices do not permit an ad request, no video is loaded and regular features remain available. You can reopen the available Google advertising privacy choices from Settings. Suivaya does not request App Tracking Transparency permission or access to IDFA.
4. Device permissions
- Notifications (optional): used only for the reminders and budget alerts you enable.
- Biometrics / device passcode (optional): used locally to unlock the App; this data never leaves your device and is handled by your operating system.
- Storage: used only to create export files (CSV / PDF / JSON) that you choose to share.
- Camera and photo library (optional, iOS only): used only when you choose a receipt to scan. The selected image is processed as described above and is not retained by Suivaya.
5. Data retention & deletion
“Reset device” in Settings clears the settings and local cache stored on that device only; it does not delete your projects or entries from the cloud, which remain attached to your account and reappear the next time you sign in.
If you leave a shared project, block a collaborator, or if the project owner removes you from one, the entries you recorded stay in the project so its history and totals remain accurate, but they are re-attributed to “a former member” instead of your name.
A block remains until you unblock the account or delete your account. Safety reports are retained only as long as reasonably necessary to review the report, enforce the Community Rules, protect users, resolve an appeal, and meet legal obligations. Account deletion removes reports you submitted, reports whose reported-account field identifies you, and block records involving your UID. A report that is not linked to your UID may remain for those purposes.
You can delete your account and its cloud data at any time from within the App: Settings → Delete my account. That screen shows you exactly what will happen to each project before asking you to confirm. After successful confirmation, access is cut off and active Suivaya data is deleted or made inaccessible with no recovery period. Firebase Authentication may retain IP logs for a few weeks and deletes other authentication data from its active systems and backups within at most 180 days.
Deleting your Suivaya account does not cancel an Apple subscription. On iOS, the deletion screen links directly to Apple’s subscription management and asks you to acknowledge that Apple may continue billing until you cancel. We delete or make inaccessible the active Firebase UID and account data subject to the Firebase Authentication retention period above, but retain for at most 400 days a pseudonymous link between the StoreKit account token and the original Apple transaction, together with the product identifier, current billing-period boundaries and number of scans already used (plus the active quota window for Apple Sandbox testing). This lets a server-verified purchase be restored securely without account deletion and recreation resetting paid quotas. The record contains no Firebase UID, email address, profile, project, expense or receipt-image data and is deleted when claimed or when its retention period expires.
Deletion also removes every invitation that identifies the account as creator or recipient. A server-only Firestore deletion lock prevents offline devices and concurrent advertising, purchase, scan, or invitation callbacks from recreating data while deletion runs. It contains only the former Firebase UID as its document key, a deletion state, and timestamps — no email, profile, project, expense, receipt, or advertising data. After success it remains for 24 hours to cover previously issued sign-in tokens and is then queued for automatic deletion. If the final authentication step fails after cloud-data cleanup, it may remain for up to 7 days so the operation can be retried safely.
If you no longer have the App installed, use our account-deletion page or contact us at the address below.
6. Children
Suivaya is intended only for adults aged 18 or over, and we do not knowingly collect data from minors. Creating an account requires an explicit 18+ confirmation, and profile completion validates a date of birth corresponding to an age of at least 18. If a person starts Google or Apple sign-in from the sign-in path and the identity has no existing Suivaya account, the App immediately requests deletion of the newly created authentication record before any profile or project data is written; Firebase’s retention timelines still apply. An account whose profile setup is incomplete can always be signed out of or deleted from the setup screen.
7. Your rights
Depending on your region, you may have rights to be informed, access and receive a copy of your data, correct it, delete it, restrict or object to processing, obtain portable data, withdraw consent at any time, and challenge qualifying automated decisions. You may also lodge a complaint with your local data-protection authority; in Morocco this is the CNDP. Contact privacy@zaycode.com to exercise a right. We may ask for proportionate identity verification and will respond within the period required by applicable law. In the EEA this is normally within one month. You can export your financial data from the App and delete your account in Settings. For data controlled independently by Google or Apple, use their privacy controls as well.
8. Changes to this policy
We may update this Privacy Policy from time to time. Material changes will be reflected by updating the effective date above and, where appropriate, through the App or our website.
9. Contact
Data controller: Zaycode
46 Avenue Okba, 3rd floor, apartment 18
Agdal, Rabat, Morocco