Bank2XL ("we", "us", "the Service") provides a Chrome extension and web app that converts PDF bank statements to Excel, CSV, QBO, OFX, and QFX files. This Privacy Policy explains what information we collect, how we use it, and the choices you have.
When you upload a PDF bank statement, we receive the file and process it to extract its content. We use the file solely to produce the requested output (Excel, CSV, QBO, OFX, QFX, or JSON).
During the public beta, we do not maintain an account database. Bank2XL is free, with no signup and no credit card. The only emails we hold are: (a) support / privacy / security emails you send us, kept while the thread is active and then archived per our retention schedule; and (b) launch-notification waitlist emails — if you click "Get notified when the extension launches" on the homepage, we store your email solely to send the Chrome Web Store install link and product updates. You can unsubscribe at any time by replying to any such email. Once paid plans launch (we’ll announce 30 days in advance), subscribers will provide an email address and have their payment processed by Stripe (or a similar PCI-compliant processor) — we will never store full card numbers ourselves.
We record basic technical information for service health and abuse prevention: timestamps of conversions, number of pages processed, success/failure status, and your IP address (truncated). We do not record the contents of your statements in this telemetry.
The Chrome extension requests the minimum permissions needed:
The extension also declares a single host permission for https://api.bank2xl.app/* so it can send your file to our converter API. It does NOT request access to your browsing history, all websites, or any banking sites. It only acts on files you explicitly hand it.
| Purpose | Data used |
|---|---|
| Convert your PDF to spreadsheet | The uploaded file, held in memory during conversion. By default, also kept for 24h in an encrypted on-disk debug vault, then auto-deleted. Tick the opt-out box in extension Settings to skip the vault. |
| Enforce the daily free-tier quota and prevent abuse | A random per-install identifier (UUID, generated by the extension, stored on your device) and a truncated client IP. Counters reset daily at 00:00 UTC. |
| Service reliability and fraud prevention | Usage logs (timestamps, page counts, truncated IP). No file content. |
| Improve the model (aggregate only) | De-identified accuracy metrics (e.g., reconciliation rate) — never file content. |
| Future: authenticate and bill paid plans (not active during the public beta) | Email address and Stripe customer ID, only after a user signs up for a paid plan. |
We do not use your statement content to train AI models. We do not sell your data to advertisers, brokers, or any third party.
To run the Service we share limited information with:
| Provider | Purpose | What they receive |
|---|---|---|
| OpenRouter (LLM router) | Send a rasterized page image to the LLM. We route via OpenRouter's Zero Data Retention tier for upstream providers that honour it. | One image per statement page; no metadata |
| Google (Gemini API) | OCR + extraction (called via OpenRouter). Per Gemini API additional terms, paid-tier inputs and outputs are not used to improve Google products. | The image content for inference only; not retained per Google API terms |
| Datalab (Chandra OCR) | Fallback OCR for low-quality scans. Datalab's privacy policy documents their managed-platform zero-data-retention posture for API customers. | Rasterized page images for inference; no statement metadata |
| Cloudflare | Edge TLS, CDN, DDoS protection, bot management for bank2xl.app and api.bank2xl.app | Request metadata (URL, method, IP, user agent) for routing and abuse mitigation |
| PostHog (EU instance, eu.i.posthog.com) | Product analytics on the marketing site (bank2xl.app) | Page views, anonymous distinct ID stored in a first-party cookie. Never receives statement content or uploaded files. |
| Future: Stripe | Payment processing — not active during the public beta | Email, billing address, card details (held by Stripe). No payment data collected until paid plans launch. |
Each provider operates under its own privacy policy. We choose providers with strict no-training and no-retention defaults for content data.
We use TLS for all data in transit. Files at rest are encrypted with AES-256. Access to production systems is restricted to a small number of engineers with two-factor authentication. We follow industry-standard practices but cannot guarantee absolute security; please use the Service only with statements you are willing to upload to a cloud SaaS.
You can at any time:
Residents of California (CCPA), the EU/UK (GDPR), and other jurisdictions with similar laws have additional statutory rights. Contact us at privacy@bank2xl.app to exercise them. We do not sell personal information under any definition of "sell" in CCPA.
The Service is not directed at children under 13 (or 16 in the EU). We do not knowingly collect data from children. If you believe a child has used the Service, contact us and we will delete the associated account.
We may update this Policy. Material changes will be announced via email to account holders and via a banner on the landing page. Continued use of the Service after a change constitutes acceptance.
Bank2XL
Email: privacy@bank2xl.app
Operator: Dmitry Ivanov, Montenegro