Privacy Policy
Last updated: October 2026
The short version
Your bank statement PDF never leaves your device. The text extracted from it is sent over an encrypted connection to our server, parsed in memory, and immediately discarded — never stored, never logged. We never see your PDF file itself.
The marketplace settlement converters (Amazon, eBay, Shopify, Etsy, PayPal) and the file converters (CSV, Excel, OFX, QFX, QBO) follow the same model: the report or file text is sent over an encrypted connection, parsed in memory, and discarded the moment your result is returned — never stored, never logged.
What we do NOT collect
- Your bank statement PDF — it is opened locally by JavaScript (Mozilla pdf.js) and never uploaded.
- Persistent copies of your data — extracted text is processed in memory and discarded the moment your result is returned. We do not store transactions, account numbers, routing numbers, or balances.
- Cookies — this site sets none.
What is stored on your device
If you purchase and validate a license, the license key and its validation timestamp are stored in your
browser's localStorage so you don't have to re-enter it. You can clear it at any time via your
browser's site data settings. Nothing else is persisted.
What is sent over the network
- Parsing. When you convert a PDF, the text extracted from it (dates, descriptions, amounts — not the file) is sent to our server over HTTPS, parsed in memory, and discarded the moment the result is returned. The marketplace settlement converters (Amazon, eBay, Shopify, Etsy, PayPal) work the same way on the report's text content, and the file converters (CSV, Excel, OFX, QFX, QBO) on the file's text content. None of it is ever written to disk, a database, or logs.
- Page & library loads. The site is static files served by our hosting provider (Vercel); the two open-source libraries (pdf.js and SheetJS) are self-hosted — served from this same domain, no third-party CDN is contacted. Like any web request, the hosting provider may log your IP address and user agent per its own privacy policy.
- Anonymous usage statistics. We use Vercel Web Analytics, which counts page views and referrers without cookies and without collecting any file or personal data.
- Anonymous usage counters. Our server keeps running counts of service events: parses
(succeeded/failed), exports (file format and row count only), rate-limit hits, and error codes. These are
bare numbers — they never include statement content, account numbers, file names, or any personal data.
To count unique visitors, events may carry an anonymous random ID your browser generates on first visit
(
crypto.randomUUID(), kept only in your localStorage); the server stores it as a one-way hash in a probabilistic counter. It is not a cookie, not tied to personal data, and your files are never involved. - Free-export quota marker. The free tier allows one full export per internet address. To enforce it, our server stores a single marker keyed by a one-way SHA-256 hash of your IP address when the free export is used. The marker carries no content, no account data, and no timestamp beyond its own existence, and the raw IP address is never stored.
- License validation (paid users only). When you enter a license key, the key — and only the key — is sent to our serverless endpoint, which forwards it to Gumroad's license API to confirm validity. No statement data is ever attached to this request.
- Checkout (paid users only). If you buy a license, the transaction is handled by Gumroad under their privacy policy. We receive only an order confirmation and your email address for license delivery.
- Automatic failure report (masked, no content). If a parse fails outright (no readable
text, no transactions found, or a parser error), or the result shows signs of trouble (implausible dates,
totals that do not reconcile, or unusual parser warnings), one masked diagnostic per address per day is
stored in our server log and emailed to our feedback inbox: the failure type, parser version, warning
codes, non-content metadata (row and page counts, parse time), and the statement's layout
structure with every letter and digit masked (
A→X,a→x,0→9). No readable text, no file name, no account data. - Optional diagnostic report (your choice). After any parse, a "Send an anonymous diagnostic" link lets you voluntarily send the same kind of masked layout structure. The exact payload is shown for review before anything is sent, and nothing is sent unless you click Send.
Data retention
Extracted text is processed in memory and discarded immediately, so there is nothing for us to retain or delete. Anonymous usage counters (numbers only, as described above) are kept as daily aggregates for 35 days and as lifetime totals. The free-export quota marker (a hashed-IP key, no content) is kept until the free tier changes. Diagnostic reports (masked, content-free as described above) are kept in the server log (most recent 500) and the feedback inbox while we fix the reported issue, then deleted. License and order records are retained by Gumroad as required for accounting purposes.
Changes to this policy
If we ever change how data is handled (for example, adding optional OCR, which would require uploading a file), we will update this page and make the change opt-in and obvious before it affects you.
Contact
Questions about privacy? Use the Feedback link in the site navigation — it goes straight to the maintainer's inbox.