Skip to content

Legal

Privacy Policy

What we collect, why, how long we keep it, and the choices you have — in plain language.

Last updated , See what changed, 15 min read

Contents
  1. Who we are
  2. What we collect
  3. How we use it
  4. OCR and AI processing
  5. How long we keep it
  6. Who we share it with
  7. How we protect it
  8. Cookies and browser storage
  9. Your choices and rights
  10. Children
  11. Where your data is processed
  12. Changes to this policy
  13. Contact

Who we are

AnyStatement (anystatement.com) converts PDF bank and credit card statements into spreadsheets and accounting files. It is run by Ravi (“we”, “us”). This policy covers the website and the conversion service.

AnyStatement is offered to people and businesses in the United States. Questions about this policy or your data go to support@anystatement.com.

What we collect

Statements you upload

The PDF files you upload and everything we extract from them: transactions, balances, statement periods, and details printed on the statement such as the bank and account holder’s name. Structured account-number fields keep only the last four digits. Original statements and retained source or OCR text can contain full printed account and card numbers until deletion; we do not redact the original PDF. We also keep your review edits and recognised text so that a retry doesn’t read scanned pages twice.

If a PDF is password-protected, the password you enter is used once, in memory, to unlock the file. It is never written to storage, queues or logs.

Your account

Accounts are optional. If you create one, sign-in is handled by WorkOS, with an email address and password or with your Google account, and we receive your verified email address and a WorkOS user ID. A name your sign-in method provides (for example from Google) is shown to you in the app from your sign-in session only; we don’t store it. A display name you type yourself is stored with your account until you clear it or delete the account.

Your account keeps your email address, any display name you set, your plan and subscription status, your page balance and usage history (which conversion used how many pages, and when), and the answers you give when you start, such as your role (for example, bookkeeper) and where you usually export to. Your documents are never part of it: they’re deleted 24 hours after upload, or on the date you chose for a batch you keep.

If you tick “Remember for future statements” when you choose a category, your account also keeps that rule: a few words of the payee’s name as printed on the statement (for example “fuel stop”) and the category. It’s the only text from your statements we keep beyond the files themselves, and only because you asked. You can see and delete your rules in Account → Category rules; they’re included in “Download my data” and deleted with your account. Without an account, nothing is remembered.

If you save a bank account’s export details for QuickBooks, Quicken or OFX files, your account keeps them under a fingerprint of that bank account: the bank or routing number, Intuit’s bank ID, the region, and at most the last 4 characters of the account number. They’re included in “Download my data” and deleted with your account; without an account they stay in your browser only.

Payments

Payments are processed by Stripe. You enter card details in Stripe’s own secure form; we never see or store your full card number. We give Stripe your email address and an internal account ID, and Stripe tells us what you bought, the status of your subscription and whether a payment method is on file. If sales tax applies, Stripe also collects your billing address. Your purchases, with their Stripe receipts and invoices, are listed on the Account page under Billing.

Without an account

Your browser gets an anonymous session: a random 256-bit key kept in your browser’s local storage. We store only a one-way hash of it, and it expires after 24 hours, together with the files it owns.

IP addresses

We never store or log your IP address. We use it only as a keyed hash we can’t reverse (an HMAC under a secret key), to limit how many anonymous sessions one network can start per hour (60) and to count anonymous free pages, and a daily fair-use cap, per network per day. Everyone behind the same office or mobile network shares those daily free pages. The daily counters are keyed by a further hash under a salt that changes every UTC day, so one day can’t be linked to the next; an anonymous session keeps the keyed hash for its 24 hours. Our hosting providers receive your IP address as part of delivering any website, and handle it under their own terms.

Operational logs

To run the service we log IDs, file sizes, page counts, timings and error codes. Logs never contain file contents, extracted text, transactions, filenames, account numbers, email addresses, passwords, session keys or IP addresses. Our API’s request logs leave out your IP address, and our file storage keeps no access logs, because those would record it.

Messages you send us

If you email us, Namecheap forwards your message to our support inbox in Google Gmail, where we keep the conversation so we can help you. These providers receive your email address, message and any attachments. The automatic deletion period for uploaded statements does not apply to email. Don’t email statements or account numbers; use the app’s consent-based problem report if we need to inspect a file.

Problem reports

If you tell us a file was converted wrongly, we keep your report for 30 days: what you ticked, the note you typed, and facts the service worked out itself (page and transaction counts, how many statements balanced, error codes, the file’s size and type, the program that made the PDF, the engine version). That is never statement text. We open the file only if you turn on “Let us open this file to fix it”, which starts off. Then we keep a copy of the file and of what we read from it for the same 30 days, readable only by AnyStatement staff, and each time it is opened is recorded.

You can take that back whenever you like. While the file is still there, delete it (that deletes the report and the copy) or send the report again with the switch off. Signed in, your account page lists your reports and can delete the copy or the whole report even after the file has expired. Without an account, write to us with the report ID.

What we don’t collect

The site has no analytics, advertising or tracking scripts, and we don’t collect your precise location.

How we use it

  • To provide the service: read your statements, check them against their printed balances, show you the results and produce your exports.
  • To run your account and billing: your plan, page balance, purchases and receipts.
  • To keep the service safe and fair: rate limits, free-page allowances and preventing abuse.
  • To support you when you contact us, and to tell you about important changes to your account or to these policies.
  • To meet legal obligations, such as tax and accounting records for purchases.

We don’t sell your personal information, share it for advertising, or use it to build profiles about you. We don’t look at your documents unless you ask us to help with a specific file, or the law requires it.

OCR and AI processing

Text in scanned pages is recognised with Amazon Textract. When a statement’s layout isn’t one our parsers know, a large language model hosted on Amazon Bedrock helps structure the text. Both run on Amazon Web Services (AWS) in the United States; the model’s makers never receive your documents.

Your documents are never used to train AI models: not by us, and not by AWS. Amazon Bedrock doesn’t use what it processes to train models, and our AWS organisation opts out of AWS using content from its AI services, including Textract, to improve them.

Whatever the model returns is checked against the statement itself: every statement is reconciled against its printed balances, and anything that doesn’t add up is flagged for you to review.

How long we keep it

  • Statements, results and edits: deleted 24 hours after upload by default, with or without an account. Signed in, you can choose to keep a batch for 7 or 30 days from upload instead; it’s deleted on the date shown on the batch. Expired files can’t be opened from the moment they expire, and a cleanup job removes them from storage within about 15 minutes. As a backstop, storage rules delete files kept for the default after 1 day, and any file after 31 days. You can delete a file or a whole batch sooner at any time. We don’t keep backups or old versions of documents, so deleted means deleted. The one exception is a copy you let us keep with a problem report, described below.
  • Deletion receipts: when a batch is deleted, by you or automatically, we keep a receipt: a random batch ID, when it was created and deleted, why, and how many files and pages it had. No email address, names, file or batch names, or contents. Receipts are kept for 90 days (for an anonymous session, no longer than the session), are deleted with your account, and you can see and download them in the app.
  • Category rules: until you delete them or your account (at most 2,000 payees).
  • Saved export details: until you forget them or delete your account (at most 200 bank accounts).
  • Problem reports: 30 days from the last time you sent or changed the report, or until you delete the file, the report or your account. A copy of a file you let us open goes with it. The report outlives the file’s own retention.
  • Anonymous sessions: 24 hours. Daily usage counters (keyed by the hashed IP address) last about a day.
  • Your account: until you delete it. Deleting it takes effect at once and removes:
    • Your profile: email address, any display name you set, plan and the answers you gave when you started.
    • Your page balance and usage history.
    • Every batch still stored, with its files, results and edits, including batches you chose to keep longer.
    • Your deletion receipts.
    • Your problem reports, with any copy of a file you let us open.
    • Your category rules (payees whose category you asked us to remember).
    • Your saved export details (bank and routing numbers, and at most the last 4 characters of each account number).
    • Any subscription, which is cancelled immediately.
    • Your sign-in at WorkOS.
    Afterwards, only these are kept:
    • AnyStatement: For one day, your WorkOS user ID only (no email, no account data), to refuse sign-in tokens issued before the deletion.
    • AnyStatement: Until the end of that calendar month (UTC), a keyed hash (HMAC) of your email address and the number of free pages you used that month, so deleting and re-creating an account doesn’t reset the free allowance. The hash key is generated per month and deleted with it, so the record can’t be linked to you after the month ends.
    • AnyStatement: Records of changes we made to your account ourselves, such as complimentary pages. They refer to an internal ID, never your email, and contain no documents.
    • Stripe: Your payment history, invoices and the email address on them, which Stripe must keep under tax and financial law, under Stripe’s privacy policy.
    • WorkOS: WorkOS deletes your user; its own security logs follow WorkOS’s retention, under WorkOS’s privacy policy.
  • Operational logs: 30 days; request logs of our API (which contain no IP addresses), 90 days.
  • Emails with us: as long as needed to help you and keep a record of what we agreed.

Who we share it with

Only the service providers that run parts of AnyStatement for us, each for its stated purpose: AWS (hosting, storage, OCR and AI), Vercel (the website), WorkOS (sign-in), Stripe (payments), and Namecheap and Google Gmail (support email). The subprocessor list says what each one receives.

If you sign in with Google, Google shares your name and email address with WorkOS under its own privacy policy.

We may also disclose information when it is necessary to:

  • comply with the law, a court order or a valid legal request;
  • protect the rights, safety or property of our users, the public or AnyStatement;
  • continue the service if it is transferred, for example to a company formed to run it. This policy would keep applying to your information.

How we protect it

Every connection uses TLS. Files, results, account data and job messages are encrypted at rest with a dedicated AWS KMS key. Your browser uploads files directly to encrypted storage over a short-lived link restricted to that file, and untrusted PDFs are opened in isolated processes with no access to our credentials. Only the operator has access to production systems.

No system is perfectly secure. If a breach affects your personal information, we will tell you as the law requires. The security page explains the details.

Cookies and browser storage

We use only what the site needs to work; there are no analytics or advertising cookies. How sign-in works: a sealed session cookie that page scripts can’t read keeps you signed in. From it, the page gets a short-lived access token (valid for five minutes), keeps it in memory only, and sends it to our API with each request to prove who you are. Without an account, your anonymous session key is kept in local storage and sent to our API the same way.

Two other companies set cookies at specific moments. On WorkOS’s sign-in page, which runs on WorkOS’s own domain under WorkOS’s privacy policy, WorkOS uses Datadog Real User Monitoring and Sentry error reporting, and Cloudflare bot protection. They can see how you use that sign-in page, such as clicks and errors; they never see your statements. Stripe.js loads only once you open checkout: then Stripe sets its cookies and runs its fraud checks.

NameWhen and how longWhy
wos-sessionCookie, set by AnyStatementWhile you’re signed in. 7 days, or until you sign out. anystatement.com.Keeps you signed in. A sealed (encrypted) WorkOS session that page scripts can’t read (HttpOnly, Secure, SameSite=Lax).
workos-access-tokenCookie, set by AnyStatementRight after you sign in or your session refreshes. 30 seconds. anystatement.com.Passes a fresh access token from sign-in to the page, then expires.
wos-auth-verifier-…Cookie, set by AnyStatementWhile you sign in. 10 minutes. anystatement.com.Protects the sign-in against interception (a PKCE verifier; HttpOnly).
sc_auth_returnCookie, set by AnyStatementWhile you sign in. 15 minutes. anystatement.com (sign-in paths only).Remembers which page to return to after sign-in (HttpOnly).
sc.sessions.v1Local storage, set by AnyStatementWhen you convert without an account. Until the anonymous session expires (24 hours). anystatement.com.Your anonymous session keys: they prove to our API that the files you uploaded without an account are yours.
sc.export.v1Local storage, set by AnyStatementAfter your first export. Until you sign out or clear it. anystatement.com.Your last export format, so the next export starts there. Never sent to us.
sc.export.accounts.v1Local storage, set by AnyStatementWhen you export to QuickBooks, Quicken or OFX without an account. Until you sign out or clear it. anystatement.com.Bank details you typed for an export (an account ID of up to 4 characters, never a full account number; routing or transit and institution number; Intuit institution ID), remembered per bank account on this device when you aren't signed in. Never sent to us except with that export.
sc.review.layout.v1Local storage, set by AnyStatementWhen you resize or hide the PDF while reviewing. Until you sign out or clear it. anystatement.com.How wide the PDF is next to the transactions, or that you hid it. Never sent to us.
sc.reader.v1Local storage, set by AnyStatementWhen you change reading settings. Until you sign out or clear it. anystatement.com.Reading preferences on these pages: theme, text size and typeface. Never sent to us.
sc.claimed.v1Session storage, set by AnyStatementAfter you sign in with files already converted. This tab only. anystatement.com.A note of the work moved to your account when you signed in, for the welcome screen.
sc.promotions.dismissed.v1Session storage, set by AnyStatementWhen you dismiss an offer. This tab only. anystatement.com.Offers you dismissed, so they stay hidden.
sc.signed-out.v1Session storage, set by AnyStatementWhen you sign out or delete your account. This tab only. anystatement.com.Whether you signed out or deleted your account, so the page you land on can confirm it.
_dd_sCookie, set by WorkOSOn WorkOS’s sign-in page only. Up to 4 hours. WorkOS’s sign-in domain (authkit.app).Datadog Real User Monitoring, which WorkOS uses to measure its sign-in page: page views and interactions on that page.
__cf_bm, _cfuvidCookie, set by WorkOSOn WorkOS’s sign-in page only. 30 minutes; this browser session. WorkOS’s sign-in domain (authkit.app).Cloudflare bot protection for WorkOS’s sign-in page.
__stripe_midCookie, set by StripeOnly once you open checkout. 1 year. anystatement.com, set by Stripe.js.Stripe fraud prevention: recognises a device across checkouts.
__stripe_sidCookie, set by StripeOnly once you open checkout. 30 minutes. anystatement.com, set by Stripe.js.Stripe fraud prevention for the current checkout.

Signing out, or deleting your account, clears everything AnyStatement keeps in this browser’s storage.

Because we don’t sell or share data for advertising, there is nothing to opt out of, and signals such as Global Privacy Control are respected by default.

Your choices and rights

  • Delete documents at any time with Delete on a file or a batch.
  • Delete your account in Account → Delete account. It takes effect at once.
  • See your data: Account → Your data → Download my data gives you a JSON copy of your profile (including any display name you set), plan, page history (grants and charges), purchases, category rules, saved export details, and the names and status of the batches and files still stored (never their contents). For anything else, write to us.
  • Correct it: change your preferences on the account page; for anything else, write to us.

Depending on where you live, for example in California, Washington, Colorado, Virginia or another state with a privacy law, you may have the right to know what personal information we hold, to get a copy, to have it corrected or deleted, and to opt out of its sale, targeted advertising or profiling (we do none of these). We honour these requests from everyone, wherever they live.

To make a request, email support@anystatement.com from the address on your account, or tell us how to verify that the data is yours. An authorised agent may ask on your behalf with your signed permission. We’ll answer within 45 days, and we never treat you differently for using your rights. If we decline a request, you can appeal by replying to our answer; if you’re still unsatisfied, you may contact your state’s attorney general.

We don’t collect health data, so laws such as Washington’s My Health My Data Act don’t apply to the information we hold.

Children

AnyStatement is for adults: you must be 18 or older to use it. We don’t knowingly collect information from children. If you believe a child has given us personal information, write to support@anystatement.com and we will delete it.

Where your data is processed

Everything is processed and stored in the United States: on AWS in the us-east-1 region (Northern Virginia), with text recognition and AI in AWS’s US regions. WorkOS and Stripe are also based in the United States. AnyStatement is built for US statements; statements from other countries may convert, but aren’t guaranteed, and we flag what we can’t verify.

  • United States: your data stays in the US.
  • Canada (including Québec): your data is transferred to and processed in the US, where US authorities may be able to access it under US law. We handle it as this policy describes, in line with PIPEDA and Québec’s Law 25; write to support@anystatement.com with questions.
  • United Kingdom and European Union: your data is transferred to and processed in the US. We don’t offer UK or EU data residency, and no Standard Contractual Clauses are in place yet: they are part of our draft Data Processing Addendum, which is awaiting legal review.
  • Elsewhere: your data is transferred to and processed in the US.

Changes to this policy

When we change this policy we update the date at the top and record what changed in the policy change history. If a change materially affects how we handle your information, we’ll tell you before it takes effect, by email if you have an account and on this site.

Contact

AnyStatement is run by Ravi. Write to support@anystatement.com with any question or request about your privacy.