Security

Last updated 4 August 2026

MaxMyPoints reads your card transactions in order to tell you which card you should have used. That is sensitive data, and this page describes the controls that are actually in place to protect it — not aspirations. Where something is handled by a provider rather than by us, we say so and name them.

The three things that matter most. We never receive your banking credentials. Our access to your accounts is read-only — we cannot move money or change anything at your institution. And one account can never read another account's data, because that boundary is enforced by the database itself rather than by application code.

Bank and card connections

Card connections go through Plaid, the bank-data provider used by a large share of consumer financial apps. You authenticate with Plaid or directly with your institution — never with us.

Plaid's own handling of your information is governed by its End User Privacy Policy.

What we never store

Two-factor authentication

You can turn on two-factor authentication from your account settings, using any authenticator app. With it on, signing in asks for a six-digit code as well as your password, so someone who learns your password still cannot reach your transaction data.

We offer it rather than requiring it. If you lose your authenticator we have no way to verify who you are and let you back in — we hold no identity documents and run no support desk that could safely do it — so being locked out of an audit you paid for is a real cost, and the choice is yours. We do ask before you connect a bank account, because that is the point where it starts to matter.

Once you turn it on, a session that has only passed the password step cannot read your data — that rule is enforced by the database, not just by the app, so it holds even for a request that bypasses our website entirely.

Separation between accounts

Every table holding customer data — cards, transactions, audits, uploads, tool data — carries a row-level security policy tying each row to the account that owns it. That check runs inside the database on every single query, so it holds even if application code is wrong: a request for someone else's row returns nothing rather than returning their data.

Records that a customer should be able to read but never alter — subscriptions, computed audits, imported transactions, statement records — are additionally read-only to the browser. Write permission on them was revoked outright, and they are modified only by server functions. Uploaded receipts are held in a private storage bucket partitioned per account, with no public URLs.

Encryption

All traffic to the site and to our server functions runs over HTTPS (TLS 1.2 or higher); the site is served with HTTP Strict Transport Security. Data at rest — the database, file storage and backups — is encrypted by our infrastructure provider. Third-party credentials, including our Plaid and Stripe keys, are held in a managed secret store, injected into server functions at runtime, and are not present in our source repository.

Payments

Checkout and billing run entirely on Stripe's own hosted, PCI-DSS-certified pages. Your card number is entered on Stripe's page and never passes through our servers. Stripe's notifications to us are signature-verified in the same way Plaid's are, and a notification that fails verification is rejected.

Access to production

The providers behind the service

We share your information only with providers who process it on our instructions, under contract, and only as needed to run the service. We do not sell personal information and we do not share it for advertising. We run no advertising, analytics or tracking pixels on this site.

ProviderWhat it handles
SupabaseDatabase, authentication, file storage and server functions
VercelHosting and delivery of the website itself
PlaidConnections to your financial institutions
StripePayment processing and subscription billing
ResendTransactional and alert email

Customer data is processed in the United States. A full account of what each provider receives, and why, is in our Privacy Policy.

Keeping data only as long as it is needed

You can delete a card, a statement or your entire account yourself, at any time, without asking us — and the underlying data goes with it. We retain afterwards only what the law requires, principally billing records and proof of consent. The full schedule is in Section 10 of the Privacy Policy.

How the service is built

Every database change ships as a reviewed, version-controlled migration; nothing is hand-edited in production. Server functions are deployed from source in the repository. Customer-supplied text — merchant names on an imported transaction, for instance — is rendered as text and never as markup, so a crafted merchant description cannot execute in anyone's browser. Access to the source repository and to each provider console requires multi-factor authentication.

Certifications, stated plainly

MaxMyPoints is an independent company, and we do not hold a SOC 2 or ISO 27001 certification of our own. We would rather say that than imply otherwise. The infrastructure we build on is independently audited — Supabase, Vercel, Plaid and Stripe each maintain SOC 2 Type II attestations, and Stripe is certified to PCI DSS Level 1 — and the controls described on this page are the ones actually implemented in the product.

Reporting a vulnerability

If you believe you have found a security problem, please tell us at support@maxmypoints.app. We aim to acknowledge a report within three business days and to keep you updated until it is resolved.

Good-faith research is welcome. We will not pursue or support legal action against anyone who reports a genuine issue to us in good faith, provided you do not access, modify or retain data belonging to another person, do not degrade or disrupt the service for others, and give us a reasonable opportunity to fix the problem before disclosing it publicly. Please do not run automated scanning that generates significant load.

If a breach affects your personal information, we will notify you and the relevant regulators as the law requires. Our broader commitment on what happens when the software gets something wrong is in the Privacy Policy.