Security
Your bill file never leaves your device. The figures sent for a check are not kept.
Stays on your device
- The bill file and its pictures
- Your name and address
- Account and member numbers
- Date of birth
Sent to be checked, then not kept
- Charges, their descriptions and the organization that billed them
- Billing codes
- Amounts and dates
- Your answers to the money questions
- The country you chose
The details
- Your bill file stays on your device
- Your own browser reads the file and keeps it in its storage (IndexedDB). A PDF’s printed text is read directly. A photo or a scan, including a scanned PDF whose only text is a hidden layer its scanner added, goes through text recognition that runs on your device. The bill file is never uploaded, and there is no server holding bills, so there is no store of bills to break into.
- Nothing about your bill is stored on our side
- There is no database. When you ask for the checks, the figures from your bill are checked in memory and the answer is sent back. Nothing is written to disk or kept between requests, and what you send is never logged.
- Your name and numbers stay with you
- When you ask for the checks, your browser sends what it read: the charges with their descriptions, codes, dates, amounts and billing organizations; the bill’s type, totals, dates, currency and number of pages; the page and line each figure came from, how sure the reading was and notes on it; whether the bill shows a provider, insurer, statement or claim number, not what they say; your answers to the money questions; your country; and, for the full list, your receipt or pass. Before that, it removes your name, address, account and member numbers and date of birth wherever it recognizes them; a name printed with no label (such as a child’s name in a heading), a first name on its own in a charge, or a layout the reader does not know may not be recognized, and the Privacy Policy lists these limits.
- An encrypted connection
- Every page is served over HTTPS, and browsers are told to use HTTPS only (HSTS, for one year).
- Proof of payment without an account
- After you pay, your browser keeps a receipt (for one bill) or a pass (for a subscription) signed by our server. A receipt is tied to the exact figures you paid for, so it can’t be reused for another bill. The paid checks need one of them; the free preview needs none.
- Your card goes to Stripe, not to us
- Checkout happens on Stripe’s page. Your card never reaches our servers, a receipt or pass is issued only after Stripe confirms the payment, and Stripe is the only record of who paid.
- Sign-in without passwords
- Subscribers sign in on a new device with an emailed link that expires after 15 minutes. The reply is always the same, so it never reveals whether an email belongs to a subscriber. Sign-in links go only to subscribers. Apart from these links, the payment emails Link sends and the email that returns an organization’s plan link to the address its buyer types, we write by email only to answer a request about your rights, confirm a withdrawal or put a payment right, at the address you gave.
- Limits on repeated requests
- Requests that send an email, sign you in, start a payment or run the checks are limited per visitor, so a burst of requests is slowed down.
- Files checked on your device
- Files are checked by their actual content, not their name. Only PDF, JPEG, PNG, WebP and HEIC are accepted, with limits on size and number of pages. Because reading happens in your browser, a harmful file can only affect your own session.
- Only our own code runs on the page
- Our content policy lets pages load scripts from, and connect to, only our own site. It still allows inline scripts, which some of the tests below point out. There are no third-party scripts, no analytics scripts and no trackers.
- Bills are read as text, never as instructions
- The checks are fixed code, not an AI model, and no document ever reaches an AI provider.
- Nothing sensitive in logs
- Our functions log a random request number, the method, the path, the status and how long it took, and for a failed request the error code and a short description of the fault, never what was sent. For a successful free check, full list, checkout started or payment confirmed, the line also names that step, so we can count each step in a week. When a free-access link we gave an organization that helps patients is used, they also log that organization’s name, never the code in the link. When a browser opens a page, one count line is also written: the page’s path, whether it is the public site or the app, the country, the referring site’s host name and the day, with the time our host adds when it writes the line. It is kept about 3 months and never holds a network address or anything about a bill. Our host, Cloudflare, also keeps its own record of each request for up to about 7 days, which can include the network address it came from. If a page fails to load, your browser may also send Cloudflare a short error report. If error reports are switched on, request bodies, addresses and headers are removed before anything is sent.
- You can erase everything
- Settings has one control that deletes everything the app holds in your browser: bills with the corrections and answers kept with them, results, letters, receipts, your pass, your consent and the app pages saved for offline use. We keep nothing about your bills, so nothing of them is left on our side. You can download it all first.
Tests you can run yourself
Each link opens the tester’s own page, where you can see the result or run the test again. Results can change, and a test result is not a certification. These tests are automated and free for anyone to run. Their makers are independent of MedBillCheckup and do not endorse it.
- Internet.nl: 100%. Internet.nl is an initiative of the internet community and the Dutch government.
- Qualys SSL Labs: A. The page may run the test again before it shows the result.
- Security Headers: A.
- HTTP Observatory by MDN: B+. It marks down one setting: our Content Security Policy allows inline scripts.
- Blacklight by The Markup: 0 ad trackers. It also found no third-party cookies and no session recording. The Markup is a nonprofit newsroom.
- The Green Web Foundation: green hosting. Our host, Cloudflare, is on its list of green hosting providers.
Checked on October 30, 2026.
Payments are handled by Stripe, which lists PCI Service Provider Level 1 on its security page. Our host, Cloudflare, lists SOC 2 Type II and ISO 27001:2022 on its Trust Hub. Both pages were read on October 30, 2026. These belong to Stripe and Cloudflare, not to MedBillCheckup.
What we don’t claim
We hold no security certifications: no SOC 2 audit, no ISO 27001, and no HIPAA certification (the US government issues none and recognizes none from a private company). We don’t call our security “bank-level”, because that phrase means nothing.
Keeping the bill on your device means its safety depends on your device. Anyone who can open your browser can open your bills, so use the erase control on a shared computer. An independent security review hasn’t been done yet.
Reporting a problem
Write to security@medbillcheckup.com with “security report” in the subject, and tell us how to reproduce the problem. This covers medbillcheckup.com only, not Stripe, Cloudflare or other services. Please don’t access anyone else’s data while testing, and give us a fair chance to fix the issue before you share it.
See also the Privacy policy and the list of subprocessors.
