Version 4.9.450 — Last updated:
The controller of personal data collected through the Cash Machine Scanner application is:
Cash Machine Scanner
Contact: contact@cash-scanner.com
Cash Machine Scanner may process the following categories of data:
No payment data is collected. The service is free.
| Purpose | Legal basis (GDPR) |
|---|---|
| Authentication and account management | Contract performance (Art. 6(1)(b)) |
| Providing features (scoring, alerts, portfolio) | Contract performance (Art. 6(1)(b)) |
| Security, abuse detection, technical logs | Legitimate interests (Art. 6(1)(f)) |
| Improving the service (aggregated statistics) | Legitimate interests (Art. 6(1)(f)) |
| Advertising and ad measurement (Google AdSense, when enabled) | Consent (Art. 6(1)(a)) — collected through the dedicated banner, withdrawable at any time |
The service relies on the following providers. Transfers outside the EU may occur under the EU Standard Contractual Clauses (SCC):
| Processor | Role | Location |
|---|---|---|
| Google Cloud Platform | Hosting (Cloud Run, Cloud Storage) — europe-west1 | EU (Belgium) |
| Google OAuth 2.0 | Authentication via Google account | United States (SCC) |
| Apple Sign-In | Authentication via Apple account | United States (SCC) |
| Telegram | Authentication and notifications | International (SCC) |
| Yahoo Finance (API) | Market data (prices, metadata) | United States (no personal data) |
| EODHD | Market data (prices, fundamentals) | International (no personal data) |
| Finnhub | Market data (prices, fundamentals) | United States (no personal data) |
| SMTP provider (depends on configuration, e.g. Google Workspace) | Sending emails (password reset, notifications) | Varies based on the configured SMTP provider |
| OpenAI / Google Gemini / Perplexity | AI-generated analyses (tickers and briefings) | United States (SCC) |
Under the GDPR, you have the following rights:
For any additional request, contact: contact@cash-scanner.com
You may also lodge a complaint with your supervisory authority (for France: CNIL): cnil.fr
The application uses:
If the publisher enables audience measurement (Cloudflare Web Analytics, aggregated), an analytics script may be loaded. Cloudflare Web Analytics is cookie-less and does not collect personally identifiable data — no prior consent is required.
If the publisher enables Google AdSense advertising zones, advertising scripts are loaded only after server-side configuration and user consent through the dedicated consent banner. Depending on your choice, Google may process advertising identifiers for non-personalized or personalized ads. You can refuse or change this consent from the consent banner; see also Google’s policy: policies.google.com/technologies/ads.
List of trackers this site stores on your device — HTTP cookies, local storage and session storage (storage, category, purpose, retention period):
| Name | Storage | Category | Purpose | Duration |
|---|---|---|---|---|
| access_token | Cookie | Necessary | Authentication (session) | 15 minutes |
| refresh_token | Cookie | Necessary | Session renewal without re-entering the password | 7 days |
| lang | Cookie | Preferences | Remembers the chosen language | 1 year |
| __cf_bm | Cookie | Necessary | Cloudflare bot management — distinguishes real users from automated bots | 30 minutes |
| g_state | Cookie | Marketing | Google Identity Services — native Google Sign-In button (One Tap) | Variable (Google) |
| __Secure-1PSID, __Secure-3PSID | Cookie | Marketing | Set by Google if you are already signed into a Google account in your browser | Variable (Google) |
| access_token, refresh_token, jwt_token, token, token_type, expires_at | Local storage | Necessary | Session tokens kept so you are not asked to sign in again on every page | Until sign-out |
| user, user_id, username, role, user_role, telegram_id, auth_state | Local storage | Necessary | Session identity shown in the interface (name, role, identifier) | Until sign-out |
| cash_scanner_ads_consent, cash_scanner_ads_consent_v2 | Local storage | Necessary | Remembers your advertising consent choice so it is not asked again | 6 months |
| theme, lang, display-limit, dashboard_layout, last-scan-preset, scan-preset, backtest_benchmark, cs:webnav:enabled, cs-tabs-state-v1, cs-tabs-strip-hidden, hidden_cards_v1, hidden_cards_ctx_*, opp_filter_country_v1, opp_filter_sector_v1, opp_filter_signals_v1, portfolio-investments-collapsed, portfolio-investments-sort, portfolio-perf-collapsed, portfolio_display_currency, usage_collapsed_sections_v1, usage.param_key.*, watchlist_sort_v1, search-modal-recent, dashboard_portfolio_card_open_v1, cash_scanner_active_portfolio_id, card_state:*, ticker-score-view:*, ai-card-* | Local storage | Preferences | Display settings: theme, language, layout, filters, collapsed cards | Until cleared by the user |
| cash_scanner_onboarding_done, cs-tabs-hint-seen, update-banner-shown, cash_scanner_guest_cta_snoozed_until, cash_scanner_guest_action_count, cash_scanner_guest_cta_events, mobile_app_prompt_shown, mobile_app_prompt_dismissed_at, cs_version_info_v1 | Local storage | Preferences | Remembers which messages, guides and banners you have already seen | Until cleared by the user |
| __alerts_triggered_cache_v1, __scores_mode_cache_v1, __shellNavAlertsLastCheck__, alerts-triggered-signature, local-notif-signature, last_job_execution, last_scan_ts, fundamentals_cache_v2, ticker_metadata, isin_resolve_*, watchlist_cache_v1, portfolio_cache_v1, dashboard_portfolio_snapshot_v1, cs:swr:*, cs:ai-job:v1:* | Local storage | Necessary | Local copy of data already loaded (scores, portfolio, favourites, AI analyses) to avoid asking the server again on every page | Minutes to hours (cache) |
| fcm_push_token_v1 | Local storage | Necessary | Device push notification token (Android application only) | Until sign-out |
| DEBUG, DEBUG_MODE, SCANNER_DEBUG, SCANNER_IMPORT_PDF_DEBUG | Local storage | Necessary | Diagnostic mode, enabled manually from the interface or the URL | Until cleared by the user |
| cash_scanner_utm | Session storage | Audience measurement | Visit origin (utm_* parameters) used to attribute a sign-up — internal statistics, never shared nor combined across sites | When the tab is closed |
| cash_scanner_guest_cta_origin, dash_shell_warm, onb_redirected, login_redirect_count, login_redirect_ts, cash_scanner:dashboard_flash, scanner.session.portfolio.v1, pf:revalidated:* | Session storage | Necessary | Navigation loop guard and sign-up button attribution | When the tab is closed |
You can permanently delete your account and all associated data (portfolio, movements, alerts, watchlist, usage history, estimated country of origin) from the dashboard → click your name → Profile → Danger zone → "Delete my account". Deletion is immediate and irreversible. No recovery is possible beyond the legal retention period for technical logs (maximum: 30 days).
JSON export of your personal data (profile, preferences, portfolio, alerts, watchlist, estimated country of origin): dashboard → Profile → Privacy → "Export my data". The export is generated on demand and downloaded locally.
Terms of Use · Legal Notice · About · Contact · Français