Last updated: 30 October 2026
This Privacy Policy explains how Roadcosts Greece (“Roadcosts”, the “Service”) processes personal data through roadcosts.gr, its Android application and related support services. The website provides a subset of the app’s features. Please read this notice together with the Terms of Use and Subscriptions, the Cookie Policy and the Account and Data Deletion Information.
The Service is owned and commercially operated by Anelyx. To the extent that it determines the purposes and means of the processing, the data controller is:
Anelyx is the present owner and commercial operator regardless of the Service’s initial development in 2018. Some third-party services may act as independent controllers for their own processing purposes, as described in their respective privacy notices.
The app requires Google Sign-In to access account features. Following a successful sign-in, we verify a Google identity token and store your Google subject identifier, email address and an internal Roadcosts account ID. We use the verified-email status when signing you in. Our server does not store your profile name, profile photograph, Google password or Google refresh token. The Google identity token is used for verification, rather than stored as such.
To maintain your session, the Service issues a technical session token. The server stores only a SHA-256 hash of the token and relevant usage timestamps. The usual configured session lifetime is up to 180 days and an account may have up to five concurrent sessions; actual server configuration may differ.
We use Fingerprint during sign-in to identify devices and reduce abusive registrations or the use of different accounts on the same device. Android uses a native SDK, while a JavaScript agent may be used in a supported web environment. The provider generates a device identifier (visitorId) and event information which our server checks. We retain the device identifier, related internal account ID, SDK type and first/last observation dates in our own database.
Fingerprint may process additional device or connection characteristics under its technical configuration and privacy notice. We do not persist the device model, confidence score, geographic position or complete Fingerprint event returned to our server. A SHA-256 hash of the Google identity token is sent as an event-matching tag during verification, rather than the raw token.
If a device identifier is already linked to a different account, the new sign-in may be rejected. This identification is not infallible. If you share a phone, have sold or acquired a used device, or believe there has been an incorrect match, contact info@roadcosts.gr for review and, where appropriate, administrator-assisted device unlinking.
To calculate costs, we process your chosen origin, destination, intermediate stops, distance, vehicle type, consumption, fuel/electricity price, toll information and routing preferences. You may type or search for a location without enabling GPS.
The app uses foreground location only after you request a relevant function, such as selecting your current location as the origin or accessing journey-related location services, and after Android permission has been granted. Approximate or precise location may be used. No background-location functionality was identified in the reviewed implementation. You may revoke location permission in Android settings.
Origin, destination and stop coordinates are transmitted directly from the device to Google Maps/Routes services to compute a route. The Roadcosts server receives the information needed for calculating the cost and recording usage, but does not maintain a server-side route-history or saved-favorites database in the current implementation.
Purchases are made through Google Play and subscription entitlements are technically managed by RevenueCat. RevenueCat receives the internal application user identifier and purchase/entitlement status information. The Roadcosts server queries entitlement status and holds the necessary entitlement cache to grant features. We do not store your full payment-card details or Google Play purchase tokens in our own database.
To enforce monthly usage limits, we record an internal account ID, calculation identifier, calculation category and month. Failed sign-in attempts may generate records containing email, device identifier and rejection reason. Technical error logs may contain timestamps, error descriptions and contextual diagnostic information. A temporary sign-in rate limiter uses a transformed IP identifier. Ordinary web-server access logs, if any, are subject to the hosting environment’s configuration.
If you use our contact form or email us, we process your name, email, subject, message and information you choose to provide. The form delivers messages by email rather than storing them in a dedicated message database table. It integrates Google reCAPTCHA to prevent spam. When enabled, verification token, IP address and related technical information may be transmitted to Google.
Our Free app plan uses Google AdMob for banners and potentially full-screen ads following calculations. AdMob and advertising-technology partners may process IP addresses, Advertising ID, technical device data, ad impressions/interactions and approximate region in accordance with the applicable consent choices and provider rules. Paid plans are ad-free under the current default entitlement configuration.
The website uses Google Analytics 4 (measurement ID G-LPNFFCPJQP) for statistics, and Google AdSense (publisher ca-pub-2492096443153002) for ads on public pages. The roadcosts_consent cookie stores the choice. Before a choice, analytics_storage, ad_storage, ad_user_data, and ad_personalization stay denied. Statistics consent sets analytics_storage to granted and then loads the Analytics tag. Advertising consent sets ad_storage and ad_user_data to granted and then loads AdSense. Personalized ads also set ad_personalization to granted. Ads that are not personalized leave ad_personalization denied. They still use advertising cookies. Staff and admin pages do not load AdSense. A statistics value from the previous website does not allow ads until you change it.
The Analytics tag and the AdSense script do not load until you allow that purpose. No separate Firebase/Google Analytics integration was found in the reviewed Android app. For details see the Cookie Policy.
| Purpose | Data involved | Possible legal basis |
|---|---|---|
| Account authentication and management | Google ID, email, session, account ID | GDPR Article 6(1)(b) — performance of a contract |
| Route calculations and location functions | Addresses, coordinates and route parameters | Article 6(1)(b), when necessary to deliver the requested service; Android permission as applicable |
| Paid access and entitlements | Account ID, purchase/entitlement status | Article 6(1)(b), and 6(1)(c) for relevant legal duties |
| Fraud and abuse prevention | Fingerprint identifiers, failed sign-ins, usage limits, technical signals | Legitimate interests under Article 6(1)(f), subject to necessity, balancing and applicable device-access/ePrivacy rules |
| Support and security | Messages, incidents and logs | Article 6(1)(b) or 6(1)(f), depending on the request |
| Optional analytics and advertising processing | Cookies, advertising identifiers and SDK signals | Article 6(1)(a) consent where required; other lawful bases only if permitted |
Android location permission, acceptance of Terms and consent to advertising processing are separate actions. Reliance on legitimate interests for device fingerprinting requires a separate assessment of necessity, proportionality and relevant ePrivacy requirements.
Depending on the function, recipients may include Google (Sign-In, Maps/Routes, Play, AdMob/UMP, Analytics, website AdSense, and reCAPTCHA), Fingerprint, RevenueCat, and hosting/email providers. Public fuel-price and infrastructure datasets imported by our server do not receive an app user’s profile as part of that import process.
Roadcosts hosting is stated to be within the EU; its precise provider and country remain to be confirmed: [COMPLETE — HOSTING PROVIDER AND COUNTRY]. Where providers transfer personal data outside the EEA, the relevant legal safeguards may include adequacy decisions, standard contractual clauses or other valid mechanisms, as applicable. A European Fingerprint endpoint does not, by itself, prove that every processing activity remains in the EU.
Provider information: Google, Fingerprint and RevenueCat.
The following describes data under our control and our stated operating retention policy, unless otherwise specified:
| Data category | Period or criterion |
|---|---|
| Account, email, linked devices | While the account remains active; removed from the corresponding tables when the account is deleted |
| Sessions | Usual maximum 180 days or earlier upon sign-out, deletion or session replacement; up to five concurrent sessions |
| Failed sign-in records | Up to 90 days |
| Calculation usage records | Up to 13 months; exceptional retention of the current month’s usage under a pseudonymous HMAC after account deletion |
| Administrator audit records | Up to 24 months |
| Backend technical errors | Up to 90 days |
| Support/contact emails | Up to five years under our stated retention policy |
| Database backups | Up to one year under the stated backup replacement policy |
| Temporary rate-limit files | Approximately one minute |
Historical account records (account_history) | These records contain previous internal account IDs and a pseudonymised Google identifier (HMAC). The weekly accounts prune job removes a record only if both conditions are met: (a) at least 45 days have passed since deleted_at; and (b) a successful RevenueCat check confirms that the old account ID no longer has access. If RevenueCat still reports access or the lookup fails, the record is retained until a later successful check confirms no access. Accordingly, 45 days is not a maximum retention period. |
Separate retention rules: The conditional deletion of account_history is separate from the current-month calculation usage record. On account deletion, that usage record continues to be transferred to an HMAC-based identifier and remains subject to the existing 13-month usage-pruning rule. The weekly historical-account cleanup depends on the deletion date and a successful RevenueCat entitlement lookup; simply passing 45 days does not cause deletion.
Important: A Google ID HMAC is pseudonymised, not necessarily anonymous. Retention by Google Play, RevenueCat, Fingerprint and AdMob is subject to those providers’ procedures and is not automatically ended when you delete your Roadcosts account. Specific legal obligations may require retaining certain records for longer.
You can request deletion in the app’s account screen or by emailing info@roadcosts.gr. The app deletes the main account, sessions, device-account links, temporary grants and entitlement cache, while limited usage, safety and historical entitlement records may remain as described above. Specifically, account_history is reviewed weekly and removed only after at least 45 days and successful RevenueCat confirmation that the old account ID no longer has access.
Account deletion does not automatically cancel or erase Google Play purchases/subscriptions and does not automatically send a deletion request to Fingerprint or RevenueCat. For additional requests concerning provider-held data, contact us so that we can assess the available procedures and each provider’s role. See Account and Data Deletion.
The website’s roadcosts_consent cookie stores your choice for 180 days: necessary only, statistics, ads, or both, and whether ads are personalized. Accept all allows statistics, ads, and personalized ads. Settings is where you reject statistics, ads, or both. Turning a purpose off returns the matching Consent Mode signals to denied for later requests. The Cookie Policy describes when each script loads.
In the Android app, Google UMP through AdMob manages advertising privacy choices. In app versions that include the feature, the Information screen shows “Advertising privacy” only when Google indicates that a privacy-options entry point is required. This opens Google’s privacy options form to review or change available choices. After the form closes, the app checks ad-request eligibility again: if ads are not allowed, it hides the banner; if a banner was visible and ads remain allowed, it reloads it. The entry point is not shown in the browser version. Older Android releases may not yet have this control.
Subject to GDPR conditions, you may request access, rectification, erasure, restriction, portability, object to legitimate-interest processing, and withdraw consent without affecting prior lawful processing. You may also request review of an incorrect device identification that blocks sign-in.
Send requests to info@roadcosts.gr. We may request the minimum information reasonably needed to verify identity. We generally respond within one month, subject to lawful extensions. You may lodge a complaint with the Hellenic Data Protection Authority or another competent supervisory authority.
We implement technical and organizational measures appropriate to our systems, such as Google token verification, device identification safeguards, sign-in rate limiting and storage of session hashes rather than raw session tokens on our server. No system is perfectly secure. The Service is not specifically directed to children. Where consent-based processing involves minors, applicable age and parental-responsibility rules apply.
We may revise this policy when services, providers or applicable rules change. The revision date appears above, and additional notice will be provided where required. Questions: info@roadcosts.gr.